Lisp – per chi è L(λ)THW e sintassi del linguaggio

large_get_sbcl_mugIl capitolo Preface pt. iii – Who Is This Book For? è da leggere attentamente, sono pienamente d’accordo con –beh– tutto.
Io mi considero (moderatamente) un You are already a Lisper, but want to take your code to the next level ma va bene per tutte le altre categorie. Anzi: You don’t have to know anything about programming or computer science to learn Lisp with this book. Però: I’m going to assume that you know that learning any new skill is hard for everyone, and that you need to work hard in order to succeed. Insomma The Phoeron rockz!
Mi sta venendo un dubbio: se continuo a citare (copiancollando) faccio la cosa giusta? Credo di no, leggetevelo voi. Dai!
Anche se, continuando con l’introduzione, non mi trovo tanto d’accordo con il misticismo del Lisp; almeno per ora. Forse quando sarò un grok fatto e finito… (non sapete cos’è il grokking? è il padroneggiare la materia –facciamo che vi leggete la definizione da Urban Dictionary). No, direttamente da Heinlein, nel capitolo successsivo.

OK, credo sia il momento di una panoramica della sintassi. In Lisp tutto è un oggetto e gli oggetti sono rappresentati da S-Expressions.
Le S-Expressions vengono dal Lambda Calculus, ognuna delle quali può essere un Atom o una List. Le liste sono implementate come Cons-Cells e gli atomi sono tutti gli oggetti che non sono un cons (le Cons-Cells prossimamente).
Viene proposto un primo esercizio, ecco il mio compito. Notare che sono stato mooolto coscienzioso: ho riprodotto l’errore di stumpa per lambda :roll:

ll1

Questi sono diversi tipi di atomi. Come si vede gli atomi possono essere parecchie cose: numeri, simboli, caratteri letterali (?), stringhe e liste vuote. Come si vede nil, '() e () restituiscono la stessa cosa: NIL. Questo perché nil è definito come la lista vuota che viene trattato come atomo visto che non richiede consing.
Le stringhe, trattate come atomi sono in realtà sequenze di caratteri; anche le liste sono sequenze. Per capire cosa succede bisogna considerare la gerarchia degli oggetti. In Lisp ogni oggetto discende da t ad eccezione della lista vuota e la sua rappresentazione nil.
Pertanto t e ogni oggetto che da esso discende rappresenta vero (true) mentre nil falso.

Qualcuno degli esempi sopra è quotato: ha un apice davanti. Questo è una scorciatoia di quote dice a Lisp di non valutare l’oggetto quotato. Esempi di espressioni quotate:

ll2

Le liste sono racchiuse tra parentesi. Ogni oggetto annidato entro una lista è un’S-Expression. Tutto quello non quotato è automaticamente valutato. Queste liste si chiamano form, esempio:

ll3

Cose da notare:

  • una form inizia con una funzione, macro o operatore speciale, tipicamente rappresentato da un simbolo;
  • il resto della form sono i parametri passati alla funzione, macro o operatore speciale;
  • si possono avere altre form come parametri, quelle interne vengono valutate per prime e il loro risultato viene usato come parametro al livello successivo della gerarchia.

Questa sintassi è nota come notazione polacca prefissa. Nel primo esempio è chiaro quello che capita: (+ 10 20 (* 30 2)) diventa dapprima (+ 10 20 60) e poi 90. In casi semplici come questo non se ne vede (purtroppo) la grande semplificazione che porta.
Di solito l’espressione nella posizione di operatore (la prima) di una form è un simbolo che rappresenta una funzione. Può però essere anche una funzione anonima, una macro o una special form. Le special form hanno regole loro, c’è un metodo per definirle. Le marco consentono, tra le altre cose, di creare sintassi personalizzate consentendo l’estensione del linguaggio. Ci sono anche le reader macros che consentono di definire form per trattare nuovi tipi di dati.
Abbiamo già usato una macro: l’apice usato al posto di quote.

Con questa sintassi (è tutta qui) si può esprimere qualunque programma immaginabile, usando il paradigma di programmazione che volete (imperativa, procedurale, object-oriented, or funzionale).

Prossimamente… forse… :roll:

La caccia a un bug mimetizzato

bugIeri ho twittato un cinguettio liberatorio, ero riuscito a stanare un bug storico e dovevo festeggiare, o almeno farlo sapere al mondo intero ai miei follower.
Capita di rado (quasi mai) ma ho scatenato la curiosità di un paio di nerd tosti, di quelli come vorrei essere io (me). È tutto qui.

