Sviluppo · Da autodidatta

Sto imparando a costruire, partendo dal fondo.

Ho iniziato dal web, ma la strada che mi interessa scende: verso il linguaggio C, verso il sistema operativo, verso l'hardware. Qui trovi i lavori a cui sto lavorando davvero, con i loro tempi veri.

This site is in Italian — but if you'd rather write to me in English, please do.

In costruzione

Il lavoro in corso

Non ho un catalogo di progetti conclusi. Ho tre cantieri aperti che vanno tutti nella stessa direzione, e che porto avanti nei ritagli di tempo tra il lavoro e la famiglia. È il percorso che conta, più dell'arrivo.

StatoIn sviluppo LinguaggioC (C11), GCC A che punto sonoMotore completo: parser, scene, oggetti, inventario, flag di stato, uscite condizionali e dialoghi funzionanti. Sette stanze giocabili, tre finali progettati. 14 test automatici verdi.

Vault 1: First Contact

Avventura testuale a parser

Un'avventura testuale in C, nello spirito dei libri-game e dei giochi da terminale MS-DOS con cui ho conosciuto i computer. Si gioca scrivendo: guarda, prendi, usa, parla. Il cuore non è il combattimento ma il mistero — un rifugio sotterraneo, una versione ufficiale della realtà, e qualcuno che bussa a una porta che non doveva aprirsi.

Tutto il contenuto vive in file di testo separati dal codice, così le stanze e i dialoghi si aggiungono senza ricompilare. L'input e l'output del terminale sono isolati in un modulo a parte, per tenere il nucleo del gioco portabile: l'obiettivo a lungo termine è arrivare a una versione grafica, e più avanti a una build homebrew per console.

Ci lavoro un'ora o due a settimana, senza scadenze. L'ambientazione verrà rivista da cima a fondo prima della pubblicazione.

StatoIn sviluppo LinguaggioC17 freestanding, Assembly x86 (NASM), target i686-elf A che punto sonoIl kernel si avvia in QEMU: GDT minima, stack, diagnostica su terminale VGA e su porta seriale. Tabella delle interruzioni e primo gestore di eccezione scritti, ancora da collegare all'inizializzazione.

Construction-OS

Sistema operativo x86 a 32 bit, scritto da zero

Costruirne uno da zero è il modo più diretto che ho trovato per capire cosa succede sotto il codice che scrivo di solito: come si comunica con l'hardware, come si gestisce la memoria, come si disegna un'interfaccia quando non c'è nessuna libreria a farlo per te. Non punto a sostituire niente. Punto ad arrivare in fondo un sottosistema alla volta, scrivendo di ogni pezzo la versione più piccola che funziona prima di estenderla.

Oggi GRUB carica un kernel Multiboot che installa una GDT minima, ricarica i segmenti, prepara lo stack e passa il controllo al codice C. Da lì il kernel scrive la diagnostica sia sullo schermo sia sulla porta seriale, così posso leggere cosa succede anche quando il video non è d'aiuto. Il passo su cui sto lavorando adesso è la gestione delle eccezioni della CPU.

Il Makefile compila l'ELF con i warning al massimo, verifica che l'header Multiboot sia valido e genera una ISO avviabile in emulatore. Dopo le eccezioni vengono timer e tastiera, poi la memoria; più avanti una shell, un filesystem minimo e — se il percorso regge — un'interfaccia a finestre in stile fine anni Novanta. La roadmap indica la direzione, non una scadenza.

L'ispirazione diretta è III-Millennium OS di Alberto Sanfelice, un sistema x86 a 32 bit scritto interamente in C e Assembly, senza dipendenze esterne. Studiarlo è impegnativo — è il lavoro di chi sa già dove sta andando — ma è esattamente il tipo di riferimento che serve per capire come si risolvono certi problemi.

StatoIn pausa AmbitoElettronica, meccanica, software applicato A che punto sonoAccantonato per mancanza di tempo. Tornerà.

Robotica

Un robot assistente, un giorno

L'ultimo gradino della stessa discesa: portare avanti in parallelo le basi di elettronica e meccanica insieme allo sviluppo software, fino a costruire un prototipo di robot assistente. È un obiettivo lontano e ne sono consapevole.

Non conta l'effettiva realizzazione concreta, ma il percorso. L'ho messo in pausa perché il tempo è quello che è, e preferisco portare avanti bene una cosa per volta.

Realizzati

Cose finite e consegnate

Tre lavori conclusi: uno di squadra, uno nato sul posto di lavoro, uno per un cliente vero. Diversi per contesto, ma tutti mi hanno insegnato più della somma delle loro righe di codice.

StatoConsegnato · 2025 StackNext.js, TypeScript, TailwindCSS, API OpenAI Il mio ruoloPrompt engineering degli agenti, integrazione API, contributo alle macchine a stati, presentazione dei progressi

Recipe Chatbot

Progetto di squadra · Summer camp

Faccio parte da anni della community TomorrowDevs, ed è lì che è nata l'occasione: un summer camp a squadre, con più team in gara e una lista di requisiti minimi da rispettare. Questo progetto è il risultato.

Un chatbot di cucina che non ti dà mai la ricetta. Un cameriere virtuale accoglie l'utente, propone tre chef a caso, e dopo un'attesa volutamente esasperante parte una chat in cui il cuoco risponde con ingredienti sbagliati e divagazioni assurde. È una satira dell'attesa telefonica travestita da app di ricette.

Sotto la comicità c'è il problema di design interessante: far funzionare un'esperienza costruita per frustrare, senza che l'utente se ne vada. L'architettura usa tre agenti distinti — il cameriere, il cuoco, e un terzo agente tecnico che restituisce solo JSON per estrarre dati strutturati dalle risposte in linguaggio naturale — governati da macchine a stati esplicite.

