Tutti i progetti
open source / 2026Dev Tools · Giochi

lombrico

Un verme che vive nel tuo terminale. Si mangia i tuoi log, balla la tua musica e rutta.

lombrico

La storia

Volevo vedere cosa riuscivo a fare in C, e volevo un verme, quindi ho fatto un verme figo. È un tubo 3D ombreggiato disegnato in ASCII, e non si limita a girare a caso: reagisce a quello che fai. Gli passi i log e se li mangia riga per riga, prima gli errori, ovviamente. Metti su un po' di musica e balla. Lo lasci stare abbastanza a lungo e si arrotola e si addormenta.

frasi che può dire
161
situazioni su cui ha un'opinione
46
ridisegnando solo quello che cambia
30 fps
sistemi operativi, un file a testa dove sono diversi
3
Nutrito con qualche migliaio di test finti che falliscono. Gli errori gli sono piaciuti.

Un verme fatto di caratteri

Il corpo è una catena di segmenti. Sterza solo la testa, ogni altro segmento segue quello davanti, e basta questo per il movimento da serpente.

Il tubo è illuminato dall'alto a sinistra, e ogni cella sceglie un carattere tra " .:-=+*#%@" in base a quanto è illuminata, lo stesso trucco di donut.c. Quando mangia, ogni boccone scende lungo il corpo come un piccolo rigonfiamento.

  1. 1

    Mangiare

    Se c'è qualcosa da mangiare, vince su tutto.

  2. 2

    Ballare

    Se sente musica. Anche a bocca piena butta fuori una ♪ a ogni battito.

  3. 3

    Dormire

    Se non succede niente per 30 secondi. 15 di notte, ha un orario per andare a letto.

  4. 4

    Girare

    Sennò gira, e quando si annoia si morde la coda, fa le zoomies o ti fissa.

Si mangia i tuoi log

Quello che gli passi sale dal basso come un log normale, e il verme va verso i caratteri più vicini. Però gli errori gli piacciono un sacco e fa di tutto per raggiungerne uno: sono piccanti, diventa dorato dentro e resta caldo per un po'.

Se lo stdout non è il terminale, ogni byte passa così com'è, quindi puoi metterlo in mezzo a una pipeline e non si rompe niente. Se gli dai in pasto qualcosa di enorme disegna al massimo 15 righe nuove al secondo, lascia passare il resto e ti dice di rallentare. Quando l'input finisce ti dà il verdetto: tutto pulito, o quanti errori devi andare a sistemare.

Balla, ma solo con la musica

Ascolta il microfono e ci fa sopra una FFT. Anche parlare e scrivere fanno rumore, quindi balla solo quando i battiti vanno a tempo, perché la musica ha uno spazio regolare tra un battito e l'altro e il resto no. Da quello spazio ricava i bpm e balla a quella velocità, e ha le sue opinioni: sotto i 95 è un lento, sopra i 140 è troppo veloce per un verme.

Ascolta anche un po' sopra i bassi, perché le casse dei portatili i bassi praticamente non li hanno. Un rumore forte all'improvviso senza musica, tipo un battito di mani, lo fa saltare.

Sente la macchina

La CPU lo scalda: da rosso diventa arancione, va più veloce ed è più nervoso, e sopra l'85% si lamenta. La memoria lo allunga. Il traffico di rete gli manda delle onde lungo il corpo, verso dentro per i download e verso fuori per gli upload. Se la CPU passa di colpo da ferma a piena, chiede chi sta compilando.

Parla. Tanto

Parla in una nuvoletta sopra la testa, una lettera alla volta. Ogni situazione ha qualche frase diversa e non dice mai la stessa due volte di fila. Rispondere a te viene sempre prima, e le chiacchiere a caso aspettano qualche secondo di silenzio, così non ti fa una testa così.

Puoi fargli boop sulla testa, accarezzarlo finché non ne ha abbastanza, o cliccare dove vuoi per far cadere una foglia e guardarlo andare a mangiarsela.

C puro, zero dipendenze

C17 e solo quello che il sistema operativo ha già. Tutto quello che dipende dal sistema sta nel suo file: il terminale, il microfono (CoreAudio su macOS, ALSA su Linux, waveIn su Windows) e le statistiche di CPU, memoria e rete. Al resto del codice non interessa dove gira.

Ridisegna solo le celle cambiate, con una sola write per frame, e quando esci rimette il terminale esattamente com'era, anche con ctrl-c e ctrl-z. 53 test, e una build di debug con i sanitizer accesi.

Galleria

lombrico · 1
lombrico · 2
lombrico · 3
lombrico · 4

Vuoi qualcosa del genere?

Posso costruire la stessa cosa per il tuo prodotto.

Raccontami cosa hai in mente. Ricevi una risposta in giornata, con uno scope e dei tempi realistici, non una proposta di vendita.