C’è bisogno, credo, di una premessa. Capita che per un’operazione ripetitiva si appronti al volo uno script di poche righe ma che poi questo cresca e si diffonda e venga modificato da diversi utenti e alla fine non ci sia più chi lo conosce nella sua interezza. O chi lo conosceva se n’è andato ormai da un anno e mezzo.
Inoltre u bug per bene si manifesta solo alcune volte –e mai con me. Anzi m’è capitato che me lo segnalassero e non sono riuscito a riprodurlo, fino a ieri.
Ancora: se non ci fosse questa crescita organica e –ahimè!– spontanea lo script sarebbe molto diverso, e anche più controllabile.

Ho provato a farne una versione mooolto semplificata, spero si riesca a capire qual è il problema.

Il compito dello script (in questa versione ultrasemplice) è di visualizzare un file di testo:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys, os

#directory corrente
wd = os.getcwd()

#file da visualizzare
fvis = wd + "/fdv.txt"

#modo normale
f = open(fvis, "r")
txt = f.read()
f.close()
print txt

norm

Banale, vero. E funziona, se il file da visualizzare esiste.

Per le ragioni che dicevo sopra lo script è diverso, demanda a un secondo script (qui sostituito da cat) la visualizzazione del file:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys, os

#directory corrente
wd = os.getcwd()

#file da visualizzare
fvis = wd + "/fdv.txt"

#modo usato nello script - buggoso
os.system('cat ' + fvis)

bug

Qui si vede subito dov’è il bug, sono poche righe, scritte bene da me, con commenti. Capita che la realtà sia spesso diversa. Per esempio che lo script che si deve lanciare debba essere scelto in funzione di qualche parametro, che non venga lanciato cat (tra l’altro io uso Linux ma queste cose debbono funzionare su Windows) ma un altro script Python o in qualche altro linguaggio. E la colpa veniva data a quest’ultimo. Anche perché io in genere non uso spazi nei nomi di files e directories.

La soluzione è immediata:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys, os

#directory corrente
wd = os.getcwd()

#file da visualizzare
fvis = wd + "/fdv.txt"

#modo usato nello script - corretto
if fvis.find(" ") >= 0:
	fvis = '"' + fvis + '"'
os.system('cat ' + fvis)

corr

E sì, basta racchiudere il pathname tra virgolette. E non c’è nemmeno bisogno dell’if, si potrebbe farlo sempre.

Banale vero?
Mi accorgo adesso che c’è un errore s/cono/sono/ ma per questo bug rimando a un prossimo post, forse.

Aggiornamento: nella versione originale il bug non c’era, grazie B.

E se… Common Lisp a modo mio – intro

There Ain’t No Such Thing As A Free Lunch… anything free costs twice as much in the long run or turns out worthless.
Robert A. Heinlein, The Moon Is A Harsh Mistress

ATZ! cominciamo bene! Sì perché con questa quotazione inizia la prefazione di Learn Lisp The Hard Way.

LL

Però, aspetta un attimino (cit.), il terzo capoverso recita:

The biggest secret to Lisp is that it is actually the simplest programming language ever created –and that, coupled with its expressiveness and elegance, is why it is favored exclusively by the best programmers in the world.

OK, ci sono. E non sono solo, chi si aggrega?

In realtà è un libro in fase di scrittura, alpha 0.2, di Colin J.E. Lupton, the Phoeron. Ma il gioco è intrigante anche per quello. Io continuo.

thephoeron

Intanto chi è the Phoeron? Beh ha un blog, con tanto di about, qui: (null ‘()) => T.

Ha anche un blog come Phoeron (che non ho capito bene cos’è ma non credo sia una cosa bella) ma abbandonato da tempo. C’è invece su Twitter (followato).

sbclbutton

Si parla di Common Lisp, SBCL in particolare. Per Ubuntu lo trovate nel Softaware Center, altrimenti sul suo sito.

sbcl

Funziona. E sì, cambiato nome alla directory, LLthw è molto più usabile. Prossimamente si parte, davvero.

Rose e Python & ____

Lo so benissimo che dovrei occuparmi di quello che ho promesso (e prossimamente ci sarà anche itfs :grin:) ma intanto una segnalazione.
slUn blog che ho scoperto da poco, di Rose Ames, di cui so molto poco; è attiva su GitHub con diverse cose, tutte toste.

