Richard Dern

Nouveautés du blog

Nouveautés du blog

Nouveau design

Comme presque chaque année depuis 2021, j’ai créé un nouveau design pour le blog. Il est toujours totalement dépourvu de javascript, le CSS fait toujours moins de 15ko, et la page d’accueil pèse un peu moins de 1.5Mo. Je suis plutôt content du résultat, surtout que mes blocs “spotlight” (“À la une” et les critiques sur la page d’accueil) fonctionnent plutôt bien et apportent une dynamique que j’estime bienvenue.

La différence par rapport aux années passées est que je me suis laissé tenter par le vibe coding. Mais avant de fermer l’onglet de votre navigateur et de vous dire que plus jamais vous ne visiterez mon site parce que je suis un suppôt de Satan, laissez-moi une chance de m’exprimer.

Il y a fort longtemps, avant l’avènement des méthodes dites “agiles” et leur exploitation massive (avant la fin des années 2000), les développeurs avaient une autre façon de travailler : ils rédigeaient un cahier des charges. Les développeurs étaient au contact du client qui exprimait son besoin. Leur rôle était de traduire la pensée humaine abstraite du client en une application mathématique concrète. Essayez de vous souvenir : c’était l’époque où, lorsqu’un éditeur d’application ou de jeux-vidéo sortait un nouveau produit, les clients n’avaient pas forcément un Internet haut-débit pour télécharger des mises à jour régulières. C’était l’époque où, quand un produit était commercialisé, il était réputé fini.

Je sais, c’est choquant.

Lorsque “tout le monde” informatique s’est mis aux méthodes agiles, on ne faisait plus de cahier des charges. On faisait des specs, courtes et ciblées, que les commerciaux ou le service après-vente (ou autre dénomination élogieuse) communiquaient aux développeurs. Ces derniers furent isolés du client final, et perdaient au passage la vision d’ensemble du produit. Le client fut alors mis dans une position où toute modification de son idée initiale devait faire l’objet d’un ticket, puis d’un sprint. Plus personne ne réfléchit au projet, mais on avait tous gagné en “agilité”.

Lorsque le client a besoin d’une nouvelle fonctionnalité (ou décide qu’il veut décaler une image d’un pixel vers la gauche), il déclenche en réalité une longue procédure (simplifiée ici) :

L’Intelligence Artificielle est ensuite venue combler le déficit évident de cette “méthode” : le client demande directement à l’IA de faire ce qu’il veut. Si le résultat n’est pas à la hauteur de ce qu’il voulait, le client ne peut s’en prendre qu’à lui-même : c’est lui qui s’est mal exprimé. Il reformule alors, corrige, modélise sa propre application avec l’aide de l’IA. C’est ce que proposent désormais Wix ou Wordpress, pour ne citer qu’eux.

Il est loin le temps où le client savait ce qu’il voulait, où il était capable d’aligner sa vision dans un document complet, conjointement avec les développeurs grâce à un lien social, et où le livrable était considéré comme définitif.

Je n’ai jamais adhéré à ce schéma. C’est peut-être pour ça que j’ai connu tant d’échecs professionnels : parce que j’avais l’intuition que cela allait nous conduire, vingt ans plus tard, à l’extinction du métier de développeur, alors que j’espérais pendant longtemps qu’on en ferait un artisanat, dans le sens noble du terme.

Donc, si je ne suis plus le développeur, et que je ne suis pas celui qui vend un produit, je suis forcément le client. Mieux : je suis un client exigeant qui sait exactement ce qu’il veut et qui est capable de le formaliser dans un cahier des charges exhaustif.

J’ai rédigé mon cahier des charges pour mon nouveau design au poil de cul. Tout y était, tout ce que je voulais, à l’exception des mockups que j’ai remplacé par des descriptions textuelles claires et complètes parce que je n’ai aucun talent artistique. Et au moment de me lancer dans l’implémentation de ce cahier des charges, mon cerveau a gelé. Le burn-out, tapis dans l’ombre, et la dépression temporairement mise en sourdine, tout cela s’est ranimé d’un coup, en même temps qu’une épiphanie : si je ne peux plus coder, mais que je peux encore écrire un cahier des charges, alors je vais laisser ChatGPT “exécuter ma vision”.

Et le fait est que ChatGPT s’est bien débrouillé. Le code était immonde, pas optimisé, avec des effets de bord monstrueux que je n’aurais jamais pu tolérer dans ma carrière, mais le résultat visuel et fonctionnel était conforme à mes exigences. Ça a durement mis à l’épreuve ma capacité – virtuellement inexistante – à lâcher prise. Pourtant, il m’a suffi de quelques instructions supplémentaires dans un fichier AGENTS.md pour corriger le tir et forcer ChatGPT à refactoriser et produire un résultat un peu meilleur. À ce jour, tout n’est pas parfait, des optimisations sont encore possibles, et c’est une bonne chose : je ne suis plus capable de développer, mais je suis parfaitement capable d’expliquer à une IA comment travailler correctement. Et les skills devraient faire partie de ma boîte à outils dans un avenir proche.

Au final, ce n’est pas vraiment du vibe coding stricto sensu. C’est de la modélisation logicielle par LLM, mais au lieu de partir de petites specs “au feeling” (à l’arrache…), je pars sur un cahier des charges dûment rempli, comme au bon vieux temps. Encore une fois, ce n’est pas parfait, mais je suis satisfait dans la mesure où j’ai avancé sans avoir eu besoin de m’arracher les cheveux.

