Lo scorso weekend, mentre le persone normali uscivano a prendere un caffè o gironzolavano per il mercato, io ho deciso di aprire i cassetti del mio passato digitale.
Vecchi progetti dimenticati su hard disk: PHP 3, PHP 4, MySQL antidiluviano, a volte perfino un po’ di Flash.
Una sorta di caccia al tesoro in versione sviluppatrice. O una Alice nel paese delle meraviglie, ma con tabelle MySQL corrotte al posto dei conigli bianchi.
Dentro: i miei primi script, le mie prime interfacce, i miei primi bug. E qualche sorpresa.
Non sapevo ancora che avrei passato tutto il weekend a far girare codice dei primi anni 2000... con l’aiuto di un’IA.
1. Gli archivi: un caos di cartelle e ricordi
Tutto è iniziato per curiosità. Avevo cercato i miei vecchi siti su archive.org, e poi mi sono detta: sono sicura di avere ancora tutto da qualche parte, su vecchi CD masterizzati o dischi esterni...
Ho cominciato a scavare e ho trovato una vecchia cartella public_html, poi un’altra, poi un site_old con file .php3, .inc, e dump SQL.
Alcuni progetti non avevano più un database, solo codice che chiamava tabelle fantasma.
Ho riaperto tutto con ChatGPT, riga per riga, per cercare di capire come li avevo progettati.
L’IA ha iniziato a "leggere" i miei vecchi script come un archeologo che decifra i geroglifici:
"Qui probabilmente avevi una tabella
cartescon questi campi:id,message,image,
E insieme, abbiamo ricostruito gli schemi SQL perduti a partire dal codice PHP.

2. Docker: la mia macchina del tempo per il web
L’idea successiva è stata quella di isolare tutto.
Non se ne parlava di installare versioni preistoriche di PHP o MySQL sul mio PC.
Quindi abbiamo usato Docker per creare ambienti su misura:
- un container Apache/PHP 3 o 4 ricompilato,
- un container MySQL 4.1 o 5.0,
- un phpMyAdmin per controllare che tutto fosse leggibile,
- e una rete Docker locale per collegare il tutto.
Ogni sito aveva la sua cartella e un proprio docker-compose.yml.
Mi ha permesso di navigare su http://site2002.local come se fossi tornata indietro di vent’anni.
E ogni volta che un sito si caricava finalmente senza errori, provavo quel piccolo brivido:
"Ah ma sì, l’avevo proprio fatto io questo!"

3. Ricostruire senza piano, solo con il codice
Alcuni progetti non avevano più niente di utilizzabile.
Abbiamo dovuto ricreare le tabelle partendo da briciole: un INSERT dimenticato in uno script, una join implicita in un SELECT, un campo $row['message'] che tradiva la struttura originale.
Pian piano, i pezzi prendevano forma: il codice PHP, il database ricostruito, le immagini mancanti ritrovate in una vecchia cartella uploads/.
E all’improvviso, il sito si riapriva di nuovo, come una capsula del tempo.
Quello che avevo codato a vent’anni, in modo un po’ goffo, stava ancora in piedi.
4. La sorpresa: FlyCMS, il mio CMS fatto in casa all’epoca del codice spaghetti
E poi è arrivata LA sorpresa.
Frugando in una cartella che pensavo fosse vuota, ho trovato FlyCMS.
Il mio sistema di gestione dei contenuti, codato nel 2003-2004.
Me ne ero completamente dimenticata.
Cosa ho scoperto
Riaprendo i file, ho realizzato che ero già abbastanza organizzata nel codice. Nonostante PHP 3 e 4 fossero l’epoca per eccellenza del codice spaghetti.
Ma soprattutto, ho scoperto che ero ossessionata dalla documentazione.
Questo CMS, che usavo solo io, aveva una documentazione completa:
- Installazione passo per passo
- Configurazione dettagliata con screenshot
- Spiegazioni per creare pagine, gestire l’alberatura, modificare i template
- Perfino una sezione “Se non funziona, controlla i permessi delle cartelle”
L’ho trovato esilarante. E anche un po’ commovente.