Siccome io sono un evangelista Python devo riproporvi Prime Time, fresco di giornata, su come si può usare seriamente il proprio ‘puter.

Devo pubblicarlo, anche se di mio ho aggiunto solo laa soppressione dell’a-capo. Ecco:

def numbers():
    i = 1
    while True:
        i += 1
        yield i

def make_filter(prime, prev_filter):
    while True:
        candidate = next(prev_filter)
        if candidate % prime != 0:
            yield candidate

def primes():
    pipeline = numbers()
    while True:
        next_prime = next(pipeline)
        pipeline = make_filter(next_prime, pipeline)
        yield next_prime

prime_generator = primes()
for i in range(100):
    print(next(prime_generator), end=" ")

pt

Voi intanto RSSatela, subito.

Visto nel Web – 157

Se sopravvivo alle alluvioni –bombe d’acqua a non finire, per esempio adesso pioviggina– prossimamente… Io mi sto preparando ma voglio collaboratori, nèh!

@sister_magister
The news have it that @Groupon has abandoned their trademark application for #GNOME!My name is Dan and I had a bent iPhone
tranquilli, ma sì, si piega; ma tranquilli
::: The Verge

Elon Musk’s Next Mission: Internet Satellites
::: Slashdot

The Rise And Fall Of The Full Stack Developer
::: TechCrunch

now panic

Codecademy’s ReSkillUSA: Gestation Period For New Developers Is 3 Months
l’ottimismo…
::: Slashdot

Only 90s Web Developers Remember This
::: Zach Holman

Computer Scientists Ask Supreme Court To Rule APIs Can’t Be Copyrighted
::: Slashdot

women

There’s No Such Thing As a General-Purpose Processor
::: Slashdot

Italy’s Declaration of Internet Rights
::: Joho

AT&T’s latest smartwatch for kids is both easier and tougher
questo saprei usarlo anch’io
::: Engadget

tumblr_mrca7croIa1qz6f9yo1_500Plot memory usage as a function of time
::: Fabian Pedregosa

Testing in Python
::: Connor Johnson

DARPA funds $11 million tool that will make coding a lot easier
::: Engadget

Bvk8SsHCYAE5gzV

What computers taught me
::: Twitter

Java Virtual Machine: the Essential Guide
::: anturis

OpenMandriva Lx Is Switching To Clang By Default
::: [Phoronix]

BnhVU_YCMAAcEvX

Raspberry Pi’s new computer is somehow even smaller and cheaper
::: Engadget

Net Neutrality: President Obama’s Plan for a Free and Open Internet
::: the White House ::: Vox ::: Twitter ::: Luca De Biase ::: manteblog

Era il 31 maggio 2014…
::: Gli Amici di Lubit

BvmPPaKIEAAbgym

Portatile HP? Controllate il cavo
::: SIAMO GEEK

DraftSight 2015, un CAD 2D accessibile ed efficiente
::: Giovanni Longo

The news have it that @Groupon has abandoned their trademark application for #GNOME!
::: Twitter ::: Twitter ::: Ars Technica ::: Bl@ster’s

Bv_c8LBCUAAc4ll

Mantieni viva la passione per un Internet libero e aperto!
::: Twitter

Samples for using LLVM and Clang as a library
::: Eli Bendersky

Partnering with Mozilla
news da Tor
::: Tor

B0JZNUqCQAAPs4L

Germans Can Get Free Heating From the Cloud
::: Slashdot

Install Telegram for Linux as an application
::: deshack

Half a decade with Go
::: The Go Programming Language ::: Bl@ster’s

B0OO7hWIcAAN7cR

Facebook lancia la connessione gratuita in Kenya grazie a Internet.org
::: Downloadblog

Potentially catastrophic bug bites all versions of Windows. Patch now
::: Ars Technica ::: Downloadblog

Snapper is a tool for Linux filesystem snapshot management
::: Snapper

B0R_zqwIcAEzYwl

iOS 8 Jailbreak Report
::: OS news

We landed a probe on a comet and Microsoft open sourced .NET. I’d call today a success.
::: Twitter

Microsoft open-sources the .NET core
::: LWN ::: Twitter ::: Twitter ::: Marco’s Box ::: Bl@ster’s

B0vefFmIcAEAgm4

Horse walks into a bar
::: Twitter