Eravamo in sei sulla carta, di fatto abbiamo lavorato in tre o quattro, e i ruoli iniziali si sono ridisegnati strada facendo. La parte che non si vede nei commit è quella che mi ha insegnato di più: le videocall di allineamento tra noi e il confronto con gli altri team del contest.

StatoDal 2024, in uso quotidiano StrumentiGoogle Sheets, Apps Script, IMPORTRANGE Il mio ruoloIdea, progettazione, sviluppo e manutenzione

Cruscotto partenze

Automazione interna · Logistica

Nato da una domanda semplice che mi è stata fatta al lavoro: si possono unire dati che stanno su file diversi? La risposta ovvia sarebbe stata farlo a mano. Invece mi sono accorto che le estrazioni dal gestionale di magazzino esistevano già, generate per altri scopi, e che si potevano riusare come sorgente.

Il risultato è un foglio che incrocia il planning delle partenze con la collocazione delle ribalte, la quantità effettivamente preparata e lo spazio disponibile sul mezzo. Non si limita a mostrare i dati: segnala le eccedenze prima che diventino un problema in banchina.

La parte interessante è stata dividere i compiti. Apps Script genera il foglio del giorno e ci scrive dentro le formule; da quel momento in poi il foglio vive da solo e ricalcola in autonomia. Prima andava aggiornato a mano ogni settimana, con copia e incolla tra file diversi.

È in uso tutti i giorni, ha bisogno di poca manutenzione — e sono l'unico che sa metterci le mani. Questo è il motivo per cui, da allora, documento tutto quello che scrivo.

StatoOnline dal 2019 StackHTML, CSS, JavaScript, poi PHP Il mio ruoloProgettazione, sviluppo, manutenzione

sp81coach.com

Sito vetrina per un coach professionista

Il mio primo lavoro commissionato. Paolo, un ex collega diventato coach professionista, aveva bisogno di una vetrina che raccontasse il suo percorso di formazione e presentasse la sua proposta a possibili clienti — nello sport, nel lavoro, nella crescita personale.

Nato in HTML, CSS e JavaScript, è poi passato a PHP: non l'ho consegnato e dimenticato, l'ho fatto crescere. È online da anni e Paolo lo usa ancora.

Guardarlo oggi mi dà sensazioni contrastanti. Sono orgoglioso perché è stato il primo, e sono critico perché so di averlo fatto in fretta con metà delle conoscenze che ho adesso. Ma un sito che serve ancora il suo scopo dopo sette anni ha fatto il suo mestiere, e questo mi basta.

Chi sono

Fuori dallo schermo

I computer mi affascinano da quando ero bambino. È per questo che ho scelto di diplomarmi Ragioniere Programmatore, studiando informatica, Pascal e Visual Basic. Poi la vita ha preso un'altra direzione.

Le circostanze e il mutare delle priorità mi hanno portato verso la logistica: un mestiere che mi ha insegnato a organizzare, a confrontarmi con vincoli concreti e a lavorare con le persone. È ciò di cui mi occupo ancora oggi ed è diventata una parte importante del mio percorso. Nel frattempo l'interesse per ciò che avevo studiato non è scomparso: è maturato insieme a me.

La spinta decisiva è arrivata ascoltando Storie di Developers, il podcast di Simone Torrisi, e in particolare le puntate con Salvatore Sanfilippo e Matteo Collina. Due strade opposte — chi ha imparato da solo e chi è cresciuto dentro l'industria — che raccontavano la stessa cosa: non esiste un solo modo per entrare nel mondo dello sviluppo, e non è detto sia troppo tardi.

Ho ricominciato sul serio durante la quarantena, studiando da autodidatta HTML, CSS e JavaScript. Da lì è arrivato il primo lavoro commissionato, poi il linguaggio C — di cui ormai sono innamorato — e il desiderio di avvicinarmi sempre di più alla macchina. In fondo è la stessa curiosità che avevo da bambino, ma oggi ho gli strumenti per seguirla.

La cosa che so fare meglio non è scrivere codice: è imparare qualcosa e riuscire poi a spiegarla agli altri. Documento tutto ciò che faccio, non per disciplina astratta, ma perché raccontare come funziona una cosa è il modo in cui verifico di averla capita — e permette a qualcun altro di riprendere il lavoro da dove l'ho lasciato.

Di giornoLogistica. Il turno finisce, il resto comincia.
A casaLa mia famiglia, il giardino, le cose che vanno curate ogni giorno.
Ai fornelliCucino quando capita, senza pretese. Provo, sbaglio, riprovo — come con tutto il resto.
Con la voceCanto. E vorrei riprendere in mano la chitarra.
C Linux · Manjaro HTML · CSS JavaScript TypeScript Next.js PHP Git Neovim Prompt engineering

Alle superiori: Pascal, Visual Basic. Tutto il resto è venuto dopo, da solo.

Tre strati sovrapposti: una finestra di browser, un terminale, un microchip — la discesa dal web verso l'hardware
Dal browser al terminale al silicio

Contatti

Scrivimi.

Il mio obiettivo è farne il mio mestiere. Qui sopra non troverai un elenco di ruoli ricoperti, ma i progetti che sto portando avanti: raccontano come imparo e come lavoro meglio di quanto farebbe un curriculum.

Mi interessano le occasioni per imparare qualcosa che non so ancora fare, i progetti da portare avanti insieme, e il confronto con chi ha voglia di spiegare e di ascoltare. Se qualcosa qui ti ha incuriosito, fammelo sapere.