Quando installi la beta per sviluppatori di Windows 7, dopo il solito ciclo di 3 riavvii, vieni accolto dalla seguente immagine:

The Betta Siamese Fighting Fish

È il pesce combattente del Siam, un bellissimo pesce tropicale, ma con una caratteristica interessante: è estremamente aggressivo. La credenza popolare vuole che due maschi si combattano anche in natura, ma non è proprio vero. Questa credenza deriva dal comportamento del pesce in acquario, dove il vincitore attacca continuamente il perdente, causandone alla fine la morte.

Ora, pensate all’ecosistema software come a un acquario. E pensate a Microsoft dentro questo acquario. L’ultima release del sistema operativo Microsoft ha un pesce aggressivo come skin predefinita, ed è solo in questo acquario. E non c’è posto per nessun altro: combatteranno qualsiasi avversario, anche se della stessa specie.

Quel che è incerto è… ci riusciranno, o no? :). Staremo a vedere!

📜

Questo articolo è stato scritto nel 2008. È qui per ragioni storiche — i dettagli tecnici potrebbero non essere più validi.

🔍
Retrospettiva 2026
Apple ha rimosso AU Lab dagli strumenti per sviluppatori Xcode intorno al 2019, e Soundflower è stato abbandonato da Cycling ‘74 (acquisita da Ableton). Il sostituto moderno è BlackHole – un driver audio virtuale che fa lo stesso lavoro.
au lab pwnz

La sessione a destra mostra un documento aperto su un dispositivo audio aggregato tra soundflower (2 canali) e una Creative SBLive con 6 canali: il flower riceve l’input audio da iTunes e lo indirizza ai canali della scheda, usando tutti e 6 gli speaker.

Sono stati aggiunti degli effetti per migliorare l’esperienza audio (dettagli qui: http://www.rottenbrains.com/?p=232). La sessione a destra usa anche AUNetSend per streamare l’audio verso la sessione a sinistra, connessa agli speaker integrati del MacBook.

Risultato: audio stereo riprodotto su otto canali. Le Audio Units sono uno strumento davvero potente, ben scritto e ben funzionante.

[grazie a nextie per avermi detto di AUNetSend e AUNetReceive]

AGGIORNAMENTO 19-12-2008

au lab pwnz again

Miglioramento: non c’è bisogno di usare NetSend e NetReceive per riprodurre su 8 speaker: un dispositivo aggregato composto da Soundflower 2ch, la SBLive USB a 6 canali e l’uscita Built-in è sufficiente!

La fine dell'anonimato online

📜

Questo articolo è stato scritto nel 2008. È qui per ragioni storiche — i dettagli tecnici potrebbero non essere più validi.

🔍
Retrospettiva 2026
Si è rivelato terribilmente accurato. La “personalità leggermente alterata” ora si chiama “personal brand” ed è obbligatoria per la sopravvivenza professionale. Cambridge Analytica ha dimostrato che i dati degli utenti possono influenzare le elezioni. Instagram e TikTok hanno amplificato di ordini di grandezza l’effetto “essere osservati cambia il comportamento”. ReadWriteWeb stesso ha chiuso nel 2012 — il link ora punta alla Wayback Machine.

Esattamente le parole che mi girano per la testa in questi giorni:

http://www.readwriteweb.com/archives/the_end_of_online_anonymity.php

Quando raggiungeremo il punto in cui l’anonimato online sarà finito, invece di poter essere chi siamo davvero, il fatto di essere diventati così consapevoli di essere sempre registrati, fotografati, tracciati e seguiti, avrà in realtà creato una personalità leggermente alterata. Come i concorrenti dei reality TV, l’atto di essere osservati cambierà il nostro comportamento. L’immagine del nostro brand personale diventerà la nostra identità pubblica e quindi la nostra identità.

Direi che queste parole descrivono perfettamente l’“effetto Facebook”.

Voi che ne pensate?

📜

Questo articolo è stato scritto nel 2008. È qui per ragioni storiche — i dettagli tecnici potrebbero non essere più validi.

🔍
Retrospettiva 2026
Apple ha sostituito l’implementazione MIT Kerberos con Heimdal in OS X 10.7 Lion (2011), rimuovendo completamente CCacheServer. Sui macOS moderni, la System Integrity Protection (SIP, da 10.11 El Capitan) impedisce comunque di modificare qualsiasi cosa sotto /System/Library/.

Se ti stai chiedendo perché il demone CCacheServer, che tiene in memoria i ticket Kerberos ottenuti tramite kinit(1), NON parte… è a causa di un bug strano riguardante il LimitLoadToSessionType specificato nel .plist dell’agent, che si trova in /System/Library/LaunchAgents/edu.mit.kerberos.CCacheServer.plist sui sistemi OSX 10.5.

Devi semplicemente commentare queste due righe:

<key>LimitLoadToSessionType</key>
<string>Background</string>

E poi o fai

launchctl load /System/Library/LaunchAgents/edu.mit.kerberos.CCacheServer.plist

oppure riavvii il sistema ;).

CCacheServer verrà poi istanziato quando fai un kinit:

$ kinit
Please enter the password for vjt@DOMAIN.LOCAL:

$ klist
Kerberos 5 ticket cache: 'API:Initial default ccache'
Default principal: vjt@DOMAIN.LOCAL

Valid Starting     Expires            Service Principal
11/12/08 20:59:35  11/13/08 06:59:14  krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
    renew until 11/19/08 20:59:35

Il bug è strano perché la chiave LimitLoadToSessionType dovrebbe in realtà istruire launchd ad avviare automaticamente il demone e farlo girare una volta per ogni utente loggato, quando kinit ne richiede i servizi. Ma se la chiave è impostata nel .plist, un launchctl load su di esso fallisce con “nothing found to load”. Assurdo!

📜

Questo articolo è stato scritto nel 2008. È qui per ragioni storiche — i dettagli tecnici potrebbero non essere più validi.

🔍
Retrospettiva 2026
Lighthouse (il project tracker di ENTP) ha chiuso nel 2012, e la sua integrazione con GitHub non esiste più. Se cerchi il collegamento automatico tra commit e issue, tutte le piattaforme moderne (GitHub Issues, GitLab, Jira, Linear) lo fanno nativamente.

Se usi l’integrazione con Lighthouse fornita da GitHub, dalle pagine “Admin” del tuo repository git, potresti esserti imbattuto in un difetto: ogni changeset su Lighthouse appare come se fosse stato fatto dall’utente Lighthouse che ha configurato l’integrazione su GitHub.

Questo succede perché Lighthouse usa il token API per collegare gli autori dei changeset agli utenti LH, e non va bene quando non sei l’unico a fare commit :-).

Una soluzione semplice è usare un hook post-commit, come descritto qui, ma non è soddisfacente perché significa che ogni volta che esegui git commit dalla tua console, il messaggio del commit diventa pubblico, e se fai --amend o reset --soft dell’index dovrai andare su Lighthouse a cancellare il changeset.

Una soluzione molto più furba è pushare tutte le revisioni modificate quando le si pusha su GitHub: ho modificato l’hook post-commit originale e l’ho installato accanto al comando git in $(dirname which git)/git-lh.

Questo mi dà un nuovo comando git lh che recupera la revisione HEAD corrente da GitHub usando refs/heads/master e fa POST di ogni changeset tra quella revisione e il tip corrente nel working tree verso Lighthouse.

Quindi, se esegui git lh prima di git push, ogni modifica che stai pushando su GitHub andrà anche su Lighthouse.

AGGIORNAMENTO: Un semplice script bash tipo:

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 ;)


In questa pagina