🕐 Tempo di lettura: 3 minuti
Nella pillola #24 raccontavo la nascita di questo sito: una quarantina d'ore di «vibe coding» con Claude Code e il 26 maggio javapills.com era online, versione 0.4.0. Lì lo definivo "essenziale": home, ricerca e una "about me". Il 10 giugno ho rilasciato la versione 1.0.0 – e di "essenziale", a guardare il changelog, è rimasto poco. Questa pillola è una specie di seconda puntata: cosa è cambiato in due settimane e come si lavora quando le evolutive sono realizzate a colpi di intense sessioni serali con l'AI al fianco.
📌 L'evolutiva promessa: arriva il database
Nella #24 scrivevo: «la tentazione di infilarci un DB rimane [...]». È durata poco: dalla 1.0.0 gli articoli vivono su un database PostgreSQL messo a disposizione come servizio gestito da Fly.io, la stessa piattaforma su cui gira il sito: un comando (fly postgres attach) e l'app si ritrova la sua istanza collegata, senza dovermi gestire backup, aggiornamenti o macchine a mano. Pubblicare una nuova pillola non richiede più un redeploy, basta un upload via API admin, protetta da chiave, ovviamente. L'architettura a layer ha ripagato anche qui: il caricamento degli articoli era già isolato in un'unica classe coesa (Single Responsibility Principle), quindi c'era un solo punto da astrarre. Mi è bastato estrarne un'interfaccia (Dependency Inversion Principle) e fornire due implementazioni: il loader da database, affiancato a quello da classpath. Così ho potuto aggiungere la nuova strategia di caricamento senza modificare il resto dell'applicazione (Open/Closed Principle) – per i suoi consumatori il cambiamento è stato del tutto trasparente.
📌 Leggere è diventato più comodo
La parte più visibile è l'esperienza di lettura, cresciuta una release alla volta:
- il tema scuro, con tonalità ispirate a IntelliJ Darcula – come il syntax highlighting
- in fondo a ogni articolo, i link al precedente e al successivo; da desktop bastano ← e →
- un pulsante "copia" su ogni blocco di codice – e di snippet, qui, se ne incontrano parecchi
- le reazioni: ogni articolo ha il suo tasto like/heart, e i count restano memorizzati su database
- i pulsanti di condivisione – uno per i social, uno per copiare il link al volo
- un pulsante fluttuante per tornare in cima nei pezzi più lunghi (tipo questo)
📌 L'archivio si naviga, non si scorre soltanto
Con 25 pillole all'attivo, la lista paginata non bastava più. Ora ogni tag è un link che apre tutti gli articoli correlati, e ogni stagione ha la sua pagina dedicata con le pillole in sequenza. Sotto il cofano è tutto pre-calcolato in cache all'avvio: nessun raggruppamento per richiesta. L'idea rimane «tenere tutto in memoria»: dopotutto resta un blog personale e il peso degli articoli è nell'ordine di qualche KB.
A contorno: la pagina Changelog raggiungibile dal numero di versione nell'header (quella che state per cliccare), una passata seria di SEO – dati strutturati e sitemap – e una lunga serie di rifiniture da smartphone, perché è da lì che arriva (arriverà?) buona parte delle visite.
📌 La About rinasce in Vue
Sotto il post LinkedIn del precedente articolo, un ex collega mi ha buttato lì un «dai buttati sul FE 😄», raccontando di essere passato a Vue dopo anni di React: «bello e semplice». La mia risposta: «col pretesto del sitarello potrei approfondire un po' di FE! però non mi ci vedo fare totalmente il salto e imprecare cercando di centrare un div 🤣». Una settimana dopo, la pagina About l'ho reimplementata in Vue: tab interattive, contatore animato delle statistiche, filtro sulle skills. E sulla stessa pagina sono arrivati la sezione Contattami – che mi recapita una mail direttamente sul mio dominio – e il CV scaricabile in versione stampabile (che riusa gli stessi dati della pagina About).
📌 Sei release in quindici giorni
Il numero che mi incuriosisce è legato alla frequenza di rilascio: sei release in quindici giorni, lavorando solo nei ritagli di tempo. È qui che il vibe coding mostra il suo lato migliore: non tanto nello scrivere codice velocemente, quanto nell'abbattere il costo di iniziare un'evolutiva. L'attrito tra "sarebbe carino avere i tag cliccabili" e "i tag sono cliccabili in produzione" si è ridotto a una o due serate – revisione, test e gate di coverage inclusi: anche per un «progettino» personale come questo i miei standard di qualità restano alti.
Il ciclo idea → produzione si è accorciato così tanto che la vera disciplina, ora, è un'altra: resistere alla tentazione di aggiungere cose solo perché costano poco. Con la 1.0.0 posso dire che il progetto smette di essere un cantiere e inizia a essere, finalmente, un luogo. E adesso che pubblicare non richiede più un deploy... ho finito gli alibi per non pubblicare nuovi articoli. 😅
Alla prossima pillola! (magari torno a scrivere qualcosa di tecnico, chissà) ☕