Recherche

J’ai dit, au début de cet article, que le blog est toujours totalement dépourvu de javascript. En réalité, il y a un fichier de javascript, mais il n’est chargé et utilisé que sur la nouvelle page de recherche. Cette fonctionnalité sur mon site est, là encore, une affaire de lâcher-prise, à petite dose bien contrôlée.

J’approche des 500 publications, et ma rédaction se densifie et se diversifie. Je pense donc qu’il n’est plus déraisonnable d’envisager la possibilité de caresser l’idée qu’éventuellement il soit potentiellement possible1 de faire une recherche.

Pour ceux que ça intéresse, et qui ont tenu le coup jusque-là, c’est MeiliSearch qui fait tourner le moteur. Je l’ai choisi parce qu’il est disponible nativement sous NixOS et parce qu’il fait le job sans me prendre la tête.

Chat

Encore un point sur lequel je me suis – un peu – ravisé : l’interaction avec mes visiteurs. À la base, mon manifeste indiquait mon refus de l’interaction immédiate. Au fil des évolutions de mon blog, je me suis ouvert au fediverse, à Matrix, à mastodon et dérivés, et même à instagram. Aucune de ces plateformes ne m’a convenu, pour différentes raisons. J’en suis toujours revenu, et j’ai toujours privilégié le contact par email.

Finalement, cela fait depuis deux mois que je fais tourner une instance de lemmy, et elle est assez docile pour que j’oublie presque son existence ; c’est une chose que j’apprécie chez un serveur. Du coup, j’avais envie de réaliser un vieux rêve : recréer chez moi l’expérience des messageries instantanées multi-utilisateurs des années 2000.

J’ai du mal à me décider : on a évolué un peu ou pas du tout ?

Les plus jeunes ne comprendront pas ma référence. Les plus vieux ne comprendront pas pourquoi j’ai mis autant de temps avant de m’y mettre. Figurez-vous que, comme pour ActivityPub, j’ai déjà essayé plusieurs fois, sans jamais y trouver mon compte. J’ai eu mon lot d’installations du couple anope/epona, d’UnrealIRCd, et compagnie. Trop de boulot pour pas grand-chose ; à l’époque où je les avais testés, en tout cas.

Je rajoute que ce sont aussi les solutions web qui ne m’ont jamais convenu. À mes yeux, les clients pour IRC sont austères et peu engageants, ce qui m’avait conduit, à une époque, à essayer Movim, visuellement plus chaleureux, mais comme toute stack XMPP, s’est révélé une plaie à maintenir. Et comme je ne veux plus m’encombrer d’applications non-web, les choix étaient limités.

Or, j’ai pris connaissance de The Lounge, client IRC basé sur le web, moderne et agréable à utiliser. Bien qu’il ne soit pas parfait, il représente bien l’esthétique (modernisée) de “la belle époque” du web – toujours selon moi – au contraire de gamja. Le plus gros reproche que j’ai à lui faire concerne le formulaire d’entrée, que j’espérais pouvoir limiter au choix d’un pseudo ("Nick"), et l’absence de traduction en français qui pourrait dissuader certains lecteurs de me rendre visite.

L’interface de connexion de The Lounge.

Côté serveur, ChatGPT m’a suggéré ergo, là encore pour son installation native sur NixOS. J’ai eu quelques soucis avec les certificats, comme je m’y attendais, compte tenu de l’architecture de mon réseau, mais au final, tout fonctionne.

Et, effectivement, malgré quelques défauts, je retrouve un peu ce ressenti que j’avais à l’époque des guerres de bots à coup de revenge-kick-ban, des répondeurs, des robots conversationnels et autres eggdrops. Ça m’a rappelé que c’est comme ça que j’avais commencé à développer sur Internet : un chatbot sur IRC. Ça fait vibrer ma corde nostalgique, et j’ai l’espoir d’attirer sur mon serveur deux catégories de visiteurs :

Et d’ailleurs, en parlant de bots, j’en ai vibe codé deux :

Conclusion

Cette nouvelle version de mon blog m’a conduit à explorer des terres inconnues. J’ai traversé le clivage causé par l’IA, et j’ai fini par embrasser le vibe coding pour moderniser mes expériences d’antan. Malgré ses défauts (et ceux de ses utilisateurs, concepteurs, promoteurs), l’informatique a ceci de particulier qu’elle comprime le temps : son évolution à une échelle sans précédent facilite la nostalgie rapide. En somme, elle nous fait vieillir plus vite.

De plus, le fait d’avoir traversé un nouveau siècle, mais aussi un nouveau millénaire, lui confère des propriétés uniques dans notre esprit : des usages très récents à l’échelle de l’histoire humaine passent du statut de standard mondial à l’obsolescence en moins de dix ans. Et l’IA met encore un coup d’accélérateur.

Je n’ai rien fait de spécial : j’ai mis à jour mon blog, comme des milliers de blogueurs à travers le monde à chaque instant. J’ai pourtant l’impression d’avoir relié mon passé et mon avenir. Je ne sais pas si l’IA causera notre perte ou sera notre salut, et le fait-même de se poser la question est troublant. Je n’aurais pas cru être amené à tant de métaphysique, simplement en mettant mon site à jour.

Je suis juste content de ne pas m’être laissé dépasser par l’IA.


  1. Humour par accumulation, dérision et absurdité. ↩︎