Le weekend dernier, pendant que les gens normaux sortaient prendre un café ou trainaient au marché, moi j'ai décidé d'ouvrir les tiroirs de mon passé numérique.
Des vieux projets qui dormaient sur des disques durs : PHP 3, PHP 4, MySQL antique, parfois même du Flash.
Une sorte de chasse aux trésors version développeuse. Ou d'Alice au pays des merveilles, mais avec des tableaux MySQL corrompus à la place des lapins blancs.
À l'intérieur : mes premiers scripts, mes premières interfaces, mes premiers bugs. Et quelques surprises.
Je ne savais pas encore que j'allais passer tout mon weekend à faire tourner du code du début des années 2000… avec l'aide d'une IA.
1. Les archives : un chaos de dossiers et de souvenirs
Tout a commencé par curiosité, j'avais recherché mes vieux sites archive.org, et puis je me suis dit : je suis sûre que j'ai encore tout ça quelque part sur des vieux cd gravés ou des vieux disque dur externes..
J'ai commencé mes fouilles, je suis tombée sur un vieux dossier public_html, puis un autre, puis un site_old avec des fichiers .php3, .inc, et des dumps SQL.
Certains projets n'avaient plus de base de données, juste du code qui appelait des tables fantômes.
J'ai rouvert tout ça avec ChatGPT, ligne par ligne, pour essayer de comprendre comment je l'avais conçu.
L'IA a commencé à "lire" mes anciens scripts comme un archéologue lit des hiéroglyphes :
"Ici tu avais probablement une table
cartesavec ces champs :id,message,image,
Et ensemble, on a reconstitué les schémas SQL perdus à partir du code PHP.

2. Docker : ma machine à remonter le web
L'idée suivante a été de tout isoler.
Pas question d'installer des versions préhistoriques de PHP oy Mysql sur mon PC.
On a donc utilisé Docker pour créer des environnements sur mesure :
- un conteneur Apache/PHP 3 ou 4 recompilé,
- un conteneur MySQL 4.1 ou 5.0,
- un phpMyAdmin pour vérifier que tout restait lisible,
- et un réseau Docker local qui reliait le tout.
Chaque site avait son propre dossier et son propre docker-compose.yml.
Ça m'a permis de naviguer sur http://site2002.local comme si j'étais revenue vingt ans en arrière.
Et à chaque fois qu'un site s'affichait enfin sans erreur, j'avais cette petite montée d'adrénaline :
"Ah mais oui, j'avais codé ça !"

3. Reconstruire sans plan, juste avec le code
Certains projets n'avaient plus rien d'exploitable.
On a dû recréer les tables à partir de bribes : un INSERT oublié dans un script, une jointure implicite dans un SELECT, un champ $row['message'] qui trahissait la structure d'origine.
Petit à petit, les morceaux reprenaient forme : le code PHP, la base reconstituée, les images manquantes retrouvées dans un vieux dossier uploads/.
Et soudain, le site s'ouvrait à nouveau, comme une capsule temporelle.
Ce que j'avais codé à vingt ans, maladroitement, tenait encore debout.
4. La surprise : FlyCMS, mon CMS maison codé à l'époque du code spaghetti
Et puis, il y a eu LA surprise.
En fouillant dans un dossier que je croyais vide, je suis tombée sur FlyCMS.
Mon propre système de gestion de contenu, codé en 2003-2004.
Je l'avais complètement oublié.
Ce que j'ai découvert
En rouvrant les fichiers, j'ai réalisé que j'étais déjà plutôt organisée dans mon code. Alors que PHP 3 et PHP 4, c'était quand même l'époque du code spaghetti par excellence.
Mais surtout, j'ai découvert que j'étais obsédée par la documentation.
Ce CMS, que j'étais la seule à utiliser, avait une documentation complète :
- Installation étape par étape
- Configuration détaillée avec screenshots
- Explications pour créer des pages, gérer l'arborescence, modifier les templates
- Même une section "Si ça marche pas, vérifie les droits des répertoires"
J'ai trouvé ça hilarant. Et touchant.

