Nouvelle version du blog

Illustration par DALL·E

  1. From scratch
  2. Avec de l’aide
    1. Pour l’esthétique
    2. Pour le code
    3. Pour la rédaction
  3. Quelques détails
  4. Feuille de route
  5. Conclusion

From scratch

Je suis parti d’une feuille blanche. Avec la version précédente, j’ai imité — essayé de transposer — le fonctionnement du générateur de site statique Hugo. Je ne me suis pas forcé à écrire quelque chose de distribuable : le but était justement de faire quelque chose de très personnel (et c’est toujours le cas). Mais même sans cette contraire, le fonctionnement spécifique de ce genre d’applications ne me convient pas.

Je suis un développeur web, et imiter Hugo ne faisait que tendre vers une tentative d’application Frankenstein, à moitié pour la console et à moitié pour le web. Je me rends compte maintenant à quel point c’est lourd et pénible, alors que, grosso-modo, on prend du Markdown en entrée et du HTML en sortie, et je n’ai même pas besoin de faire la conversion à la main…

Donc, je repars de rien, et j’aboutis à peu près à six fichiers dans lesquels se trouve l’essentiel de mon code. J’ai dû réduire d’au moins 75% ma base de code, tout en la rendant plus conforme à ce que j’ai l’habitude de développer avec Laravel.

Avec de l’aide

Vous n’êtes pas sans savoir qu’en ce moment, j’explore l’Intelligence Artificielle Générative, et qu’en plus, j’ai pris un abonnement payant à ChatGPT. L’occasion de créer un GPT personnalisé, dédié à mon blog. J’y ai trouvé exactement ce dont j’avais besoin : l’inspiration. Mieux : ça m’a rassuré sur certains points que je détaillerai plus loin.

Pour l’esthétique

Comprenez bien que je ne prétends pas avoir réalisé un beau site, par contre, il me correspond encore un peu plus que le précédent. Et c’est en grande partie à DALL·E que je le dois.

Je disais dans mes réflexions sur Leonardo.ai que l’IA pouvait être considérée comme un pont entre les arts, et avec de la patience et une meilleure compréhension de la façon dont tout ça fonctionne, à force d’essais et d’erreurs, j’ai fini par obtenir de DALL·E un logo qui me convient à la perfection. Cependant, je ne dois pas créditer que DALL·E pour ce logo, mais aussi mon épouse : c’est elle qui a eu l’idée d’un prompt pour obtenir ce résultat (même si j’ai fait quelques ajustements par la suite).

En tant que logo rond, je vais pouvoir m’en servir comme avatar, et il ne dénote pas trop une fois réduit en favicon. De plus, ça m’a permis d’essayer une disposition que je n’avais encore jamais tentée, avec les liens autour du logo, et je suis très satisfait du résultat.

En outre :

  • On devrait rapidement voir la référence à Jurassic Park sans pour autant avoir copié honteusement le logo d’origine
  • Le T. rex est “réaliste”, c’est-à-dire qu’il a le bon nombre de pattes et de doigts…
  • Il a exactement l’attitude que je voulais retranscrire : sérieux, concentré, mais jovial malgré tout
  • Les couleurs sont exactement celles que je cherchais
  • Mes initiales apparaissent correctement ; c’est peut-être contre-intuitif, mais tout ce qui est textuel semble assez délicat à produire dans une image

ChatGPT m’a aussi aidé pour la sélection de couleurs de l’ensemble du site, et quelques règles CSS qui sortent un peu de mon champ de compétence. Je le répète assez souvent : je n’ai aucun talent pour tout ce qui est graphisme et design, et ChatGPT a été très créatif à ma place. Là aussi, je suis très satisfait du résultat, même s’il y aura probablement des retouches à faire ici ou là et ultérieurement.

Enfin, j’ai décidé que tous mes articles auront leur propre image d’en-tête. L’occasion pour moi d’entraîner mon ChatGPT personnalisé, et de m’entraîner moi à communiquer avec lui.

Pour le code

Je suis assez bluffé par les compétences de ChatGPT en ce qui concerne la production de code. Moyennant quelques informations basiques (”je développe avec Laravel”, ce genre de choses), il me produit du code totalement approprié, habituellement juste, bien structuré, documenté (mais il faut le lui préciser) et lisible. C’était assez rare que j’ai besoin de repasser derrière un copier-coller de ce qu’il produisait.

