🕐 Tempo di lettura: 4 minuti
Piccolo momento meta: questa pillola parla del progetto stesso di cui è parte. Le Pills hanno finalmente una casa – javapills.com è online (beh ci sei dentro!) e raccoglie tutti gli articoli pubblicati finora.
Ho costruito, documentato e deployato questo progettino in una quarantina d'ore affiancato da Claude Code (modello Claude Opus 4.7), l'agente da terminale di Anthropic (piano Pro). Sul "vibe coding" – termine ormai inevitabile – torno più avanti: prima partiamo dalle cose concrete.
C'è un piccolo lusso nell'avere uno spazio personale oltre a LinkedIn: un posto dove concedersi ogni tanto un articolo più lungo, meno "pillola" e meno compresso dai limiti di un post. Questo è il primo, quindi prendetevi un caffè. ☕
📌 Lo stack: semplice per scelta, non per pigrizia
Alla base c’è Spring WebFlux, il framework che ha dato vita a questa rubrica, con Thymeleaf per il rendering delle pagine. Volevo qualcosa di semplice, dove fosse Java a guidare: in fondo sono nato backendista. Gli articoli sono file Markdown statici (CommonMark), caricati in memoria all’avvio: niente database. Con una ventina di articoli non serviva, e non volevo aggiungere complessità. Tenere tutto in memoria, tra l'altro, regala anche una bella velocità di risposta. Sotto, abbiamo un'architettura a layer pulita: controller snelli → un layer di rendering → un layer di logica → un loader degli articoli; il tutto poggiato sulla mia reactive-toolkit, una libreria per logging strutturato, gestione degli errori e non solo...! (libreria che spero, un domani, di poter rendere open source).
La tentazione di infilarci un DB rimane e sarebbe utile per caricare i nuovi articoli senza rifare deploy. Ma con una frequenza di un articolo al mese (se va bene), dettata più dal "avere qualcosa da dire" che da un calendario, mi sono scritto un piccolo script bash di deploy e per ora l'ho chiusa qui. Se un domani il numero degli articoli crescerà, e me lo auguro, lo aggiungerò come evolutiva.
📌 Qualità, sicurezza e messa online
Sulla qualità niente sconti: gate JaCoCo all'85% di line e 80% di branch, ma la line coverage reale gira intorno a un folle 98%. Sul perché la branch coverage conti più della percentuale totale, ne ho parlato nella pillola #23. Sul fronte sicurezza, un SecurityHeadersFilter aggiunge CSP, X-Frame-Options, X-Content-Type-Options & co. su ogni risposta. Per la messa online ho scelto Fly.io, che ha reso il deploy davvero leggero e immediato – container Docker, build e rilascio fatti a mano dal mio PC (niente CI, per ora) – e davanti ci ho messo il dominio javapills.com con Cloudflare per CDN, TLS, HTTPS forzato e HSTS.
📌 I dettagli, anche se vengo dal backend
L'interfaccia è volutamente essenziale – anche perché, diciamocelo, il front-end non è proprio il mio mestiere 😅 – ma "essenziale" non vuol dire "trascurata":
- una ricerca interna per filtrare gli articoli al volo
- la paginazione della lista degli articoli, per non servire tutto in un colpo solo
- il syntax highlighting del codice con un tema in stile IntelliJ Darcula – di snippet Java, qui, se ne vedono parecchi
- una pagina About me bilingue IT / EN
- una palette centralizzata: cambiare il blu di tutto il sito è una riga sola
In breve: home, ricerca e una sezione su di me – l'essenziale, appunto. Più una piccola API REST JSON del catalogo, perché certe abitudini da backendista non si perdono!
📌 Cos'è (e cosa non è) il vibe coding e i suoi numeri (più o meno)
Veniamo al come. Vibe coding non vuol dire spegnere il cervello e accettare qualsiasi cosa esca dal modello. Vuol dire spostare il proprio ruolo: meno tempo a digitare, più tempo a decidere e revisionare. E come avevo già raccontato nella pillola #21, il risultato finale non nasce mai da un prompt brillante e secco, ma da moltissime micro-iterazioni con l'AI: è un'andatura un po' più lenta, ma che ti restituisce il controllo del processo.
Una nota onesta: un conteggio preciso dei token usati non lo ho. Con un abbonamento come Claude Pro, l'uso si misura in percentuale dei limiti – sessione e settimana – non in token, e quel numero semplicemente non è esposto. Quello che posso dire è che, pur "spingendo" parecchio per diverse sessioni, non ho mai sforato i limiti del piano: il tetto probabilmente si tocca quando si scatenano agenti che bruciano token in modo massiccio, non guidando il processo passo passo come ho fatto io. Perché sì, ho voluto validare ogni output: l'iterazione è più lenta, ma ti dà più controllo e, sorpresa sorpresa, ti fa anche imparare di più, un po' di Thymeleaf qua, un po' di Cloudflare là. Come avevo raccontato nella pillola #9, all'AI ho delegato problemi ben definiti senza perdere il controllo delle decisioni progettuali.
📌 Dopo quaranta ore, qualche conclusione
Intanto uno spazio che è davvero mio – facile da consultare, da archiviare e, perché no, da usare come biglietto da visita. Poi una considerazione: il vibe coding non è magia e non sostituisce il mestiere. L'AI scrive a una velocità assurda, ma le decisioni che fanno la differenza – come strutturare il codice, dove fermarsi, cosa conta per la sicurezza, quali dettagli curare – restano, per ora, umane. Ma è proprio quel "per ora" il punto: dandole il contesto giusto, l'AI è già capace di analisi che spesso superano quelle dell'individuo medio. Più questa tecnologia si diffonde, più la vera seniority si sposterà: meno nello scrivere la soluzione, più nel saperla validare e nel guidarla secondo il proprio stile.
Alla prossima pillola! ☕