“Hello world” is the hard part
::: The Endeavour

Cultura libera, bene comune e Ubuntu, secondo Dario Cavedon
::: Pionero

degree

How Baidu Tracked the Largest Seasonal Migration of People On Earth
::: Slashdot

A scuola con pane e software libero
::: LaBuonaScuola

AT&T To “Pause” Gigabit Internet Rollout Until Net Neutrality Is Settled
::: Slashdot

1394389_10205315158185029_5993234840464376043_n

La cronistoria di un LinuxDay, il nostro
::: Gli Amici di Lubit

Intel Claims Chip Suppliers Will Flock To Its Mobile Tech
::: Slashdot

Linux Foundation Comments On Microsoft’s Increasing Love of Linux
::: Slashdot

fake science

Microsoft Losing the School Markets To iPads and Chromebooks
::: Slashdot

10 pidstat Examples to Debug Performance Issues of Linux Process
::: The Geek Stuff

MyPaint – Disegnare al Pc
::: Freestyle Pc

3

Etat d’âme de codeur
::: CommitStrip

Strumenti Open Source per l’Architettura
::: Giovanni Longo

How to make an Operating System
::: Samy Pessé

FilesInCloud_meme_600pxl_KerryFores

FCC Chairman Tom Wheeler Tells Silicon Valley He’s Open To Obama Net Neutrality Plan
::: Quinta’s

From Novice to Master, and Back Again
LOL, per Ubuntu in italiano non c’è ma c’è su http://linux.die.net/man/1/su
::: http://blog.djmnet.org

Migrating Firefox
::: http://blog.djmnet.org

noi

How YouTube Music Key Will Redefine What We Consider Music
::: Slashdot

Gusions Blog diventa “slow”
::: Gusions

Wildcard aims to replace your phone’s web browser with mobile cards
::: Engadget

La domanda è sbagliata; se la domanda fosse giusta la risposta sarebbe 42

La domanda è sbagliata; se la domanda fosse giusta la risposta sarebbe 42

Google Quadruples A.M. Turing Award To $1M
::: Slashdot

Clojure FizzBuzz Without Conditionals
panico clojuriouso, qui :oops:
::: Carin Meier

Windows 10 su tutti i Lumia Windows Phone 8
::: tom’s

10362515_773398962698432_1765809973141927555_n

giornale
::: Twitter

GSL – GNU Scientific Library
::: GNU Operating System

Go – We’re moving to GitHub
::: Bl@ster’s

real_programmers-1

Lo dice anche il dottore: le fibre fanno bene!
::: Twitter

Python isn’t always slower than C
::: THEPCSPY

Una prima mondiale: metodi coercitivi per la diffusione del Software Libero
::: Dario Cavedon (iced)

stallman4-gnu

81% of Tor Users Can Be De-anonymized By Analysing Router Information
::: Slashdot

Video di presentazione dell’Hacklab Cosenza
se siete di quelle parti dovreste conoscerlo
::: You Tube

7 Reasons We Overhauled NY’s Website
ok, un pakko di auto-pubblicità ma anche idee
::: Medium

BwpRw34IcAEVEfH

Everybody’s all excited about #golang moving to Github
::: Twitter

What is pyjs?
::: Pyjs

scontri-manifestazioni-e-migranti1

Lispisticamente

lambda

Rispondo con un intero post alla domanda dell’amico ucasano.
Anzi no, questo paperolesso serve a fare pubblicità all’IPO lanciata ieri: E se… Lisp, le iscrizioni sono aperte, nèh!
La domanda è semplice (sovente le domande semplici richiedono una risposta sensata, e magari non tanto semplice):

come lo scriverebbe un lispista? sono curioso ;-)

Uh! beh… ecco… sì, sentite, ecco, sentiamo prima cosa ne dice il mysteryouso Patrick Otto Kruse (è tutto in tedesco, lingua che leggo solo attraverso Google traduttore *sigh*).
Dunque Patrick ha un pregevole post (in inglese!) illuminante: A Zillion Ways to Compute the Inner Product of two Vectors in COMMON LISP.
Dice bugie! In realtà propone 9 versioni differenti (ma ne sta cercando altre). Molto differenti tra loro.