Je lui ai surtout demandé son avis pour des choses un peu complexes, ou pour lesquelles je me doutais qu’il existait une façon de faire sans pour autant parvenir à mettre le doigt dessus. En détaillant suffisamment mes questions, ses solutions s’avèrent doublement satisfaisantes :

  1. elles sont justes
  2. elles sont originales

Grâce à ses réponses, j’ai appris, par exemple que je pouvais travailler assez facilement avec des colonnes qui stockent des données en JSON dans une base PostgreSQL. Je savais que je pouvais faire des trucs sympas, mais j’ignorais que j’avais cette puissance directement à portée de main avec Eloquent

Pour tout dire, je pensais que ChatGPT allait me proposer des solutions basiques, du genre récupérer toutes les pages et tester le JSON pour faire ce dont j’ai besoin en pur PHP, ce qui est très loin d’être optimal. Mais, finalement, la qualité du code proposé est d’un niveau bien supérieur à ce que je craignais, et c’est tant mieux.

Il y a toutefois quelques grandes limitations qui, pour l’heure, me rassurent quelque peu sur le métier de développeur.

Principalement, il n’est pas vraiment envisageable de faire les choses en grand. Redoutable pour refactorer quelques méthodes, voire une classe complète, ChatGPT semble un peu plus dans l’embarras quand j’essaye de lui demander de refactorer plusieurs classes en même temps, avec l’objectif de limiter les répétitions de code. Là, il avoue lui-même que c’est une opération trop complexe pour lui (alors que mes classes sont tout à fait modestes).

Il lui manque une capacité à avoir une vue d’ensemble. Ça, pour le moment, cela reste l’apanage du développeur. Ouf.

Je note aussi qu’il ne gère pas bien les négations (”je ne veux pas de texte dans l’image” va immanquablement produire une image avec du texte…). Au contraire de Leonardo.ai qui a bien prévu le coup avec ses prompts négatifs, ce qui confirme l’intérêt d’utiliser plusieurs outils de ce type afin d’accomplir des tâches spécifiques.

Pour la rédaction

Dans le but de faire des liens entre des films et des séries, je rajoute dans le Front Matter de mes articles les listes d’acteurs et de personnages (mais aussi des dinosaures, quand applicable…). C’est incroyablement rébarbatif, parce que ça consiste à faire des copier-coller de la Wikipédia, d’abord pour les acteurs, ensuite pour les personnages, etc.

Je pourrais utiliser l’API de Wikidata et faire un truc à moitié dégueulasse, mais je peux aussi demander à ChatGPT de me lister les acteurs du film (ou les voix du jeu vidéo, ou les rédacteurs d’un livre), avec leur personnage, ainsi que les contributeurs tels que les scénaristes, metteurs en scène, etc. le tout formaté en YAML, et il le fait parfaitement bien.

Je ne l’ai pas encore mis en pratique pour différentes raisons. En revanche, je dispose maintenant de l’infrastructure de code et esthétique pour le faire, ça fait donc partie de ma feuille de route.

Quelques détails

Je ne vais pas tout décrire de la nouvelle version du site. Sachez simplement que :

  • Il n’y a toujours pas la moindre ligne de javascript
  • Il n’y a toujours pas besoin du moindre cookie
  • Je ne génère pas la moindre statistique : je ne sais pas combien vous êtes à me lire, ni le temps que vous restez sur le site, ni aucune autre métrique que ce soit
  • Je suis toujours aussi respectueux de mes visiteurs qu’avant : je n’ai pas vendu mon âme au diable en voulant monétiser ou en intégrant de l’IA
  • Je reste l’auteur de mes articles, ChatGPT ne me vient en aide que pour des détails, comme la liste des acteurs d’un film, ou pour vous faire part d’anecdotes, ou pour générer des images d’en-tête
  • Mon blog ne va pas devenir un ramassis de pubs ou de contenu auto-généré, et ce n’est pas seulement pour vous, mais aussi pour ma réputation

Feuille de route

  • Améliorer l’affichage des collections en permettant de choisir successivement une marque puis une gamme, et en affichant les identifiants des objets collectionnés
  • Ajouter des wishlists aux collections, afin d’identifier rapidement ce qui me manque
  • Diverses améliorations esthétiques que je juge mineures et qui seront faites au fil de l’eau

Conclusion

Comme d’habitude : peinture fraîche. N’hésitez pas à me faire part de vos commentaires !