Docker + aliases: I don’t install tools on my Mac

I really care about keeping the OS clean and untouched. Sometimes, when I have to develop using specific softwares and tools, I have to modify core and important sections of the system on my Mac or PC, and this can create some problems with package managers (like homebrew for Mac OS X; or like APT, pacman or yum for GNU/Linux)…

Docker Icon black and white

For example, few months ago I installed node.js on my Mac using the official package. When I started using homebrew, I had problems with the command line and the configuration. I even had the same problem when I was not using a virtual environment with Python 2.7 and 3.4… So I was forced to fix all the files/links manually with the super user… and I don’t like that: it is like corrupting my OS… Continue reading Docker + aliases: I don’t install tools on my Mac

Perché ho detto No all'acquisto del Nexus 5

Problema: la batteria del mio iPhone 4S si stava rovinando sempre più velocemente. Fino a 6 mesi fa ricaricavo la batteria solo ed esclusivamente quando questa si scaricava completamente… poi però ho iniziato a prendere la cattiva abitudine di ricaricarla quando ne avevo la possibilità: il risultato è che l’iPhone si scaricava in meno di 5 ore, quando prima arrivava tranquillamente fino a sera.

iPhone 3G won't charge anymore

Così avevo preso in considerazione l’acquisto di un nuovo smartphone e avevo pensato proprio al Nexus 5: il costo di questo device è nettamente inferiore rispetto a quello dell’iPhone 5s e mi offre comunque tutto quello di cui ho bisogno.

Poi mi ricordo di questa intervista a Linus Torvalds che mi aveva girato Alessio mentre eravamo in treno. L’articolo è interessante, ma la parte che mi ha colpito di più è questa qui:

“…There are a lot of people in the software industry who like to show off that they’re using the latest software or programming language. It’s a status thing, like the people who talk about obscure indie bands or foreign movies. Whether it’s Linux or Haskell or MongoDB or whatever, every workplace has at least one guy who spends most of his time talking about closures and how he is moving his blog to NodeJS so it will scale.”

Ed è assolutamente vero: con l’acquisto del Nexus 5 stavo costruendo il mio status. Perché acquistare il Nexus 5 è uno spreco di soldi in realtà, non ne ho bisogno in quanto l’iPhone 4S non è lento e non da problemi, l’ho sempre trattato benissimo e ha solamente la batteria che si è rovinata con il tempo. Nel mio caso non è obsolescenza programmata.

Nexus 5

Dentro di me stavo proiettando il film che non faceva altro che alimentare la voglia di Nexus 5: avrei utilizzato tutta la suite Google, avrei potuto installare un wallet bitcoin, avrei potuto utilizzare BitTorrent sync in background, avrei potuto usare l’NFC, oppure avrei semplicemente potuto installare una ROM differente… ma ne avevo veramente bisogno?

Con l’attività di freelance non ho bisogno di NFC, non ho bisogno di Bitcoin o di una ROM modificabile. BitTorrent Sync e la suite Google le posso già utilizzare con iOS. L’iPhone già mi da tutto quello di cui ho bisogno: Pages, Numbers e Keynote, Mail, Evernote e Skype sono il giusto necessario per lavorare e spostare tutto sulla suite Google sarebbe stato anche “doloroso“. Quindi è veramente utile l’acquisto del nexus 5? No.

Invece di fare il Nerd-Hipster vanitoso, ho cambiato radicalmente punto di vista e ho cambiato radicalmente scelta. Mi sono recato in un negozio Clinica iPhone a Roma e per 50€ ho sostituito la batteria dell’iPhone. Ora ho il problema che la batteria mi dura troppo ed arrivo a fine serata con il 30%, ma riesco a lavorare senza problemi e senza aver speso 400€ inutilmente 🙂

Google svegliati, Android è pronto!