L'architecture (surprenamment moderne)
En relisant le code, j'ai vu que j'avais déjà :
- Un système de templates avec override : je pouvais soit utiliser le système dynamique PHP/DB/templates, soit faire l'override d'une page avec un fichier HTML statique
- Le multilangue : tout était prévu pour traduire l'interface d'administration
- Une gestion de l'arborescence des pages avec ordre personnalisable
- Des modules activables/désactivables
- Une séparation propre entre config, templates, CSS et contenu
Pour 2003, avec PHP 4, c'était pas mal du tout.
Le détail qui tue
Dans la doc, j'avais écrit :
"FlyCMS est un outil de gestion de contenu pour créer facilement des sites web. Il fonctionne sur le principe d'une arborescence de page et de templates. Il a été torché en 3 jours, donc j'ai bien droit à une bière!"
Et pour expliquer comment trouver le chemin complet du serveur :
"Vous ne savez pas quoi mettre ici ?
Faites un fichier test.php
Mettezzy (oui écrit comme ça) ce code là :<?php echo realpath('test.php'); ?>"
J'étais déjà comme ça, apparemment. 😄
Merci, moi du passé
En relisant cette doc, avec ses screenshots en .gif, ses explications détaillées et ses petites blagues, j'ai eu un moment d'émotion bizarre.
La Jennifer de 2003 avait pris le temps de tout documenter.
Pour elle-même, mais aussi pour une hypothétique utilisatrice future.
Et cette utilisatrice future, 22 ans plus tard, c'était moi.
Merci, moi du passé. Vraiment.
5. Le cas particulier des projets Flash
Le moment le plus fou, ça a été quand j'ai retrouvé mes anciens projets en Flash.
Notamment un petit outil que j'avais appelé "Dessine ?" : tu faisais un dessin en coloriant des carrés dans le navigateur, tu écrivais un message, et ça créait une e-carte stockée en base de données, avec un lien unique à envoyer à quelqu'un.
Quand j'ai rouvert le .swf, j'ai d'abord ri.
Puis je me suis rendu compte que c'était du vrai code : le Flash envoyait des requêtes POST à un save.php qui sauvegardait l'image et le message.
Tout était encore là, dans le dossier.
Sauf… que Flash avait disparu.
On a donc utilisé Ruffle, un émulateur Flash moderne en WebAssembly.
Avec quelques ajustements dans le backend Docker (PHP 4 + MySQL + save.php d'époque), Dessine ? s'est remis à fonctionner.
Le SWF tourne dans le navigateur, les images sont à nouveau sauvegardées, et les liens uniques mènent à de vraies pages de visualisation.
Vingt ans plus tard, les e-cartes refonctionnent.

6. Le rôle de l'IA
Je ne me serais jamais lancée là-dedans sans un assistant patient pour m'aider à comprendre mes propres reliques.
ChatGPT m'a aidée à :
- décoder mes vieux scripts PHP et retrouver les structures de données ;
- corriger des erreurs d'encodage (
é) ; - configurer les bonnes versions de Docker ;
- recompiler un vieux PHP pour qu'il accepte mes extensions manquantes ;
- et même émuler Flash sans Flash Player.
Mais surtout, ça m'a forcée à relire mon ancien code comme un texte, à comprendre ce que je pensais quand je l'avais écrit.
Et ça, c'était inattendu.

7. Ce que j'en retiens
Ressusciter ces sites, ce n'était pas juste un exercice technique.
C'était une plongée dans ma propre évolution de développeuse.
Chaque conteneur Docker est devenu une petite bulle temporelle où je peux revoir mes débuts, mes erreurs, mes trouvailles.
Et voir que la Jennifer de 2003, qui "torchait un CMS en 3 jours" tout en documentant chaque étape avec soin, était déjà sur la bonne voie.
Elle ne le savait pas encore, mais elle construisait déjà des choses durables.
Même si elles allaient dormir 22 ans sur un disque dur.
Maintenant j'ai commencé l'archivage de mes vieux sites et projets d'expérimentation, sur GitHub, parce que bon, mes vieux cds et mes disques durs, on va être honnêtes, ils ne vont pas tenir éternellement...
Conclusion
Ce que j'ai appris en recréant tout ça avec l'aide d'une IA, c'est qu'aucune ligne de code n'est vraiment perdue.
On peut tout reconstituer, tout comprendre, si on prend le temps d'écouter ce que le code raconte.
Docker m'a donné l'infrastructure.
L'IA m'a donné la mémoire.
Et moi, j'ai redonné vie à un morceau de mon histoire.
PS : Si vous aussi vous avez des vieux projets qui dorment quelque part, des sites des années 2000 que vous aimeriez ressusciter, ou juste l'envie de comprendre comment on faisait "avant"… parlons-en. Je serais ravie d'entendre vos histoires.