Io ho provato a convertirne due in newLISP, la fortranica (5) e la metalinguistica (6), quest’ultima è quella che preferisco.
Tradurre perché il Lisp è un linguaggio di programmazione programmabile. Che è poi il motivo che affascina me e i tipi tosti (non voglio con questo mettermi nella classe, nèh!). Come effetto collaterale genera dialetti. Non esiste un Lisp, ne esistono zillioni.
Fateci caso: la mia versione fortranica (io ho iniziato a programmare in Fortran, anzi c’era solo quello) è molto diversa da quella di Patrick: non c’è l’infame goto, non serve. E ho a disposizione la funzione pop. Certo in CL (Common Lisp) si potrebbe farla, anzi è quasi semplice.

Versione fortranica:

(define (IP a b)
    (set 'c 0)
    (while (> (length a) 0)
        (set 'c (+ c (* (pop a) (pop b))))))

(set 'a '(1 2 3)
     'b '(4 5 6))
(println (IP a b))
(exit)

Versione metalinguistica:

(define (IP a b) 
    (eval (cons '+ (map (lambda (p q) (list '* p q)) a b))))

(set 'a '(1 2 3)
     'b '(4 5 6))
(println (IP a b))
(exit)

E se… Lisp

Una proposta di lavoro. Chissà se…
llthwTutto è nato ieri sera, una serie di cinguettii su Twitter, riguardo a L(λ)THW – Learn Lisp The Hard Way. Si può fare! forse.
Cioè questa è la mia proposta: se lo faccio da solo per il gusto di farlo non mi diverto. Anche perché non è una cosa né breve né banale. Richiede un certo impegno –qualche ora alla settimana– e un po’ di perseveranza, s’imparano cose nuove, all’inizio sembrano inusuali. Allora io ci sono se e solo se trovo qualche compagno d’avventura.
I quali dovranno relazionare sul loro progresso, propongo questo blog (ma potrebbe essere uno dedicato se del caso).
Chi c’è?

Senza pretese d’essere esaustivo un’intro quasi à la Twitter.
Il Lisp tratta liste, ecco un assaggino con una versione minimale ma potente ed efficientissima (newLISP):

* E se... Lisp? $ newlisp
newLISP v.10.6.0 64-bit on Linux IPv4/6 UTF-8 libffi, options: newlisp -h

> (+ 2 3)
5
> (+ 2 (* 3 4))
14
> (exit)
* E se... Lisp? $

Semplice vero? Sono in ambiente interattivo (in gergo REPL: read, eval, print, loop), una lista è chiusa tra parentesi. Il primo elemento di una stringa dice come valutare il resto della lista per cui la prima lista equivale a 2 + 3. La lista restituisce sempre l’ultimo valore calcolato, in questo caso 5. Un programma è costituito da liste annidate, come la seconda espressione che normalmente scriveremmo 2 + 3 * 4. Viene valutata dapprima la lista interna (* 3 4) che restituisce 12 per cui otteniamo (+ 2 12) e quindi 14.
Semplice vero? È tutto qui –OK, quasi.

2e

Vediamo un esempio concreto, l’equazione di secondo grado.
La formula risolutiva è:

2s

che in Lisp diventa:

#!/usr/bin/newlisp

;; soluzione equazione di secondo grado

(set 'a 2   ; coefficienti equazione 
     'b -3
     'c -2)

; calcolo il determinante
(set 'd (sqrt (sub (mul b b) (mul 4 a c))))

;;e quindi le due soluzioni
(set 's1 (div (add (mul -1 b) d) (mul 2 a))
     's2 (div (sub (mul -1 b) d) (mul 2 a)))
     
(println "le soluzioni sono: " s1 " e " s2) 
(exit)

sgOK, prima ho barato! ma nell’esempio troviamo il commento (punto-virgola), l’assegnazione (set ' o setf o setq) e per trattare i float non usiamo +, -, * e / ma add, sub, mul e div.
Questyo script è puramente didascalico, un lispista non lo scriverebbe mai in questo modo!
Inoltre usa la variabile d, forse non necessaria. Da tempo c’è la moda (OK, non è una moda) della programmazione funzionale: niente variabili (o meglio solo quando servono, e comunque non sono variabili). Come in Haskell o in Clojure. Di entrambi trovate tracce qui sul blog, nella colonna a sinistra tra le Categorie.

Lambda

Allora, se non siete spaventati dalle parentesi (ma dai, mica sono così tante poi) e siete ancora qui che ne dite? Partiamo?

Visto nel Web – 156

Quasi tutta la settimana senza collegamento (la famosa bomba d’acqua) ma ecco cosa ho visto nel Web.

B17-rA_IMAEN4Ye

Le prove ci sono: i carrier che lottano per farsi pagare di più dai grandi concorrenti degradano internet. La neutralità della rete è necessaria
::: Luca De Biase

So that’s where lambda comes from
fose non tutti sanno che…
ehi! il mio ‘puter si chiama lambda
::: Twitter

Oltre la telediagnostica, per macchinari e impianti importanti
::: ElectroYou

caffè

The Future of Payments and Open Source Support
::: Armin Ronacher

NON Recensione di Lubit 4 Eagle
::: Nerd Slider

Sentenza Cassazione Rimborso Windows (11 sett 2014)Sentenza Cassazione Rimborso Windows (11 sett 2014)
::: Scripd

phone_cone

4 cose sul giornalismo che cambia
::: la Stampa

gbach.sh
controlla la tua casella Gmail ma Matteo “Mattux” Pani
::: github

Porta la musica in Libre e Open Office con ooolilypond
::: PC Professionale

1395228_596340933748659_1617358674_n

Steve Jobs memorial dismantled in Russia because of Tim Cook’s sexuality
forse no
::: Engadget ::: Twitter

One day, I will commit to memory the syntax to create a symlink
anch’io, anch’io (ogni volta devo googlare)
::: Twitter

Transform your plain text into static websites and blogs
::: Jekyll

connessione

free OCR solutions
qualcuno sa qualcosa di Tesseract?
::: The Ubuntu Incident

Per veri nostalgici, ecco la prima pagina del #web
::: Twitter

“Enigmatic Patterns: The Life and Death of Alan #Turing”
::: Twitter

Elephant Consulting Quote

ma devono essere pagati!

The Windows registry
::: Twitter

Apple vs. Samsung
::: Twitter

Ma le spunte di whatsapp di che colore diventano
::: Twitter

10599505_959492237405121_8765984428841281167_n

Il multitasking non è un valore, al contrario produce danni
::: Twitter

What best CAD App on Linux?
::: Google+

Cloud
::: xkcd

Steve Simpson

A partial list of some companies using Clojure or ClojureScript
::: Clojure

Pitivi 0.94: il porting a Pyhton 3 è ora terminato
::: oneOpenSource

Unity 8: si prospetta una migrazione difficile?
::: oneOpenSource

1979700_448180638647905_666517832_n

Government Data Requests To Facebook Up By 24%
::: Slashdot

NSA Director Says Agency Shares Most, But Not All, Bugs It Finds
::: Slashdot

Lg e Google condividono i brevetti
::: la Stampa

10687191_814731788584280_2726072895760322340_n

Develop android weather app with Material Design
::: Surviving w/ Android

900 giochi arcade nel browser disponibili gratuitamente
::: Zeus News

Carte VISA, una falla milionaria
::: Punto Informatico

B1qytaiIUAEuHGT

Apple fans whenever the company announces something new
::: The Quick Word

Net Neutrality Alone Won’t Solve ISP Throttling Abuse, Here’s Why
::: Slashdot

Meet the 36 People Who Run Wikipedia
::: Slashdot

ormai siamo a -3

ormai siamo a -3

Gondola
The web framework for writing faster sites, faster
::: Gondola

Users Can’t Distinguish Scams From Facebook’s Features
::: Slashdot

Silk Road 2.0 Seized By FBI, Alleged Founder Arrested In San Francisco
::: Slashdot ::: Slashdot ::: ExtremeTech

quasi pronti...

quasi pronti…

20 Obstacles to Scalability
::: ACMQ

tmux in 5 Minutes
devo provarlo
::: Flying Machine Studios

EFF Hints At Lawsuit Against Verizon For Its Stealth Cookies
::: Slashdot

PR 24384203674055_n

Open sourcing Twitter emoji for everyone
::: The Official Twitter Blog ::: The Next Web

Amazon’s Luxembourg Tax Deals
::: Slashdot

Microbenchmark – Go and C
::: Pedro’s

forbiddenplanet

Big Data Knows When You Are About To Quit Your Job
::: Slashdot

British Spies Are Free To Target Lawyers and Journalists
::: Slashdot

Linux commands cheat sheet
::: I am Programmer

d3669c35-7916-4879-a970-c84f71f0d1eb

Interessanti compenetrazioni tra disegno a china e CAD
::: OpenFreeMan

App Windows su Android
::: OpenFreeMan

Archiviazione e compressione. Prima Parte
::: the secrets of ubuntu

7ty7C

La certificazione di Linux Foundation
::: Computerworld Italia

The Hacker F.A.Q. [Italiano]
::: HackerNetwork

Lubit linux 4 nome in codice Eagle
ormai dovrebbero saperlo tutti ma questa è una bella recensione di un amico nerdassay
::: evilripper

B18NhmKCYAADABH

Improved Error Handling in Rust
::: Armin Ronacher

Nikola v7.2.0 is out!
::: Nikola

Why do we need modules at all?
uhmmm… no (personalmente no)
::: Lambda the Ultimate

michman1dfddfgdfg

Steam: continuano a calare gli utenti Linux
::: lffl

Transducers
forse, chissà…
::: Cognitect Labs

Tomahawk, the World Is Your Music Collection
qualcuno lo usa?
::: Linux Journal

mistakes

Anteprima Punto Informatico – Whatsapp
::: manteblog

I repubblicani e la net neutrality
::: Luca De Biase

google-my-answer-salvatore-russo

Calcolo strutturale: nuovi fogli di calcolo excel da Tecnolab Ingegneria
::: Ingegneri

mazon’s Echo Chamber
::: Slashdot

B10m7VUIgAAt2m5

Twitter è complementare, frattanto i blog…

twitterAppunti presi in viaggio, chissà se sensati. Ma Twitter è il mio social-coso preferito e Marco Arment –beh lui è un über-nerd. Intanto sono in corso parecchi cambiamenti nei blog.
Marco dice che Twitter is not a replacement for blogs. Uh! certo ma vediamo di approfondire un po’…

Problemi. Un tweet evapora subito. Quando provi a cercarne uno vecchio ti accorgi che non è facile; anzi spesso impossibile. E poi non tutto ci può stare in 140 caratteri, d’ho!
Quindi ecco Jason Snell con Bigger than a Tweet e Gina Trapani con Short-form blogging.
Jason frequenta il mondo della Mela, non lo conosco, ma in sostanza quello che dice è che anche i post corti sono troppo lunghi per Twitter. Gina la conosco per Lifehacker. Per lei un tweet è troppo corto e un post su Medium troppo lungo. D’accordo, completamente.
Marco cita poi Manton Reece, siamo sempre lì.
Piuttosto a me viene in mente, oltre a Slashdot, Giuseppe Granieri con A place for innovators and laggards.

Insomma il problema Twitter rimane, almeno per me. Faccio liste (che in parte finiscono in visto nel Web) ma una soluzione continuo a non averla. Ci sarebbe anche da mettere in conto il mobile, sempre più usato (anche se non da me).
Piuttosto qualcosa di completamente differente (cit.): ultimamente i blog hanno semplificato molto l’interfaccia. Prendi l’Eli Bendersky’s website. Anche il dottor Blaster che però mi sembra ancora in evoluzione. E in fase di ridisegno troviamo John D. Cook.
Altri blog si sono persi o sono cambiati profondamente e mi sono perso io. E certi post sembrano proprio pettegolezzi (sì, adesso si dovrebbe dire gossip) o, peggio, pubblicità.
E per quanto riguarda Ok, panico? Chissà :mrgreen:

Installare newLISP

newlisp-rockets-pictureCome installare newLISP su Ubuntu 64 bits. Forse lo sanno tutti, o forse no –io per esempio.

newLISP rockz! è risaputo.
Ma a volte, come ho verificato in questi giorni, l’installazione normale non funziona, da errore “file o directory non esistente“. Panico?
No, niente panico, proprio come c’è scritto sulla copertina della Guida (grande libro, fondamentale, l’unico che serve davvero).

Nel caso specifico dopo aver fatto qualche tentativo per capire cos’era che mancava e aver mandato una richiesta d’aiuto a Lutz sono ricorso a G+. Trovato quasi subito. Qui: How to compile newLISP from source on 64-bit Ubuntu.

Funziona. Notare che:

  • il post è vecchio di 18 mesi;
  • il blog è operato da newLISP;
  • la versione corrente è la 10-6.0 e non quella indicata nel post.

eniac4

OK, caso risolto. Se avete un momento libero date una scorsa qui: Why newLISP on Rockets?

Ve l’ho già detto che newLISP rockz? Rocket Man too, nèh!

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 82 follower