“Quando ti sembra di avere troppe cose da gestire nella vita, quando 24 ore in
un giorno non sono abbastanza, ricordati del vaso della Maionese e dei due
bicchieri di vino…”
Un professore stava davanti alla sua classe di filosofia e aveva davanti alcuni
oggetti.
Quando la classe incominciò a zittirsi, prese un grande barattolo di maionese
vuoto e lo iniziò a riempire di palline da golf. Chiese poi agli studenti se il
barattolo fosse pieno e costoro risposero che lo fosse.
Il professore allora prese un barattolo di ghiaia e la rovesciò nel barattolo
di maionese. Lo scosse leggermente e i sassolini si posizionarono negli spazi
vuoti, tra le palline da golf. Chiese di nuovo agli studenti se il barattolo
fosse pieno e questi concordarono che lo fosse.
Il professore prese allora una scatola di sabbia e la rovesciò, aggiungendola
nel barattolo; ovviamente la sabbia si sparse ovunque all’interno. Chiese
ancora una volta se il barattolo fosse pieno e gli studenti risposero con un
unanime “Si!”.
Il professore estrasse quindi due bicchieri di vino da sotto la cattedra e
aggiunse il loro intero contenuto nel barattolo, andando cosi effettivamente a
riempire gli spazi vuoti nella sabbia. Gli studenti risero.
“Ora”, disse il professore non appena la risata si fu placata, “voglio che
consideriate questo barattolo come la vostra Vita. Le palle da golf sono le
cose importanti: la vostra famiglia, i vostri bambini, la vostra salute, i
vostri amici e le vostre Passioni; le cose per cui, se anche tutto il resto
andasse perduto e solo queste rimanessero, la vostra vita continuerebbe ad
essere piena. I sassolini sono le altre cose che hanno importanza, come il
vostro lavoro, la casa, la macchina… La sabbia è tutto il resto: le piccole
cose.
Questo articolo è stato scritto nel 2008. È qui per ragioni storiche — i dettagli tecnici potrebbero non essere più validi.
🔍
Retrospettiva 2026
Diciotto anni dopo, ho scritto una retrospettiva su cosa abbiamo costruito, perché eravamo troppo in anticipo sui tempi, e chi lo fa oggi. L’approfondimento tecnico è nella serie del 2010.
Oggi abbiamo rilasciato il risultato di 9 mesi di duro lavoro: myousica.com, un social network per musicisti. Date un’occhiata al video promozionale e provate il sito. Divertitevi! :)
UPDATE 2009/02/23: Il sito è ora in pausa.
UPDATE 2010/10: Il codice sorgente è stato rilasciato su GitHub con il nome Mewsic.
Retrospettiva 2026
Contesto per i lettori più giovani: a metà anni 2000, i “fatti su Chuck Norris” erano un meme internet assurdamente popolare — una lista infinita di battute iperboliche sull’invincibilità dell’attore (“Chuck Norris può dividere per zero”). Naturalmente qualcuno doveva implementarli in Ruby. Il blog di intinig è sparito, ma il repo GitHub è ancora online — una classe ChuckNorris che rifiuta di essere istanziata (“No one initializes Chuck Norris”) o ereditata. Il bello: se ci provi, percorre ObjectSpace e annulla ogni istanza della tua classe. Calcio rotante all’intero runtime Ruby.
intinig ha portato il potere del calcio rotante di
Chuck in Ruby! Dategli
un’occhiata…
Retrospettiva 2026
La battuta: Apple aveva appena annunciato Snow Leopard (Mac OS X 10.6) al WWDC 2008, più di un anno prima della sua uscita effettiva nell’agosto 2009. Su un Mac, la stringa di versione di “Informazioni su questo Mac” è salvata in un file plist in chiaro (/System/Library/CoreServices/SystemVersion.plist). Modificalo, riapri “Informazioni su questo Mac”, e congratulazioni — stai usando un OS che non esiste ancora. Apple da allora ha reso questo file in sola lettura sul macOS moderno tramite System Integrity Protection.
E questa è la prova:
(Ovviamente, se conosci SystemVersion.plist, salta pure questo post ;)
Un mio amico mi ha detto che sui blog
tecnici gira un nuovo meme: mostrare i comandi più usati, partendo dalla
history della shell:
history|\
awk '{a[$2]++}END{for(i in a){print a[i] " " i}}'|\
sort -rn | head -15
Io ho 20 volte la dimensione di default della bash history (10k righe), quindi
i risultati saranno interessanti. Uso anche la funzione di timestamp della
history, quindi ho aggiunto un piccolo sed al codice per eliminare i timestamp.
Vediamo un po':
vjt@voyager:~/code*$*history| sed 's#^[ 0-9\[\/\:]*\]\([^ ]*\).*#\1#'| awk '{a[$1]++}END{for(i in a){print a[i] " " i}}'| sort -rn | head -15
928 l
577 ssh
389 ping
381cd300 dig
259 telnet
153 sudo
126 ifconfig
125 whois
113 ps
96 svn
91 cat
73fg68 vi
61 ..
Già, faccio un SACCO di ls, l in realtà è ls -alFGs (sono su Darwin). Questa
lista rivela le mie abitudini recenti, perché sto scrivendo meno codice e
gestendo di più (niente gcc, niente irb, un sacco di dig & whois). svn è
ancora lì, ovviamente ;). ssh significa che questi risultati andrebbero
aggregati con le history delle altre macchine su cui mi loggo… ma quello è
argomento per un altro post ;).
Dato che le mie abitudini recenti sono più di coding che di scrittura di documentazione, ho rieseguito l’analisi della history… e questi sono i nuovi risultati:
1796 l
981 svn
705 ssh
693 cd
666 ping
402 vi
356 ifconfig
352 telnet
321 dig
315 sudo
283 fg
240 grep
188 ..
183 cat
157 ps
Questo articolo è stato scritto nel 2008. È qui per ragioni storiche — i dettagli tecnici potrebbero non essere più validi.
🔍
Retrospettiva 2026
LightWindow è morto da un pezzo – era una libreria modale dell’era Prototype.js, scomparsa intorno al 2010. Se oggi ti servono le modali, l’elemento HTML <dialog> fa tutto nativamente.
Ecco, questo è il risultato di 2 giorni di testate contro il muro con lightwindow:
Index: public/javascripts/lightwindow.js, line 444
_removeLink:function(removed){// remove it from the links array
//
this.links=this.links.reject(function(link){if(link==removed.href)returntrue;});// remove it from the gallery links array
//
if(gallery=this._getGalleryInfo(removed.rel)){klass=gallery[0];name=gallery[1];if(this.galleries[klass]&&this.galleries[klass][name]){this.galleries[klass][name]=this.galleries[klass][name].reject(function(link){if(link==removed.href)returntrue;});}}},
Chiama questa funzione dal tuo template .rjs, qualcosa tipo:
Beh, a quanto pare non ho motivo di essere paranoico per la mia età: so ancora
andare in inline come facevo (ogni giorno) quando ero un po’ più giovane :).
Il primo maggio, festa dei lavoratori, Sam mi ha letteralmente trascinato fuori
di casa, lontano dal computer, e siamo andati a pattinare. È stata una
giornata fantastica, abbiamo pattinato un sacco e scattato delle belle
foto.
Ma quelle davvero belle sono state scattate quando ndstr
ci ha beccati. È di gran lunga il miglior fotografo che tu possa incontrare, e
ovviamente il mio preferito (dai un’occhiata al suo sito!).
Anche lui è stato un pattinatore, quindi sa benissimo come e quando scattare
per tirare fuori il massimo dai tuoi trick :). Eccone due, che ritraggono me e
Sam mentre diamo il meglio!
È stato divertente. Davvero divertente. Grazie Sam per avermi portato fuori di casa :D.
Questo articolo è stato scritto nel 2008. È qui per ragioni storiche — i dettagli tecnici potrebbero non essere più validi.
🔍
Retrospettiva 2026
Il recovery in single-user mode (Cmd-S, fsck, mount in scrittura) descritto qui non funziona più sui Mac moderni. Apple ha rimosso la modalità single-user in macOS Catalina (2019), il volume di sistema è diventato read-only con il Signed System Volume in Big Sur (2020), e i Mac Apple Silicon usano un’architettura di recovery completamente diversa.
Beh, sono davvero contento di OSX 10.5.2. Anche se non sono uno di quelli che
ha insultato Apple per la barra dei menu traslucida che a tutti fa schifo…
anzi, a me piace. Non mi interessa il tool di TM nella barra dei menu, perché
non ho (ancora) comprato la fighissima Time Capsule, mi piace lo spinner nel
menu Airport e, soprattutto, apprezzo molto gli aggiornamenti al
BluetoothSCOAudioDriver.kext che pilota il mio auricolare bluetooth.
Spotlight sembra anche più veloce ad ogni aggiornamento, e sono un utente
pesante di Spotlight, quindi questo mi rende davvero felice. Grazie ingegneri
Apple!
Ma torniamo al tema: perché odissea? Perché seguendo i miei consigli sulla
batteria,
sono riuscito a far SPEGNERE il mio MacBook2,1 mentre era al 74% della fase
“Scrittura file” del combo update… risultato: un sistema completamente
distrutto, come ogni geek potrebbe immaginare :). Apple aveva aggiornato
alcune librerie, e al riavvio semplicemente niente funzionava, e la console
Darwin era piena di tonnellate di messaggi di errore.
Il tipico fanb^Wutente Apple avrebbe semplicemente archiviato e reinstallato
il sistema, ma ehi, io sono un geek orgoglioso! So per esperienza che le
situazioni di disaster recovery sono le migliori per imparare qualcosa su un
sistema operativo, perché devi aiutare il sistema ad avviarsi, tirando su i
servizi a mano, e trovare un modo per riapplicare il combo update senza usare
la comoda interfaccia Aqua.