Il barattolo di maionese e due bicchieri di vino

Il barattolo di maionese e due bicchieri di vino

“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.

myousica.com è nato oggi

📜

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.

myousica — play and share

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.


Myousica nel tempo: Annuncio lancio (2008)Open-source dell’app Rails (2010) • Editor multitraccia (2010) • Pipeline audio (2010) • Diciotto anni dopo (2026)

Il miglior post che abbia mai scritto

javascript, klingon, javascript, javascript, IE, IE, IE, sucks, optimize, optimize,
user experience, web2.0, harnessing collective intelligence, love, hate, sex, ruby,
rails, rails, rails, admin, REST, javascript, javascript, IE IE IE SUCKS, premature
optimization, assets, google API, love, love, hate, hate, air, trips, hide, toggle,
show, ryan, twenty-three times the pain, javascript, IE, ruby, rails, CSS, spacing,
position:absolute, love, love, love, love, too much, too much, too much.

number 42.

Chuck Norris in Ruby

🔍
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…

https://github.com/intinig/chuck_norris/tree/master/chuck_norris.rb

E’ un proof-of-concept, ovviamente :).

Ho già Mac OS Snow Leopard 10.6

🔍
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:

Snow Leopard

(Ovviamente, se conosci SystemVersion.plist, salta pure questo post ;)

Cosa dice la tua .bash_history?

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
381 cd
300 dig
259 telnet
153 sudo
126 ifconfig
125 whois
113 ps
96 svn
91 cat
73 fg
68 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 ;).

Quali sono i tuoi risultati?

Postali qui! :D

AGGIORNAMENTO 2008-06-03

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

AGGIORNAMENTO 2009-02-20

5427 l
4379 git
3128 svn
2812 vi
2105 cd
1408 ping
1392 fg
1328 ssh
935 ifconfig
893 grep
890 sudo
733 rake
653 cat
554 ..
535 ruby

AGGIORNAMENTO 2009-05-24

7374 l
5041 git
3265 vi
3131 svn
2753 cd
1881 ssh
1763 ping
1618 fg
1101 sudo
1100 ifconfig
977 grep
867 cat
767 rake
721 telnet
671 ..

AGGIORNAMENTO 2010-06-01

20517 git
7794 l
1906 cd
1631 rg
1518 vi
1108 rake
1041 cat
1010 ruby
790 sudo
754 fg
676 make
670 script/console
626 rm
496 ping
474 ..

AGGIORNAMENTO 2012-07-23

3367 l
2685 ssh
1289 cd
1013 curl
976 git
857 sudo
815 ping
526 telnet
521 ps
497 cat
472 port
422 fg
400 vi
274 rm
259 dig
📜

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)
        return true;
    });
    // 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)
              return true;
          });
      }
    }
  },

Chiama questa funzione dal tuo template .rjs, qualcosa tipo:

page << "myLightWindow._removeLink($('element').down('a.lightwindow'));"

Più dettagli a seguire, quando questo lavoro sarà completo ;).

Sappiamo ancora farlo

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!

Foto di skating

È stato divertente. Davvero divertente. Grazie Sam per avermi portato fuori di casa :D.

Oh, e non dimenticare di visitare il mio deviantArt, e guarda questa qui :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.


In questa pagina