KitKat ha decisamente fatto dei grandi progressiAndroid è pronto finalmente. Le API permettono di realizzare interfacce veramente ben fatte, studiate e finalmente usabili. Per questo i device con KitKat mi attirano particolarmente, ma usandolo sul kindle mi sono reso conto del difetto che ha Android: gli sviluppatori pigri e incapaci.

Solo tre anni fa utilizzavo un Samsung Galaxy S. Avevo deciso di sviluppare qualche applicazione per Android, ma dopo diverse bestemmie dovute all’ottimizzazione sui dispositivi, e dopo le continue frustrazioni nell’usarlo, mi passò la voglia di utilizzare quel device e di svilupparci sopra. Con KitKat sembrerebbe esserci una più concreta attenzione nei confronti dell’usabilità.

Pigrizia
Pigrizia

Su KitKat le applicazioni realizzate da Google sono veramente ben fatte: pulite, chiare, usabili, ma le altre su Google Play sono pessime. Le API per fare applicazioni decenti ci sono: Trello ha aggiornato l’applicazione di recente e come dice Alessio, “non ci sono sgorbi”. Allora dove è il problema se le cose si possono fare bene? IMHO: Sviluppatori e Google sono diventati “pigri”.

Se Android è pronto, allora perché troppe applicazioni sono brutte? Penso che la colpa sia di due fattori. Il primo: Google non ha ancora la forza che ha Apple con gli sviluppatori e i produttori di hardware. Il secondo fattore è legato a chi realizza le app che a causa del primo problema, è “pigro” e non riesce ad aggiornarle alle ultime versioni delle API, visto che la frammentazione di Android rende difficile questa operazione.

Frammentazione Android
Frammentazione Android

In poche parole Google dovrebbe svegliarsi, Android è pronto ma serve un “pugno di ferro” che spinga gli sviluppatori e i produttori hardware a non supportare più Gingebread e Froyo. KitKat, supportando device con 512 MB di ram, ha fatto un passo avanti per i produttori, ma non è abbastanza. Anche gli sviluppatori dovrebbero svegliarsi, perché se è vero che Trello si è aggiornata, perché allora la versione di Android di 1 Password fa schifo? (si ho scritto fa schifo perché fa schifo, quella sull’iPhone e sul Mac è da orgasmo 🙂 ).

Il risultato di questa scarsa attenzione nei rilasci e nelle regole, l’ho notato cercando di lavorare con Android: è completamente diverso da iOS e per questo è quasi impossibile fare un paragone. Quello che posso dire è che le uniche app usabili e “produttive” sono quelle di Google e pochissime altre, le restanti applicazioni mi fanno solo perdere tempo. A volte è difficile scrivere un documento di testo, programmare un tweet, salvare un promemoria o creare una nota: una esperienza d’uso pessima e che cambia da app ad app.

Svegliati Google, perché penso che Android sia pronto: ha un ecosistema di sviluppatori che si sta sempre più consolidando, ma mancano delle regole ancora più rigide per rendere Android un sistema operativo più usabile.

Falsificare i voti sui post di Wired

Navigando su Wired mi sono reso conto che alcuni blog post hanno un widget che permette agli utenti di esprimere il loro parere sotto forma di wired, tired oppure expired. Così ho studiato un po’ il funzionamento del codice javascript, trovando un sistema di votazione molto banale. Simile a qualche cosa che avevo visto quando avevo 16 anni.

4837773532_8d66313110_o

Falsificare i voti sui post di wired è molto più semplice di quanto mi aspettassi: in meno di 30 minuti ho scritto e caricato su GitHub un banale script per votare, cambiando continuamente IP.

Mentre ero alla ricerca di un nuovo lavoro per sopravvivere, ho scritto una libreria python per utilizzare TOR, il software-network per rendere anonima la navigazione, ed eseguire una query ad un URL specifico. Giusto per allenarmi e non morire di noia… così ne ho approfittato ed ho unito le due idee.

