Chi sei e di che cosa ti occupi?
Mi chiamo Salvatore Sanfilippo, sono siciliano, ho 36 anni, due figli e una moglie. Scrivo software, prevalentemente open source, da circa 20 anni. Nel 1998 ho inventato un attacco al protocollo di internet TCP/IP chiamato Idle Scan e il tool di sicurezza informatica hping. Nel 2005 ho fondato una startup assieme a Fabio Pitrola in seno alla quale abbiamo sviluppato i primi siti web “social” in Italia. Nel 2008 ho fondato una startup focalizzata sullo sviluppo di applicazioni mobile che ha realizzato diversi progetti nel campo della editoria elettronica, poi assorbita dalla più grande azienda di editoria elettronica in Italia. Da cinque anni sviluppo un database open source chiamato Redis, che è utilizzato da Twitter, Pinterest, Youporn, e molti altri siti web ad alto traffico per servire più velocemente i loro contenuti agli utenti. Oggi lavoro per Pivotal, società americana che sta sponsorizzando il progetto Redis, che rimane comunque open source in tutte le sue parti. Redis è attualmente uno dei software più popolari nello stack tecnologico delle startup grandi e piccole sia in occidente che in Cina. Attualmente i miei sforzi sono focalizzati nella creazione di un sistema chiamato Redis Cluster che altro non è che una implementazione di Redis che opera come un “sistema distribuito”. In parole polvere il database viene eseguito su tanti computer simultaneamente, dando però alla applicazione l’impressione di essere un oggetto unico. La prima versione “beta” di Redis Cluster è stata rilasciata qualche giorno addietro.
Quali strumenti usi per il tuo lavoro?
Fondamentalmente uso due computer: un Macbook Air 11” con cui scrivo la maggior parte del codice, e un computer Linux più grande che uso sia per sviluppo che in fase di test. Utilizzo inoltre altri computer Linux e Mac messi in rete per simulare delle reti più complesse durante i test di affidabilità di Redis. Non utilizzo alcun tablet perché sono abituato a scrivere molto velocemente con la tastiera: la lentezza a cui mi forza la tastiera touch del tablet mi infastidisce. Per questo il mio computer di riferimento è il Macbook Air 11”. Normalmente lo collego ad uno schermo più grande, ma mi consente grande facilità di spostamento quando sono in giro. Il mio telefono è un Samsung S4 con Android 4.3: dopo una sfilza di iPhone, finalmente diversi mesi fa sono migrato nuovamente ad Android (dopo averci provato più volte in passato) nel tentativo di liberarmi da un ecosistema del software creato da Apple che è troppo chiuso a mio parere. Android finalmente è alla pari con iPhone, e permette di fare con device più economici tutto quello che fa un iPhone (a mio avviso meglio in molti campi) con una libertà maggiore per l’utente finale. Con Android l’utente, se lo vuole, può installare software di terze parti che risiedono all’esterno dello store, e modificare il software del proprio telefono in relazione alle proprie esigenze. Tuttavia anche Android non è un ecosistema del tutto aperto.
Quale software?
La mia vita lavorativa si svolge in gran parte alla luce fioca e lampeggiante del cursore della linea di comando. Il mio editor preferito è il vi che è stato scritto nel 1976, un anno prima che io nascessi, da Bill Joy. Gran parte dei miei software sono scritti utilizzando i linguaggi di programmazione C, Ruby, e Tcl. Utilizzo inoltre dei software particolari, come Valgrind, che permettono di trovare errori software complessi in tempi ragionevoli.
Come miglioreresti gli strumenti che usi?
Mi piacerebbe che esistesse un Macbook Air con lo schermo retina per avere una definizione maggiore nei caratteri e vorrei vedere una nuova tecnologia nel campo delle batterie che permetta di avere una durata della carica molto più lunga. Dal punto di vista dei server il mio sogno è costituito da macchine affidabili, piccole, che consumano pochissima energia elettrica, connesse da reti velocissime, ma chi non vorrebbe questo? Vorrei una connessione internet più veloce di quella a 10 Mbit che possiedo oggi, e questa richiesta mi pare esuli dalla fantascienza… e faccia parte più che altro della limitatezza delle infrastrutture in Italia. Tuttavia dal mio punto di vista i computer sono fatti molto di più dal software che dall’hardware, per cui i miei più grandi sogni di miglioramento riguardano interfacce vocali nelle abitazioni, algoritmi che si abituano ai tuoi pattern di utilizzo del software e ti propongono la cosa giusta prima che tu la chieda, e strumenti per i programmatori che consentano di avere un approccio più efficace durante lo sviluppo del software senza però essere quei mostri lenti e pasticciati che sono la maggior parte delle “IDE” (Integrated Development Environment) ad oggi disponibili, che io appunto non uso. Dal punto di vista del mobile sarebbe bello vedere una cosa come Siri ma che funzioni davvero invece di essere solamente un layer divertente ma di dubbia utilità pratica. Insomma voglio i computer di Star Trek.