L’architettura (sorprendentemente moderna)
Rileggendo il codice, ho visto che avevo già:
- Un sistema di template con override: si poteva usare il sistema dinamico PHP/DB/templates o sovrascrivere una pagina con un file HTML statico
- Il multilingua: tutto era pronto per tradurre l’interfaccia di amministrazione
- Una gestione dell’alberatura delle pagine con ordine personalizzabile
- Moduli attivabili/disattivabili
- Una separazione chiara tra configurazione, template, CSS e contenuti
Per il 2003, con PHP 4, non era per niente male.
Il dettaglio killer
Nella doc avevo scritto:
"FlyCMS è uno strumento per creare facilmente siti web. Funziona su un sistema ad albero e template. È stato buttato giù in 3 giorni, quindi mi merito una birra!"
E per spiegare come trovare il path completo del server:
"Non sai cosa mettere qui?
Crea un file test.php
Mettezzy (scritto proprio così) questo codice:<?php echo realpath('test.php'); ?>"
Ero già fatta così, a quanto pare 😄
Grazie, me stessa del passato
Rileggendo quella documentazione, con i suoi screenshot .gif, le spiegazioni dettagliate e le battute qua e là, ho avuto un momento strano.
La Jennifer del 2003 aveva preso il tempo di documentare tutto.
Per se stessa, ma anche per un’ipotetica utente futura.
E quella utente, 22 anni dopo, ero io.
Grazie, Jennifer del passato. Davvero.
5. Il caso particolare dei progetti in Flash
Il momento più folle è stato quando ho ritrovato i miei vecchi progetti in Flash.
In particolare un piccolo tool che avevo chiamato "Dessine?": disegnavi colorando quadrati nel browser, scrivevi un messaggio, e creava una e-card salvata nel database, con un link unico da inviare a qualcuno.
Quando ho riaperto il file .swf, ho riso.
Poi mi sono resa conto che era vero codice: il Flash inviava POST a un save.php che salvava immagine e messaggio.
Era tutto ancora lì, nella cartella.
Tranne… che Flash era sparito.
Quindi abbiamo usato Ruffle, un emulatore moderno in WebAssembly.
Con qualche aggiustamento nel backend Docker (PHP 4 + MySQL + save.php originale), Dessine? ha ripreso a funzionare.
Il file SWF gira nel browser, le immagini vengono salvate di nuovo, e i link unici portano a pagine vere di visualizzazione.
Vent’anni dopo, le e-card funzionano ancora.

6. Il ruolo dell’IA
Non mi sarei mai lanciata in tutto questo senza un assistente paziente che mi aiutasse a capire le mie reliquie.
ChatGPT mi ha aiutato a:
- decifrare i miei vecchi script PHP e ricostruire le strutture dati;
- correggere gli errori di encoding (
é); - configurare le versioni giuste di Docker;
- ricompilare una vecchia versione di PHP per supportare le estensioni mancanti;
- e perfino emulare Flash senza Flash Player.
Ma soprattutto, mi ha costretto a rileggere il mio codice come un testo, a capire cosa stavo pensando quando l’avevo scritto.
E questo, non me lo aspettavo.

7. Cosa mi porto dietro
Resuscitare questi siti non è stato solo un esercizio tecnico.
È stato un tuffo nella mia evoluzione come sviluppatrice.
Ogni container Docker è diventato una piccola bolla temporale in cui ho rivisto i miei inizi, i miei errori, le mie scoperte.
E vedere che la Jennifer del 2003, che “buttava su un CMS in 3 giorni” ma documentava tutto con cura, era già sulla strada giusta.
Non lo sapeva ancora, ma stava già costruendo cose che sarebbero durate.
Anche se avrebbero dormito 22 anni su un hard disk.
Ora ho cominciato ad archiviare quei vecchi siti e progetti sperimentali su GitHub — perché, diciamolo, i miei vecchi CD e dischi rigidi non dureranno per sempre...
Conclusione
Quello che ho imparato ricreando tutto questo con l’aiuto dell’IA è che nessuna riga di codice è davvero perduta.
Tutto si può ricostruire, tutto si può capire, se si prende il tempo di ascoltare ciò che il codice racconta.
Docker mi ha dato l’infrastruttura.
L’IA mi ha dato la memoria.
E io ho ridato vita a un pezzo della mia storia.
PS: Se anche tu hai vecchi progetti dimenticati da qualche parte, siti degli anni 2000 che vorresti far rivivere, o solo la curiosità di capire come si faceva “prima”... parliamone. Mi farebbe piacere sentire anche la tua storia.