Il funzionamento di questo script è il seguente: prima di tutto, viene analizzata la pagina per trovare gli URL per votare, poi lo script avvia un processo TOR in modo da connettetesi al network di proxy e rendere anonime le chiamate. In fine chiama diverse volte l’URL corretto cambiando indirizzo IP e controllando che la votazione sia stata eseguita correttamente.

Mettendo da parte l’orgoglio nerd, da un punto di vista di usabilità inserire un captcha o un login con Facebook per una semplice votazione può essere doloroso, ma per le cose importanti può essere una soluzione. Alcune competizioni on-line lo fanno proprio per evitare che si vinca imbrogliando. Non so quanto sia importante per un blog, anche se è una debolezza!

tell me more how you changed the world

È semplice falsificare i voti sui post di Wired, però è triste vedere questo difettuccio. Banale, stupido ma comunque un difettuccio. Supponiamo ci sia un articolo relativo ad una Startup che vende un prodotto particolare. Supponiamo che le persone decidano di comperarlo in base ai voti wired espressi su quell’articolo. Uhm? Per fortuna non funziona così!

Fa molto lamer, ma visto che non sto lavorando, vedere il numero degli “expired” e dei “tired” aumentare di poche unità mi ha fatto riflettere. Spero solo di non aver alterato nulla di importante! Non è il mio intento.

Persino i form/moduli di Google Docs possono essere ingannati con lo stesso procedimento. Anche se è un po’ più complesso, ho scritto uno script dedicato. Sul repository GitHub aggiornerò la documentazione, sperando che almeno chi gestisce i blog di Wired si accorga del banale problema che ho trovato.

Per maggiori informazioni su come utilizzare lo script, ho creato una piccola guida qui.

Consigli per il prossimo commit

Da parecchio tempo utilizzo software di controllo di versione. Posso dire di averli provati quasi tutti: CVS, Subversion, Git, Bazaar fino ad arrivare al mio amato Mercurial. A noi sviluppatori fa poca differenza usare o l’uno o l’altro: alla fine tutti quanti sono “uguali”, la differenza sta nel come noi li utilizziamo… ovvero i messaggi che scriviamo nei commit.

GitHub

Quando lavoriamo da soli ai nostri progetti, non ci poniamo mai il problema: cosa devo scrivere nel commit? E allora ci diamo dentro con le cose più assurde giusto per riempire uno spazio 😛 Il sito web CommitLogsFromLastNight.com raccoglie tutti i commit della notte precedente: esprimiamo la nostra rabbia, le maledizioni e le imprecazioni per qualche stupido bug 🙂

Tutto cambia nel momento in cui dobbiamo lavorare con altre persone: non possiamo scrivere “merda! non funziona” ( ehm, si… una volta l’ho fatto 😛 ). Anzi dovremo dedicare più tempo perché il messaggio del Commit rappresenta l’anteprima/spiegazione della modifica che è stata apportata… e deve essere letto da altre persone.

Secondo me un commit message deve essere sia breve quanto basta: il giusto numero di caratteri che servono per descrivere quello che abbiamo fatto; sia deve essere esplicativo: per ricordarci cosa avevamo fatto quando tra 5 anni rivedremo i logs; e se ne c’è il bisogno, deve avere dei riferimenti, come il numero del bug corretto, il commit che ha creato un problema appena risolto oppure il nome della features implementata.

coding-together
“Eh? Che hai scritto lì?”

Io di solito non supero mai la lunghezza di un tweet (140 caratteri), o se lo faccio ci sono ragioni specifiche. Se ho corretto un bug causato da un commit passato, riprendo dallo storico il numero di quel commit o il suo titolo e gli aggiungoFix…“, seguito da una breve descrizione del problema risolto. Non ci dovrebbero essere scuse: anche alle 3 di notte, sotto pressione a causa del demo day imminente, bisogna scrivere dei commit sensati.

Anche se poi alla fine… ci lasciamo andare tutti quanti ad un bel “NON FUNZIONA UN C****O!” prima del push delle 5:00! Nonostante ci leggano tutti su github 😀

Intel Galileo: Arduino da 400Mhz

Qualche giorno fa ho partecipato all’evento di apertura della Maker Faire qui a Roma. Durante l’evento è stato annunciato l’incontro tra Arduino e Intel, creando un nuovo prodotto che fa sbavare non solo me, ma tutti gli appassionati di informatica, di elettronica e i “Makers”.

Photo Credit: http://www.flickr.com/photos/84454580@N00/8334340659/ I_am_Allan

Dopo l’annuncio, presso lo stand della Intel distribuivano una misteriosa scatola blu, con disegnato Galileo Galilei con degli occhiali Hipster: La scatola conteneva un Intel Galileo! [Spoiler] Quando la si apre, c’è un circuito che riproduce il jingle della Intel facendo partire l’ormone nerd a chiunque stia sollevando coperchio 🙂

Sono riuscito ad ottenerne uno! :D
Sono riuscito ad ottenerne uno! 😀

La board dell’Intel Galileo dispone di un processore Intel Quark X1000, con una velocità di 400Mhz, oltre ad avere l’interfaccia Ethernet, USB2.0 e le classiche specifiche tipiche degli Arduino. Avendo avuto un Raspberry Pi, posso dire che non è il massimo, visto anche che il prezzo previsto è di 60$ (Il Raspberry Pi parte dai 25$).

Tuttavia ci sono cose che Raspberry Pi non riesce a fare senza dover spenderci altri soldi: con il raspberry pi ho semplicemente installato una distribuzione Linux e mi sono divertito con il software, mentre con Arduino sto esplorando molto più il mondo dell’elettronica e dell’hardware. Potrei costruirci un robot, come quello che hanno fatto salire sul palco durante la presentazione! 😀

Intel Galileo: Board

Non ho ancora tante idee da realizzare ma credo che giocherò parecchio con Intel Galileo: anche se è possibile farlo, non ho alcuna intenzione di installare Linux sul dispositivo, voglio ampliare le mie conoscenze sfruttando saldatori, LED e sensori. 🙂 Per il momento ho realizzato un semplice software che fa generare due numeri, se il primo numero diviso 2 è maggiore del secondo numero, allora un led si accende e si spegne. Banale, però è stato molto divertente vederlo funzionare e mi piacerebbe migliorarlo un pochino: l’ho caricato su GitHub per divertirmi con chi vuole stravolgerlo! 😛

Si accettano consigli, suggerimenti o altre idee da realizzare 🙂

 

500$ di Soddisfazioni

Circa 6 mesi fa lavoravo ad un progetto abbastanza grosso, che tecnicamente parlando, aveva bisogno di scalare in modo del tutto automatico. Per questo motivo ho creato una libreria Python per interagire con le API di DigitalOcean, e così riuscire a soddisfare questa mia esigenza.  Nonostante la libreria fosse semplice, tramite GitHub in poco tempo ho avuto un riscontro positivo e diverse persone mi hanno aiutato a migliorare la libreria.

Quando ho letto questo tweet, ho pensato ci fosse un errore. Poi ho capito e sono scoppiato in un balletto isterico pieno di gioia 😀

Non mi aspettavo minimamente una cosa del genere: ho fatto qualche cosa di diverso, di utile e Digital Ocean, come già Telecom Italia, ha deciso di aiutarmi a continuare questo mio percorso.

Per me è molto importante avere un riscontro da parte degli altri. Quello che faccio ha più importanza di quello che dico… Anche se ci sono persone che preferiscono una frase o un titolo d’effetto, piuttosto che agire e cambiare veramente tutto.

…e poi non dover pagare i server per almeno 4-5 anni è molto utile per chi, come me, vuole contribuire e fare le cose. Sfrutterò al meglio questi soldi per i miei progetti personali, soprattutto quelli con licenze OpenSource 🙂