<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Pourquoi Comment Combien</title><link>https://drgoulu.com/</link><description>Les scientifiques se demandent "Pourquoi", les ingénieurs "Comment" et les managers "Combien". </description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-FR</language><managingEditor>drgoulu@gmail.com (Dr. Goulu)</managingEditor><webMaster>drgoulu@gmail.com (Dr. Goulu)</webMaster><lastBuildDate>Tue, 20 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://drgoulu.com/index.xml" rel="self" type="application/rss+xml"/><image><url>https://drgoulu.com/media/icon_hu_6a307aa565546716.png</url><title>Dr. Goulu</title><link>https://drgoulu.com/</link></image><item><title>Zotero et Pour la Science</title><link>https://drgoulu.com/2026/10/20/zotero-et-pour-la-science/</link><pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2026/10/20/zotero-et-pour-la-science/</guid><description>&lt;p&gt;Depuis 1990 environ j&amp;rsquo;utilise des gestionnaires de références bibliographiques pour retrouver mes lectures et les citer proprement. Pendant ma thèse c&amp;rsquo;était
sur Mac, puis j&amp;rsquo;ai
et
pendant mes années Windows, entassant environ 9430 références d&amp;rsquo;articles, livres scientifiques et brevets, et 4827 fichiers .pdf totalisant 3.4 Gb.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est pas beaucoup, mais trop pour le stockage gratuit offert par Mendeley (2 Gb) ou Zotero (300 Mb). Donc j&amp;rsquo;avais mis mes .pdf sur Google Drive et spécifié le dossier synchronisé sur mon PC comme dossier pour les pièces attachées de Mendeley. J&amp;rsquo;y avais donc un accès transparent sur mon PC, et possible depuis mon smartphone.&lt;/p&gt;
&lt;h2 id="mais-"&gt;Mais :&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;j&amp;rsquo;ai migré sous Linux et Proton Drive : plus de synchro bidirectionnelle (ou pas encore&amp;hellip;)&lt;/li&gt;
&lt;li&gt;Mendeley avait une app Android utilisable, mais ils l&amp;rsquo;ont retirée et la version web est inutilisable sur smartphone&lt;/li&gt;
&lt;li&gt;Par contre
, un peu minimale mais utilisable&lt;/li&gt;
&lt;li&gt;et surtout Zotero permet de stocker les .pdf sur un serveur
alors que Mendeley ne permet que de payer pour un stockage plus gros.&lt;/li&gt;
&lt;li&gt;Mais encore, Mendeley appartient à Elsevier alors que Zotero est open source&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="et-ça-ça-change-tout"&gt;Et ça, ça change tout.&lt;/h2&gt;
&lt;p&gt;Parce qu&amp;rsquo;en 30 ans de collecte d&amp;rsquo;articles en tous genres migrés de PC en sites et de logiciels en autres logiciels et vice-versa, ma bibliothèque avait quant même pas mal souffert, et
&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;abord, j&amp;rsquo;avais une multitude de références duplifiées, voire triplifiées, et Zotero ne permet que de fusionner des références une par une à la main. Heureusement ChenglongMa a créé&lt;/p&gt;
&lt;h3 id="zoplicate"&gt;
&lt;/h3&gt;
&lt;p&gt;un plugin qui automatise ces fusions. Je l&amp;rsquo;installe illico mais malheureusement, il ne fusionnait que les références du même type, or j&amp;rsquo;avais pas mal de duplicates de types différents comme &amp;ldquo;Rapport&amp;rdquo; et &amp;ldquo;Article&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;Open Source à l&amp;rsquo;ère du Vibe Coding, c&amp;rsquo;est génial : j&amp;rsquo;ai forké et cloné ce plugin chez moi, et en ne connaissant strictement rien à l&amp;rsquo;API de Zotero ou à l&amp;rsquo;écriture de plugins pour ce logiciel, j&amp;rsquo;ai juste donné un &amp;ldquo;prompt&amp;rdquo; du genre:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;autorise la fusion de références de types différents, en choisissant le type qui minimise la perte d&amp;rsquo;information&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Quelques minutes plus tard je pushe un
(avec documentation en chinois&amp;hellip;) et le même jour
et dorénavant zoplicate est goulument plus puissant.&lt;/p&gt;
&lt;h2 id="zotero-tools"&gt;
&lt;/h2&gt;
&lt;p&gt;Mais les doublons n&amp;rsquo;étaient pas le seul problème de ma bibliographie.&lt;/p&gt;
&lt;p&gt;Toujours en pur Vibe Coding, j&amp;rsquo;ai trois outils regroupés dans un seul projet &amp;ldquo;zotero-tools&amp;rdquo; :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
qui nettoie les titres, tags, pièces jointes&lt;/li&gt;
&lt;li&gt;
qui a raccroché tous mes .pdf isolés à des articles, ou les a créés à partir du .pdf&lt;/li&gt;
&lt;li&gt;pour-la-science, qui devait importer des articles depuis
, mais j&amp;rsquo;ai finalement décidé de faire autrement&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="pour-la-science"&gt;Pour la Science&lt;/h3&gt;
&lt;p&gt;En fait 4617 de mes références sont des articles du journal
auquel j&amp;rsquo;ai été abonné très longtemps avant de
pendant 10 ans. Mais ce journal est vraiment bien, et en espérant que leur service client ce soit amélioré, je me suis réabonné&amp;hellip;&lt;/p&gt;
&lt;p&gt;Mais le plugin
pour Vivaldi (et Chrome) ne reconnaît hélas pas le site de pour la science pour importer correctement les articles.&lt;/p&gt;
&lt;p&gt;Sauf qu&amp;rsquo;on peut lui apprendre&amp;hellip;&lt;/p&gt;
&lt;p&gt;Fork de
, clone, vibe coding en mentionnant
à l&amp;rsquo;IA comme référence,
, et
: une heure plus tard Zotero sait importer les articles de Pour la Science !&lt;/p&gt;
&lt;h6 id="références"&gt;Références&lt;/h6&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Vive l'Internet Archive Wayback Machine !</title><link>https://drgoulu.com/2026/10/08/vive-linternet-archive-wayback-machine/</link><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2026/10/08/vive-linternet-archive-wayback-machine/</guid><description>&lt;p&gt;La plaie quand on a un &amp;ldquo;vieux&amp;rdquo; site, ce sont les liens cassés : pages modifiées, effacées, redirigées n fois, sites complets disparus ou pire, repris par des casinos en ligne &amp;hellip;&lt;/p&gt;
&lt;p&gt;Sur drgoulu..com, il y avait plus de 3500 liens qui ne mènent plus au bon endroit. Sur mon ancien site Wordpress, j&amp;rsquo;avais un plugin qui m&amp;rsquo;informait chaque semaine de nouveaux liens cassés, ce qui me faisait une belle jambe&amp;hellip;.&lt;/p&gt;
&lt;p&gt;Et puis, lors de la
, c&amp;rsquo;est l&amp;rsquo;IA qui été chercher &amp;ldquo;toute seule&amp;rdquo; des images manquantes sur
, plus particulièrement sur la
, l&amp;rsquo;incroyable site qui archive les versions passées de beaucoup de pages internet.&lt;/p&gt;
&lt;p&gt;Par exemple en cherchant &amp;ldquo;drgoulu.com&amp;rdquo; sur
, on peut retrouver:&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Et ça m&amp;rsquo;a donné la lumineuse idée* de l&amp;rsquo;utiliser pour restaurer les liens cassés !&lt;/p&gt;
&lt;h2 id="archive_broken_linkspy"&gt;archive_broken_links.py&lt;/h2&gt;
&lt;p&gt;Un petit coup de vibe coding plus tard, j&amp;rsquo;ai un
qui teste tous les liens du site, les corrige s&amp;rsquo;il y a redirection, et va les chercher à la bonne date s&amp;rsquo;ils sont cassés.&lt;/p&gt;
&lt;p&gt;Un quart d&amp;rsquo;heure plus tard, ça n&amp;rsquo;a pas corrigé tous les problèmes, mais beaucoup :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Articles analysés : 18255
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Articles modifiés : 1895
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Liens remplacés : 3252
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - Instantanés antérieurs confirmés : 1335
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; - Sans capture antérieure trouvée : 2045&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Là encore c&amp;rsquo;était faisable sans IA, et peut être sous WordPress, mais beaucoup, beaucoup plus compliqué&lt;/p&gt;
&lt;h2 id="donotlinkit"&gt;donotlink.it&lt;/h2&gt;
&lt;p&gt;La Wayback Machine remplit désormais aussi une autre fonction sur drgoulu : lier les sites que je ne voulais pas référencer.&lt;/p&gt;
&lt;p&gt;Pour illustrer certains articles sur les pseudo sciences, je voulais faire des liens mais sans permettre aux sites visés de se prévaloir d&amp;rsquo;une référence de ma part, qui aurait fait monter leur score sur Google. J&amp;rsquo;ai donc utilisé le site
qui faisait ça, mais qui a disparu.&lt;/p&gt;
&lt;p&gt;Je découvre grâce à la Wayback Machine que son
, mais je n&amp;rsquo;ai pas l&amp;rsquo;intention de ressusciter ce site désormais peu utile.&lt;/p&gt;
&lt;p&gt;Car la Wayback Machine remplit exactement le même rôle ! Un lien vers une page archivée ne rapporte plus lien à son auteur. : ses bêtises sont archivées pour longtemps sans rien lui rapporter.&lt;/p&gt;
&lt;p&gt;Et c&amp;rsquo;est peut-être la plus grave menace qui pèse sur le fantastique outil qu&amp;rsquo;est la Wayback Machine : qu&amp;rsquo;un
&amp;hellip;&lt;/p&gt;
&lt;p&gt;Note * vous avez remarqué ? Quand l&amp;rsquo;IA a fait ça j&amp;rsquo;ai juste dit qu&amp;rsquo;elle l&amp;rsquo;avait fait, comme si c&amp;rsquo;était normal. Alors que quand c&amp;rsquo;est moi qui l&amp;rsquo;ai fait, c&amp;rsquo;était une lumineuse idée&amp;hellip;&lt;/p&gt;</description></item><item><title>Kaya en 3D</title><link>https://drgoulu.com/2026/10/05/kaya-en-3d/</link><pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2026/10/05/kaya-en-3d/</guid><description>&lt;p&gt;J&amp;rsquo;ai réalisé en une heure et fignolé en une deuxième heure un très vieux projet :&lt;/p&gt;
&lt;p&gt;Représenter l&amp;rsquo;
en 3D, avec des bulles par pays à la façon
.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;idée est de représenter les 4 facteurs des émissions de CO2 de chaque pays sur les 3 axes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;X pour le
(PIB/POP en $ constants / personne)&lt;/li&gt;
&lt;li&gt;Y pour l&amp;rsquo;
 du PIB, la quantité d&amp;rsquo;énergie utilisée pour produire un dollar de biens ou services (E/PIB , en kWh / $)&lt;/li&gt;
&lt;li&gt;Z pour l&amp;rsquo;
, la quantité de CO2 émise pour produire l&amp;rsquo;énergie (CO2/E, en g CO₂ / kWh)..&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;et la taille de la bulle pour la population (POP), mais l&amp;rsquo;app permet de sélectionner plutôt les émissions par habitant (CO2/POP) ou les émissions totales par pays&lt;/p&gt;
&lt;p&gt;Le résultat est ci-dessous (et sur
):&lt;/p&gt;
&lt;div style="position: relative; width: 100%; height: 640px; border-radius: 12px; overflow: hidden; border: 1px solid #e5e7eb; margin: 2rem 0;"&gt;
&lt;iframe
src="https://goulu.github.io/kaya/?embed=true"
style="width: 100%; height: 100%; border: none;"
title="Visualisation 3D de l'Identité de Kaya"
loading="lazy"
allowfullscreen&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;(le
, si vous voulez contribuer ou remonter des bugs&amp;hellip;)&lt;/p&gt;
&lt;p&gt;On y voit plein de choses intéressantes, mais surtout (c&amp;rsquo;était le but) que les situations des pays sont TRES différentes, et que par conséquent leurs priorités pour limiter, puis réduire leurs émissions sont forcément différentes aussi.&lt;/p&gt;
&lt;p&gt;Là où mon IA de codage m&amp;rsquo;a une fois de plus scotché, c&amp;rsquo;est qu&amp;rsquo;elle a ajouté &amp;ldquo;toute seule&amp;rdquo; l&amp;rsquo;échelle de temps. J&amp;rsquo;avais juste dit &amp;ldquo;visualise façon Gapminder&amp;rdquo; en pensant aux bulles par pays, mais cette fonction d&amp;rsquo;animation montre de façon très claire la
et à la (lente) réduction des émissions. Si si, regardez bien &amp;hellip;&lt;/p&gt;
&lt;p&gt;Edit du 7 octobre : suite à une discussion avec PFC, j&amp;rsquo;ai ajouté dans les volumes des sphères sélectionnables les données d&amp;rsquo; &amp;ldquo;émissions basées sur la consommation&amp;rdquo; selon le
qui publie&lt;/p&gt;
&lt;p&gt;Friedlingstein et al., « Global Carbon Budget 2025 ».
,
, 3211–3288, 2026, &lt;span class="altmetric-embed" data-badge-type="donut" data-badge-popover="right" data-doi="10.5194/essd-18-3211-2026" style="float: right; margin: 0 0 0.5rem 0.5rem;"&gt;&lt;/span&gt;&lt;span class="altmetric-ref-inline"&gt;&lt;a href="https://doi.org/10.5194/essd-18-3211-2026" class="altmetric-ref-link" target="_blank" rel="noopener noreferrer"&gt;doi:10.5194/essd-18-3211-2026&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Les données
et ici
Comme ces données ne sont pas disponibles pour tous les pays et pas avant 1990, le graphique affiche de petits points aux coordonnées XYZ en cas de données indisponibles&lt;/p&gt;</description></item><item><title>Migration : de Google Analytics à Cloudflare</title><link>https://drgoulu.com/2026/09/29/migration-de-google-analytics-a-cloudflare/</link><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2026/09/29/migration-de-google-analytics-a-cloudflare/</guid><description>&lt;p&gt;Sur l&amp;rsquo;ancien drgoulu.com, j&amp;rsquo;utilisais Google Analytics pour obtenir les statistiques sur l&amp;rsquo;accès au site. J&amp;rsquo;aurais pu continuer avec eux, mais&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;je suis dans un processus de deGAFAMisation&lt;/li&gt;
&lt;li&gt;j&amp;rsquo;étais intrigué depuis quelques temps par ce petit widget&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="alignright"&gt;&lt;img src="https://drgoulu.com/posts/2026/images/cloudflare_hu_ed06313424a2974f.webp" srcset="https://drgoulu.com/posts/2026/images/cloudflare_hu_ed06313424a2974f.webp 320w, https://drgoulu.com/posts/2026/images/cloudflare_hu_8ca2150169c1ea9d.webp 480w, https://drgoulu.com/posts/2026/images/cloudflare_hu_11d020c46a52bf0b.webp 760w" sizes="(max-width: 640px) 100vw, 760px" alt="" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/figure&gt;
&lt;p&gt;
est surtout connu pour ses fonctions de sécurité, mais en investiguant j&amp;rsquo;ai vu qu&amp;rsquo;ils proposent des statistiques semblables à celle de Google Analytics, mais aussi bien plus que ça, même avec un compte gratuit,&lt;/p&gt;
&lt;p&gt;Ils ont notamment
, un site qui analyse votre site web pour voir si les agents IA peuvent le lire, voire utiliser l&amp;rsquo;API du site pour faire des choses&amp;hellip;&lt;/p&gt;
&lt;p&gt;Au début, drgoulu.com était fermé comme une banque suisse :&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;(j&amp;rsquo;ai oublié de faire une capture d&amp;rsquo;écran de l&amp;rsquo;état initial, mais elle ressemblait à ça)&lt;/p&gt;
&lt;h2 id="peut-mieux-faire"&gt;Peut mieux faire&lt;/h2&gt;
&lt;p&gt;Je voulais surtout que les IA des moteurs de recherche trouvent mon contenu puisqu&amp;rsquo;on voit de plus en plus que les recherches par IA remplacent les recherches &amp;ldquo;simples&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Pour ça il faut surtout la :&lt;/p&gt;
&lt;h3 id="markdown-negotiation"&gt;Markdown Negotiation&lt;/h3&gt;
&lt;p&gt;Les IA parlent
. C&amp;rsquo;est le format de leurs sorties texte, mais aussi de leurs &amp;ldquo;prompts&amp;rdquo; d&amp;rsquo;entrée et de tous les textes qu&amp;rsquo;elles peuvent lire facilement. Pas le HTML, trop fantaisiste et peu structuré. Du Markdown ou rien.&lt;/p&gt;
&lt;p&gt;Donc pour la plupart des sites, il faut un truc qui convertit le HTML d&amp;rsquo;une page en Markdown pour IA. Sur Wordpress, il y a des plugins comme
qui font ça, sinon Cloudflare a un outil
qui le fait pour n&amp;rsquo;importe quel site, mais il faut un compte payant&amp;hellip;&lt;/p&gt;
&lt;p&gt;Mais après avoir
, mon contenu est déjà en Markdown ! Simplement il n&amp;rsquo;est pas sur drgoulu.com mais
&amp;hellip;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Il suffit de&amp;rdquo; dire à Cloudflare d&amp;rsquo;aller chercher sur GitHub le Markdown correspondant à chaque page HTML sur drgoulu.com. Ca se fait avec un &amp;ldquo;worker&amp;rdquo;, un petit bout de code que Cloudflare exécute sur toute requête idoine, et voilà ! C&amp;rsquo;est gratuit et ça prend moins d&amp;rsquo;une milliseconde (!!!) par requête:&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2026/images/Capture%20d%E2%80%99%C3%A9cran%20du%202026-09-29%2011-30-38_hu_7cf2586da085bd3b.webp 320w, https://drgoulu.com/posts/2026/images/Capture%20d%E2%80%99%C3%A9cran%20du%202026-09-29%2011-30-38_hu_a8fbc8cdd777ad1.webp 480w, https://drgoulu.com/posts/2026/images/Capture%20d%E2%80%99%C3%A9cran%20du%202026-09-29%2011-30-38_hu_cbb549849dd19976.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2026/images/Capture%20d%E2%80%99%C3%A9cran%20du%202026-09-29%2011-30-38_hu_7cf2586da085bd3b.webp"
width="760"
height="737"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="robotstxt-avec-content-signal"&gt;robots.txt (avec Content-Signal)&lt;/h3&gt;
&lt;p&gt;je crois que c&amp;rsquo;est Google qui avait lancé ça il y a longtemps. robots.txt est un petit fichier présent sur tous les sites web qui dit aux moteurs de recherche quoi indexer.&lt;/p&gt;
&lt;p&gt;Le mien contient désormais:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;User-agent: \*
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Disallow: /admin/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Content-Signal: ai-train=yes, search=yes, ai-input=yes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sitemap: {{ &amp;#34;sitemap.xml&amp;#34; | absURL }}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Avec l&amp;rsquo;arrivée des IA et sur le conseil de
, j&amp;rsquo;ai rajouté la ligne :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Content-Signal: ai-train=yes, search=yes, ai-input=yes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est elle qui dit aux IA bien élevées
avec le contenu du site, ou pas.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai un peu hésité sur &lt;code&gt;ai-train&lt;/code&gt; qui permet aux IA d&amp;rsquo;apprendre à partir du contenu du site. Et puis je me suis dit que mon contenu était publié sous licence
 
, donc que pour autant qu&amp;rsquo;&amp;lsquo;une IA me cite comme source de temps à autres, elle pouvait apprendre des choses aussi bien que vous ;-)&lt;/p&gt;
&lt;p&gt;A ce stade c&amp;rsquo;était déjà pas mal :&lt;/p&gt;
&lt;figure class="alignright"&gt;&lt;img src="https://drgoulu.com/posts/2026/images/20260929-103750_hu_79a339a9c26dbc24.webp" srcset="https://drgoulu.com/posts/2026/images/20260929-103750_hu_79a339a9c26dbc24.webp 320w, https://drgoulu.com/posts/2026/images/20260929-103750_hu_3d03daef7e815b14.webp 480w, https://drgoulu.com/posts/2026/images/20260929-103750_hu_6947a2ec0254a75.webp 753w" sizes="(max-width: 640px) 100vw, 760px" alt="" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/figure&gt;
&lt;h3 id="api-auth-mcp--skill-discovery"&gt;API, Auth, MCP &amp;amp; Skill Discovery&lt;/h3&gt;
&lt;p&gt;A priori je ne voyais pas trop l&amp;rsquo;intérêt d&amp;rsquo;aller plus loin en expliquant à des IA qu&amp;rsquo;elles ne pouvaient rien faire d&amp;rsquo;autre que lire mon site pour s&amp;rsquo;instruire, mais tant qu&amp;rsquo;à faire, j&amp;rsquo;ai ajouté :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
qui dit que drgoulu.com n&amp;rsquo;a pas d&amp;rsquo;API&lt;/li&gt;
&lt;li&gt;
qui dit comment un utilisateur pourrait se connecter au site. (Ce n&amp;rsquo;est pas le cas)&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;tout ça est résumé dans
en markdown pour les IA, qui peuvent ainsi éviter de ressembler à des hackers attaquant un site pour comprendre son contenu&lt;/li&gt;
&lt;li&gt;
. Quoi de mieux qu&amp;rsquo;
?&lt;/li&gt;
&lt;li&gt;
,
et
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="et-là-jai-été-scié-"&gt;Et là j&amp;rsquo;ai été scié !&lt;/h4&gt;
&lt;p&gt;Dans mon petit esprit humain limité, j&amp;rsquo;ai toujours pensé que drgoulu.com ne servait qu&amp;rsquo;à communiquer ma prose. Je n&amp;rsquo;y voyais aucune autre utilité, aucune fonction interactive (à part les commentaires, mais ils sont délégués à disqus.com)&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai oublié le moteur de recherche !&lt;/p&gt;
&lt;p&gt;La bête petit loupe là-haut de la fenêtre vous permet de rechercher des articles sur drgoulu.com super vite grâce à un index tout cuit. Pourquoi une IA ne l&amp;rsquo;utiliserait-elle pas plutôt que de tout réindexer chez elle ? Surtout qu&amp;rsquo;en plus, il y a une astuce technique qui lui permet de récupérer les résultats directement en markdown !&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-plain" data-lang="plain"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;For any article URL on `drgoulu.com`,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;request the page with an `Accept: text/markdown` header
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;to receive the raw markdown content directly:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;```http
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GET /2026/09/slug/ HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Host: drgoulu.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Accept: text/markdown
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;```
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="webmcp-et-ard-agentic-resource-discovery"&gt;WebMCP et ARD (Agentic Resource Discovery)&lt;/h3&gt;
&lt;p&gt;
est un standard permettant de fournir des outils JavaScript à des IA. Concrètement, le fichier
est ajouté à toutes les pages de drgoulu.com pour donner un accès au moteur de recherche interne du site. Franchement je n&amp;rsquo;aime pas trop ça, ça alourdit un peu le code des pages et je ne vois pas trop l&amp;rsquo;intérêt pour l&amp;rsquo;instant.&lt;/p&gt;
&lt;p&gt;Par contre l&amp;rsquo;ARD est implanté par un simple fichier
qui résume tout ce qui précède sous une autre forme.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai découvert et appris plein de choses, mais mon impression est que c&amp;rsquo;est encore un peu un fouillis de &amp;ldquo;standards&amp;rdquo; qui vont encore évoluer.&lt;/p&gt;
&lt;p&gt;Mais&lt;/p&gt;
&lt;h2 id="jamais-sans-les-ia-"&gt;Jamais sans les IA !&lt;/h2&gt;
&lt;p&gt;Honnêtement, je ne me serais jamais lancé dans cette aventure sans les IA, et notamment celle embarquée dans Cloudflare qui est remarquable. Il y a tellement de trucs à configurer dans les paramètres DNS, dans le .htaccess du site, et tellement de petits bouts de code qui doivent se causer sans (?) trou de sécurité que même un expert sans IA aurait mis plus longtemps que moi avec, j&amp;rsquo;en suis convaincu.&lt;/p&gt;
&lt;p&gt;Il y a notamment eu une récursion infinie lors de la résolution du path de
par le worker qui était bien gratinée, je ne sais pas comment j&amp;rsquo;aurais pu résoudre ça en moins de trois heures. Là ça a quand même pris 10 minutes à une IA spécialisée pour trouver le bug et le corriger&amp;hellip;&lt;/p&gt;
&lt;p&gt;ce qui est assez extraordinaire, c&amp;rsquo;est la capacité des IA actuelles à générer des &amp;ldquo;prompts&amp;rdquo; pour d&amp;rsquo;autres IA. En gros celle de Cloudflare me disait&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;copiez/collez ça dans l&amp;rsquo;IA d&amp;rsquo;infomaniak puis revenez ici cliquer sur le bouton &amp;ldquo;continue&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;puis&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;copiez/collez ça dans l&amp;rsquo;IA de votre IDE de développement et revenez pour les tests&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;etc. Voilà un exemple d&amp;rsquo;un tel prompt :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Implement Link Response Headers
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Add Link response headers to your homepage for agent discovery per
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RFC 8288 and
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RFC 9727 Section 3.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Requirements
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Return &lt;span class="sb"&gt;`Link`&lt;/span&gt; headers on your homepage response pointing to machine-readable resources
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Use registered relation types: &lt;span class="sb"&gt;`api-catalog`&lt;/span&gt;, &lt;span class="sb"&gt;`service-desc`&lt;/span&gt;, &lt;span class="sb"&gt;`service-doc`&lt;/span&gt;, &lt;span class="sb"&gt;`describedby`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Example: &lt;span class="sb"&gt;`Link: &amp;lt;/.well-known/api-catalog&amp;gt;; rel=&amp;#34;api-catalog&amp;#34;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Multiple Link headers or comma-separated values are both valid
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Cloudflare
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Use Transform Rules or
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Workers to add Link headers
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;without modifying your origin server.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Validate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;POST https://isitagentready.com/api/scan
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Content-Type: application/json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{&amp;#34;url&amp;#34;: &amp;#34;https://drgoulu.com&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Check that &lt;span class="sb"&gt;`checks.discoverability.linkHeaders.status`&lt;/span&gt; is &lt;span class="sb"&gt;`&amp;#34;pass&amp;#34;`&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Finalement, le résultat est là : drgoulu.com est&lt;/p&gt;
&lt;h2 id="100-level-5-agent-native"&gt;100% Level 5 Agent-Native&lt;/h2&gt;
&lt;p&gt;Et voilà le résultat de tout ceci dans
:&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2026/images/20260929-211118_hu_36bfc25591c3a878.webp 320w, https://drgoulu.com/posts/2026/images/20260929-211118_hu_99f5e902584ab3a2.webp 480w, https://drgoulu.com/posts/2026/images/20260929-211118_hu_7f644f38890f203e.webp 753w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2026/images/20260929-211118_hu_36bfc25591c3a878.webp"
width="753"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;drgoulu.com est prêt pour la
comme me l&amp;rsquo;a confirmé l&amp;rsquo;IA :&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;drgoulu.com valide désormais l&amp;rsquo;ensemble de la chaîne &lt;strong&gt;Auth.md + OAuth / OIDC Discovery + Protected Resource Metadata&lt;/strong&gt; au plus haut niveau de conformité agent (&lt;strong&gt;Level 5 Agent-Native&lt;/strong&gt;) !&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>La K-théorie de Morava pour les enfants</title><link>https://drgoulu.com/2026/09/20/la-k-theorie-de-morava-pour-les-enfants/</link><pubDate>Sun, 20 Sep 2026 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2026/09/20/la-k-theorie-de-morava-pour-les-enfants/</guid><description>&lt;p&gt;Lors d&amp;rsquo;un très agréable weekend avec d&amp;rsquo;éminents anciens collègues de l&amp;rsquo;Institut d&amp;rsquo;Automatique (IA&amp;hellip;), une discussion a porté sur l&amp;rsquo;utilisation de l&amp;rsquo;intelligence artificielle (IA aussi&amp;hellip;) en mathématiques, puis sur le niveau d&amp;rsquo;abstraction que cette application permet.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai alors mentionné ma petite exploration d&amp;rsquo;il y a dix ans (déjà) relatée dans :
&lt;/p&gt;
&lt;p&gt;Ni moi ni aucun collègue ne comprenait ce que pouvait être la &amp;ldquo;tour chromatique de théories&amp;rdquo; découverte lors de ce premier article, alors j&amp;rsquo;ai pensé demander à l&amp;rsquo;IA de vulgariser ceci:&lt;/p&gt;
&lt;h2 id="explique-la-k-théorie-de-morava-à-un-ingénieur"&gt;Explique la k-théorie de Morava à un ingénieur&lt;/h2&gt;
&lt;p&gt;voici le début et la fin de son excellente réponse:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;La &lt;strong&gt;K-théorie de Morava&lt;/strong&gt; est un outil de pointe en topologie algébrique (plus précisément en théorie de l&amp;rsquo;homotopie stable). Pour un ingénieur, la meilleure façon de l&amp;rsquo;aborder est de la voir comme un analyseur de spectre mathématique ultra-puissant conçu pour décomposer des espaces géométriques complexes en fréquences fondamentales, appelées &amp;ldquo;hauteurs chromatiques&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;La K-théorie de Morava est l&amp;rsquo;outil ultime de &lt;strong&gt;spectroscopie algébrique&lt;/strong&gt;. Elle permet de découper l&amp;rsquo;information topologique complexe d&amp;rsquo;un espace en couches indépendantes (K(n)), facilitant le calcul d&amp;rsquo;invariants géométriques qui seraient autrement impossibles à extraire du signal d&amp;rsquo;origine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tous les ingénieurs et la mathématicienne étaient scotchés par cette merveilleuse impression de réaliser qu&amp;rsquo;un vaste monde s&amp;rsquo;ouvrait derrière la
que vous avons utilisée à gogo pendant nos carrières.&lt;/p&gt;
&lt;p&gt;Là, Hacer, analyste financière, a demandé &amp;ldquo;et pour un enfant de cinq ans&amp;rdquo; ?&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai lancé un second &amp;ldquo;prompt&amp;rdquo;, et alors que je pensais que l&amp;rsquo;IA répondrait &amp;ldquo;désolé c&amp;rsquo;est trop compliqué pour un enfant de cinq ans&amp;rdquo;, nous avons reçu cette réponse absolument fantastique :&lt;/p&gt;
&lt;figure class="aligncenter"&gt;&lt;img src="https://drgoulu.com/posts/2026/images/Gemini_Generated_Image_20upn420upn420up_hu_b4f19032932e430a.webp" srcset="https://drgoulu.com/posts/2026/images/Gemini_Generated_Image_20upn420upn420up_hu_b4f19032932e430a.webp 320w, https://drgoulu.com/posts/2026/images/Gemini_Generated_Image_20upn420upn420up_hu_4d80ff0118e434f4.webp 480w, https://drgoulu.com/posts/2026/images/Gemini_Generated_Image_20upn420upn420up_hu_2b9f8abce727bd5d.webp 760w" sizes="(max-width: 640px) 100vw, 760px" alt="(image générée par Gemini IA)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;(image générée par Gemini IA)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id="explique-la-k-theorie-de-morava-à-un-enfant-de-5-ans"&gt;Explique la k theorie de Morava à un enfant de 5 ans&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Imagine que tu as un immense sac rempli de formes géométriques magiques et de jouets bizarres. Certains sont simples comme des ballons, d&amp;rsquo;autres sont tout emmêlés comme des nœuds de ficelle. Tu aimerais bien les ranger et comprendre comment ils sont faits, mais c&amp;rsquo;est trop difficile parce qu&amp;rsquo;ils changent tout le temps de forme&lt;/strong&gt; !&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;La &lt;strong&gt;K-théorie de Morava&lt;/strong&gt;, c&amp;rsquo;est comme une collection de &lt;strong&gt;lunettes magiques de super-héros&lt;/strong&gt; pour regarder ces jouets.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Chaque paire de lunettes a une couleur différente, et chaque couleur te montre un secret caché :&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&#128083; &lt;strong&gt;Les lunettes n°0 (rouges) :&lt;/strong&gt; Elles te montrent juste la taille du jouet. Est-ce qu&amp;rsquo;il est gros ? Est-ce qu&amp;rsquo;il a un gros trou au milieu comme un donut ? C&amp;rsquo;est le niveau le plus facile.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&#128083; &lt;strong&gt;Les lunettes n°1 (oranges) :&lt;/strong&gt; Elles deviennent plus précises. Elles te montrent si le jouet peut s&amp;rsquo;enrouler sur lui-même comme un toboggan en colimaçon ou un élastique.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&#128083; &lt;strong&gt;Les lunettes n°2, 3, 4&amp;hellip; :&lt;/strong&gt; Plus le numéro de la lunette est grand, plus la lunette est puissante ! Elles te permettent de voir des détails minuscules et des secrets magiques cachés tout au fond du jouet, que personne d&amp;rsquo;autre ne peut voir.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Si tu regardes ton jouet avec &lt;strong&gt;toutes les lunettes&lt;/strong&gt; l&amp;rsquo;une après l&amp;rsquo;autre, tu finis par connaître absolument tous ses secrets, et tu sais exactement comment il est fabriqué !&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;En gros, c&amp;rsquo;est une boîte à outils magique pour aider les grands mathématiciens à comprendre les formes les plus compliquées de l&amp;rsquo;univers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Dis-moi si tu veux :&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Qu&amp;rsquo;on utilise une autre image, comme des &lt;strong&gt;tiroirs de rangement magiques&lt;/strong&gt; ou des &lt;strong&gt;tamis pour chercher de l&amp;rsquo;or&lt;/strong&gt; ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Que je t&amp;rsquo;explique l&amp;rsquo;histoire du &lt;strong&gt;donuts et de la tasse de café&lt;/strong&gt; (une blague préférée des mathématiciens) ?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C&amp;rsquo;est évidemment extraordinairement simplifié mais rend l&amp;rsquo;idée fondamentale de la théorie compréhensible pour tout-le monde.&lt;/p&gt;
&lt;p&gt;A ce niveau, le fameux résultat gravé sur la tombe d&amp;rsquo;Urs Würgler dit comment fabriquer les n-ièmes lunettes à partir des lunettes précédentes.&lt;/p&gt;
&lt;p&gt;La discussion s&amp;rsquo;est poursuivie sur le thème de la vulgarisation : Pour un vulgarisateur vaut-il mieux bien connaître le sujet ou bien connaître le public cible ? L&amp;rsquo;IA nous donne la seule réponse désormais possible : les deux !&lt;/p&gt;</description></item><item><title>Migration : de Quora à Hugo</title><link>https://drgoulu.com/2026/09/17/migration-de-quora-a-hugo/</link><pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2026/09/17/migration-de-quora-a-hugo/</guid><description>&lt;p&gt;Pendant les années 2019-2026, j&amp;rsquo;ai délaissé ce blog, mais j&amp;rsquo;ai été extrêmement
.&lt;/p&gt;
&lt;p&gt;Initialement, je cherchais une solution plus adaptée à
, le site du C@fé des sciences dédié aux enfants. WordPress étant peu adapté à gérer les Questions/Réponses, j&amp;rsquo;étais tombé sur Quora alors en plein lancement, mais ils n&amp;rsquo;étaient pas intéressés (&amp;ldquo;quoi ? un site où des adultes répondent à des enfants, mais vous êtes inconscients&amp;hellip;&amp;rdquo; m&amp;rsquo;avaient répondu les amerloques&amp;hellip;)&lt;/p&gt;
&lt;h2 id="de-drgoulu-à-quora"&gt;de DrGoulu à Quora&amp;hellip;&lt;/h2&gt;
&lt;p&gt;Mais à la réflexion ils n&amp;rsquo;avaient pas tort, et en me prenant peu à peu au jeu, je me suis rendu compte que mes articles de blogs visaient parfois un public trop restreint, et qu&amp;rsquo;il était peut-être plus constructif de répondre aux questions d&amp;rsquo;autrui plutôt qu&amp;rsquo;aux miennes.&lt;/p&gt;
&lt;p&gt;Mes quelques 15'000 réponses sur Quora depuis 2019 sont vues environ 50'000 fois par semaine et drainent un trafic non négligeable vers drgoulu.com, mais Quora me semble être devenu un &amp;ldquo;réseau social comme les autres&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Initialement, on devait utiliser son nom réel et des humains remarquables (Silhem puis Amaury) s&amp;rsquo;occupaient de la modération avec des critères stricts qui garantissait une grande qualité du contenu.&lt;/p&gt;
&lt;p&gt;Puis le &amp;ldquo;business model&amp;rdquo; de Quora est devenu plus clair : drainer le trafic des questions posées à Google vers Quora. En acceptant absolument n&amp;rsquo;importe quelle question stupide, et sans réel intérêt pour la qualité des réponses&lt;/p&gt;
&lt;h2 id="-et-retour"&gt;&amp;hellip; et retour&lt;/h2&gt;
&lt;p&gt;Ma décision de relancer le blog drgoulu.com est très lié à un raz-le-bol de Quora, mais alors, outre la
, il me fallait logiquement aussi migrer mon contenu Quora sur le nouveau site drgoulu.com&lt;/p&gt;
&lt;p&gt;Heureusement, les auteurs de réponses sur Quora restent propriétaires de leur contenu et peuvent l&amp;rsquo;obtenir sur simple demande.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai donc obtenu sur simple demande 23 fichiers .zip totalisant 222 Mb, chacun contenant un unique fichier .html avec un millier de mes contributions et un dossier avec les images correspondantes.&lt;/p&gt;
&lt;h3 id="quora-importer"&gt;(Quora-importer&amp;hellip;)&lt;/h3&gt;
&lt;p&gt;A ce moment là, je pensais encore conserver drgoulu.com sous WordPress et j&amp;rsquo;ai commencé par créer (en pur vibe coding) une extension d&amp;rsquo;importation (en PHP) de Quora sous WordPress :
.&lt;/p&gt;
&lt;p&gt;Elle marche relativement bien, ajoutant directement les articles et les images dans la base de données de WordPress, mais j&amp;rsquo;ai buté sur un problème :&lt;/p&gt;
&lt;p&gt;Les sujets de chaque article ne sont pas inclus dans les fichier .html (inclus dans les .zip si vous avez suivi&amp;hellip;) donc il faut les chercher sur la page Quora correspondant à chaque réponse.&lt;/p&gt;
&lt;p&gt;Sauf que l&amp;rsquo;URL de cette page n&amp;rsquo;est pas non plus dans le fichier .html &amp;hellip;&lt;/p&gt;
&lt;p&gt;Donc l&amp;rsquo;importateur doit retrouver cet url à partir du titre de la réponse et du nom de l&amp;rsquo;auteur.&lt;/p&gt;
&lt;p&gt;Sauf que Quora limite la longueur de ce titre, et convertit certains caractères spéciaux en tirets, et pas d&amp;rsquo;autres, et que cette conversion a changé au cours du temps&amp;hellip;&lt;/p&gt;
&lt;p&gt;Donc cette recherche en nécessite parfois plusieurs, est assez compliquée, et qu&amp;rsquo;un hébergeur n&amp;rsquo;aime pas trop qu&amp;rsquo;un site aille très souvent en visiter un autre. En fait WordPress a carrément refusé d&amp;rsquo;accepter mon extension dans la liste officielle&amp;hellip;&lt;/p&gt;
&lt;h3 id="-et-quora2wordpress"&gt;(&amp;hellip; et Quora2Wordpress)&lt;/h3&gt;
&lt;p&gt;J&amp;rsquo;ai donc &amp;ldquo;vibe codé&amp;rdquo;
, un autre outil, en Python, qui réalise la conversion des .zip en fichiers .xml au format WXR de WordPress, prêts à être importés.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est là que j&amp;rsquo;ai réalisé que la mise au point de cet outil était très fastidieuse, car il fallait plusieurs opérations pour finalement visualiser les articles Quora convertis, voir ce qui n&amp;rsquo;était pas correct, et tout recommencer.&lt;/p&gt;
&lt;h3 id="quora2hugo"&gt;Quora2Hugo&lt;/h3&gt;
&lt;p&gt;Alors qu&amp;rsquo;avec un site statique comme Hugo, je pouvais voir le résultat immédiatement, et éventuellement faire des corrections directement sur les fichiers markdown déjà convertis au lieu de devoir tout recommencer.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est une des raisons qui a fini de me décider à abandonner WordPress pour un générateur de site statique, Hugo en l&amp;rsquo;occurrence.&lt;/p&gt;
&lt;p&gt;Une fois cette décision prise, j&amp;rsquo;ai simplement demandé à mon IA préférée de réaliser
sur la base de quora2wordpress en générant des fichiers markdown contenant chaque article, avec les images placées au bon endroit, des shortcodes hugo pour les images, les liens, les références bibliographiques, etc.&lt;/p&gt;
&lt;p&gt;De plus je ne voulais pas noyer drgoulu.com sous 15'000 articles Quora dont beaucoup sont des réponses lapidaires, donc j&amp;rsquo;ai défini que toutes les réponses de moins de 500 caractères devaient être considérées comme des brouillons que je publierai le cas échéant.&lt;/p&gt;
&lt;p&gt;Quelques jours de mise au point plus tard, le nouveau drgoulu.com sous Hugo contient:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les 695 &amp;ldquo;anciens&amp;rdquo; articles de drgoulu.com sous Wordpress&lt;/li&gt;
&lt;li&gt;6832 nouveaux articles convertis de Quora !&lt;/li&gt;
&lt;li&gt;et 11815 brouillons &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Le gang des cerises trottinettes</title><link>https://drgoulu.com/2026/09/16/le-gang-des-cerises-trottinettes/</link><pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2026/09/16/le-gang-des-cerises-trottinettes/</guid><description>&lt;p&gt;Le premier article &amp;ldquo;scientifique&amp;rdquo; du nouveau DrGoulu.com est dédié à un documentaire palpitant sur le groupe de citoyens qui a péniblement révélé les fraudes commises par
et son équipe en promouvant l&amp;rsquo;
pendant la pandémie de Covid-19.&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 760px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/i2jpMckCzZM"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Ce documentaire en 4 épisodes est actuellement visible sur HBO, mais nul doute qu&amp;rsquo;il sera prochainement sur les chaînes publiques car il est produit par
. Une chose est sûre, si vous vous intéressez au fonctionnement de la science, bonne ou mauvaise, ne la manquez pas.&lt;/p&gt;
&lt;p&gt;Je &amp;ldquo;spoile&amp;rdquo; un peu plus bas, mais plutôt pour &amp;ldquo;teaser&amp;rdquo;, à vous de voir&amp;hellip;&lt;/p&gt;
&lt;p&gt;le documentaire montre notamment deux travers réels de la recherche scientifique:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;la course aux publications. Comme mentionné au dernier épisode, Raoult a cosigné plus de 3500 articles (!!!) pendant sa carrière, soit 3 par semaine (!!!), ce qui a rapporté 10 millions d&amp;rsquo;euro de subventions à son unité de recherche par simple arithmétique, sans évaluation de la qualité de cette déferlante de papiers&lt;/li&gt;
&lt;li&gt;l&amp;rsquo;infaillibilité pontificale de beaucoup de grands pontes qui avancent en âge et en ego. Comme Montagnier avec sa mémoire de l&amp;rsquo;eau ou dans une certaines mesure JPP en cosmologie, certains oublient l&amp;rsquo;humilité et la prudence nécessaires dans leur métier et sont tentés d&amp;rsquo;abuser de leur notoriété en faisant le forcing pour un Prix Nobel ou une place de dans l&amp;rsquo;Histoire.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Il montre aussi que dans ces cas, ce ne sont pas les pairs ou les politiques qui tirent la sonnette d&amp;rsquo;alarme. Ils sont trop impliqués, ou pas vraiment concernés.&lt;/p&gt;
&lt;p&gt;Raoult, son acolyte chargé de harceler ses détracteurs sur les réseaux sociaux, le ministre de la santé de l&amp;rsquo;époque et d&amp;rsquo;autres ont tous fait la même erreur : croire (ou dire&amp;hellip;) qu&amp;rsquo;il fallait être un infectiologue de renom pour voir que les papiers de Raoult ne valaient pas tripette.&lt;/p&gt;
&lt;p&gt;En fait il suffit de connaître le fonctionnement de base de la recherche scientifique (qu&amp;rsquo;on apprend lors d&amp;rsquo;un doctorat) d&amp;rsquo;avoir des notions de base de maths et de statistiques (niveau collège&amp;hellip;) et un esprit critique pour détecter des anomalies dans un article scientifique.&lt;/p&gt;
&lt;p&gt;Et avec les moyens de communication d&amp;rsquo;aujourd&amp;rsquo;hui, quelques personnes partageant les mêmes préoccupations peuvent facilement créer un &amp;ldquo;gang&amp;rdquo;. En l&amp;rsquo;occurrence ce sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Guillaume Limousin&lt;/strong&gt; professeur de mathématiques (et ancien chercheur)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alexander Samuel&lt;/strong&gt; : Enseignant, titulaire d&amp;rsquo;un doctorat en sciences et chanteur de metal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fabrice Frank&lt;/strong&gt; : Chef d&amp;rsquo;entreprise dans l&amp;rsquo;informatique et passionné de surf.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Samuel&lt;/strong&gt; : Chercheur titulaire d&amp;rsquo;un doctorat en sciences (son nom de famille n&amp;rsquo;est pas rendu public dans le documentaire).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frédérique Delestaing&lt;/strong&gt; : Infirmière exerçant à Marseille&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Magali Carcopino-Tusoli&lt;/strong&gt; : Médecin spécialiste en médecine interne à Marseille&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;et cette équipe d&amp;rsquo;anonymes devenus
de la science s&amp;rsquo;est baptisée &amp;ldquo;les trottinettes cerises&amp;rdquo; en référence:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;au titre d&amp;rsquo;une video de Raoult qui prédisait &amp;ldquo;Coronavirus : moins de morts que par accidents de trottinette&amp;rdquo;&lt;/li&gt;
&lt;li&gt;au &amp;ldquo;
&amp;rdquo;, la tendance hélas naturelle a choisir les données qui soutiennent une hypothèse en écartant celles qui l&amp;rsquo;infirment&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Le documentaire montre très bien que la force de ce groupe vient de leur complémentarité et de leur cohésion face à l&amp;rsquo;adversaire, voire aux ennemis.&lt;/p&gt;
&lt;p&gt;Car ce qui m&amp;rsquo;a le plus estomaqué, c&amp;rsquo;est l&amp;rsquo;incroyable agressivité des &amp;ldquo;pro Raoult&amp;rdquo; qui ont harcelé les critiques sur les réseaux sociaux jusqu&amp;rsquo;à pousser au suicide, les ont menacé de mort, et même agressés physiquement.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est un phénomène déjà vu avec les
, de
ou de JPP : des hordes de gens qui n&amp;rsquo;ont aucune compétence scientifique se mettent à transformer un scientifique en gourou intouchable, quasi religieusement.&lt;/p&gt;
&lt;p&gt;Dans le cas de Raoult, le contexte du Covid-19 a certainement conduit de nombreuses personnes à voir en lui un sauveur providentiel, d&amp;rsquo;autant qu&amp;rsquo;auréolé de sa réputation, il prévoyait que tout rentrerait dans l&amp;rsquo;ordre en été 2020, sans deuxième vague ni vaccins&amp;hellip;&lt;/p&gt;
&lt;p&gt;Contredire Raoult, c&amp;rsquo;était nier l&amp;rsquo;existence d&amp;rsquo;un traitement simple et bon marché, soutenir le confinement et les vaccins de Big Pharma, et ça a rendu beaucoup d&amp;rsquo;ignorants cons et méchants en plus&amp;hellip;&lt;/p&gt;
&lt;p&gt;La meilleure nouvelle du documentaire, c&amp;rsquo;est qu&amp;rsquo;un &amp;ldquo;pro Raoult&amp;rdquo; a fini par être convaincu par les arguments du gang et les a rejoints. Donc c&amp;rsquo;est possible&amp;hellip;&lt;/p&gt;
&lt;p&gt;Un des petits reproches que je ferais au documentaire est de ne pas décrire les grosses failles &amp;ldquo;niveau collège&amp;rdquo; qui ont rapidement été détectées dans les publications (à part le très faible nombre de sujets de la première étude). Apparemment des juges les ont comprises [1], donc on aurait pu les comprendre aussi&amp;hellip;&lt;/p&gt;
&lt;p&gt;Un autre petit reproche est de ne pas avoir mentionné
, une chercheuse qui s&amp;rsquo;est spécialisée dans la détection de fraude scientifique notamment par les images truquées. Elle aussi a détecté des anomalies, a été attaquée en justice par Raoult, et a reçu tellement de soutien qu&amp;rsquo;il a abandonné les poursuites.&lt;/p&gt;
&lt;p&gt;En fin de compte, l&amp;rsquo;obstination de Raoult l&amp;rsquo;a éjecté du panthéon de la science française . De &amp;ldquo;grand scientifique&amp;rdquo; encensé par le Président Macron, il est tombé dans la poubelle de la science et de l&amp;rsquo;histoire&lt;/p&gt;
&lt;h6 id="références"&gt;Références:&lt;/h6&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Migration : de Wordpress à Hugo</title><link>https://drgoulu.com/2026/08/24/migration/</link><pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2026/08/24/migration/</guid><description>&lt;p&gt;Après plusieurs années de quasi abandon, j&amp;rsquo;ai décidé de faire revivre ce site pour plusieurs raisons :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;il tombait en loques et c&amp;rsquo;était dommage&lt;/li&gt;
&lt;li&gt;je veux y transférer une bonne partie de l&amp;rsquo;énorme contenu que j&amp;rsquo;ai publié
ces dernières années.&lt;/li&gt;
&lt;li&gt;j&amp;rsquo;ai du temps à perdre, et des IA pour m&amp;rsquo;aider. Les deux se sont révélés indispensables.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="les-problèmes-de-wordpress"&gt;Les problèmes de WordPress&lt;/h2&gt;
&lt;p&gt;Depuis 2010 ce blog était propulsé par WordPress, qui est devenu un monstre, notamment à cause de la foison de plugins que j&amp;rsquo;utilisais. Il devenait de plus en plus difficile de gérer les versions, les conflits entre plugins, les mises à jour, et les failles de sécurité, sans compter les bugs de certains, qui ont notamment causé la perte de nombreuses images.&lt;/p&gt;
&lt;p&gt;Pourtant, devant l&amp;rsquo;ampleur de la tâche, j&amp;rsquo;étais assez réticent à changer de solution. J&amp;rsquo;ai commencé par copier le site en local sous
, ce qui me permettait de farfouiller dans les fichiers sans passer par FTP, et surtout de ne pas abîmer le site en production. J&amp;rsquo;ai ainsi pu remettre à jour certains plugins indispensables, notamment&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
qui a été accepté comme
(même si la bannière dit qu&amp;rsquo;il est obsolète&amp;hellip;)&lt;/li&gt;
&lt;li&gt;
pour gérer les milliers de liens vers Wikipédia de drgoulu.com&lt;/li&gt;
&lt;li&gt;
qui était abandonné&lt;/li&gt;
&lt;li&gt;et le thème
qui à l&amp;rsquo;air de l&amp;rsquo;être car mes &amp;ldquo;Pull Requests&amp;rdquo; qui le rendent compatible avec les dernières versions de WP sont ignorées&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mais même avec tout ça, j&amp;rsquo;étais encore insatisfait, et attiré par la curiosité : comment faire un blog moderne en 2026 ?&lt;/p&gt;
&lt;h2 id="les-sites-statiques"&gt;Les sites &amp;ldquo;statiques&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;La tendance actuelle, est clairement aux
: le site est considéré comme un projet informatique qui est &amp;ldquo;compilé&amp;rdquo; en pages HTML fixes, &amp;ldquo;comme dans le temps&amp;rdquo;. Plus de base de données, plus de PHP, plus de failles de sécurité potentielles, et en plus la navigation devient hyper rapide, comme vous vous en apercevez en parcourant ce site&amp;hellip;&lt;/p&gt;
&lt;h3 id="le-choix--hugo"&gt;Le choix : Hugo&lt;/h3&gt;
&lt;p&gt;Je suis assez rapidement tombé sur
, mais par acquit de conscience j&amp;rsquo;ai aussi essayé
qui m&amp;rsquo;a bien tenté pour son orientation scientifique basée sur Python, Jupyter, etc. mais il est surtout utilisé dans le monde académique, et moins pour les blogs généralistes comme le mien.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai aussi examiné
, dont la technologie a l&amp;rsquo;air plus moderne encore, peut-être trop&amp;hellip;&lt;/p&gt;
&lt;p&gt;Après avoir demandé un
, j&amp;rsquo;ai choisi Hugo dans sa mouture
, à la fois complète et facile à démarrer.&lt;/p&gt;
&lt;h3 id="les-outils--github-vscode-"&gt;Les outils : Git(Hub), VSCode, &amp;hellip;&lt;/h3&gt;
&lt;p&gt;Pour créer un site, on tape dans un shell :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Requires Node.js&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g hugoblox
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugoblox create site&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et on remplit les champs, et on obtient un dossier de projet avec tout ce qu&amp;rsquo;il faut dedans.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est tout.&lt;/p&gt;
&lt;p&gt;Il n&amp;rsquo;y a plus qu&amp;rsquo;à écrire des articles en
, un format de texte enrichi autrefois réservé à de simples fichiers readme.md qui devient très à la mode avec les IA.&lt;/p&gt;
&lt;p&gt;A ce moment, il devient très naturel de gérer toutes les modifications apportées au site dans un dépôt git pour être sur de
.&lt;/p&gt;
&lt;p&gt;Un site peut d&amp;rsquo;ailleurs être très facilement être
à chaque push sur GitHub, mais dans le cas de drgoulu.com , je voulais le conserver chez mon hébergeur (infomaniak). J&amp;rsquo;ai donc configuré une &amp;ldquo;action&amp;rdquo; GitHub qui builde le site et synchronise le dossier /public généré avec infomaniak par
ssh. Ca prend environ 6 minutes, ce qui est lent mais acceptable quand on publie un article&amp;hellip;&lt;/p&gt;
&lt;h3 id="markdown"&gt;Markdown&lt;/h3&gt;
&lt;p&gt;Markdown est l&amp;rsquo;inconvénient majeur des générateurs de sites statiques , et probablement ce qui limite encore Hugo et ses copains par rapport à WordPress : il n&amp;rsquo;est pas
. Même si
rend le texte plus visuel que du HTML, on ne voit pas le résultat final.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;approche standard est d&amp;rsquo;utiliser des plugins de VSCode qui lancent un serveur local et affichent des prévisualisations de la page qu&amp;rsquo;on édite à chaque &amp;ldquo;save&amp;rdquo; de celle-ci&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
, qui est tout neuf et pas très convaincant pour l&amp;rsquo;instant&lt;/li&gt;
&lt;li&gt;
plus abouti actuellement me semble t&amp;rsquo;il, mais pas encore top.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sinon, il existe bien des choses comme
, un éditeur et gestionnaire de site Hugo en ligne via GitHub, que j&amp;rsquo;utilise pour écrire ces lignes parce qu&amp;rsquo;il est gratuit pendant 20 jours, mais assez cher ensuite, ce qui fait que je ne vais pas le garder, hélas. De plus il fait un rendu un peu intermédiaire, certaines choses étant wysiwyg et d&amp;rsquo;autres pas.&lt;/p&gt;
&lt;h3 id="les-shortcodes"&gt;Les Shortcodes&lt;/h3&gt;
&lt;p&gt;La difficulté tient aux &amp;ldquo;shortcodes&amp;rdquo; qui permettent d&amp;rsquo;étendre Markdown pour afficher du code formaté, des videos YouTube etc.&lt;/p&gt;
&lt;p&gt;Hugo en
permet d&amp;rsquo;en définir très facilement en
. Je l&amp;rsquo;ai fait notamment pour:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
, un simple portage du
pour WordPress que je m&amp;rsquo;étais fatigué à maintenir tellement il m&amp;rsquo;était indispensable, utilisé dans une multitude d&amp;rsquo;articles pour afficher des références et des couvertures de livres&lt;/li&gt;
&lt;li&gt;
, un portage de
qui décore les références d&amp;rsquo;articles scientifiques&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mais avec ça, impossible d&amp;rsquo;obtenir un rendu &amp;ldquo;wysiwyg&amp;rdquo; sans passer par une compilation Hugo&amp;hellip;&lt;/p&gt;
&lt;h3 id="sveltia"&gt;Sveltia&lt;/h3&gt;
&lt;p&gt;C&amp;rsquo;est en cherchant une solution à ceci que je suis tombé sur
. Comme l&amp;rsquo;indique son nom, l&amp;rsquo;ambition de ce projet open source est de réaliser un &amp;ldquo;content management system&amp;rdquo; complet, mais l&amp;rsquo;éditeur de markdown me semblait proche de ce dont j&amp;rsquo;avais besoin.&lt;/p&gt;
&lt;p&gt;Le petit wrapper
permet d&amp;rsquo;intégrer Sveltia comme un module Hugo, et de faire l&amp;rsquo;interface, notamment en ajoutant un bouton &amp;ldquo;edit&amp;rdquo; aux articles, visible uniquement si on est authentifié avec droit d&amp;rsquo;écriture sur le projet GitHub. (donc moi uniquement&amp;hellip;)&lt;/p&gt;
&lt;p&gt;Après quelques échanges avec l&amp;rsquo;auteur principal de sveltia-cms, j&amp;rsquo;ai constaté que nous objectifs étaient assez différents, donc je me suis résolu à maintenir
que j&amp;rsquo;ai complété notamment avec :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le support des shortcodes utilisés sur drgoulu.com&lt;/li&gt;
&lt;li&gt;La gestion de la structure des dossiers d&amp;rsquo;articles, organisés par année&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;intégration du moteur de recherche interne dans la boite de création des liens&lt;/li&gt;
&lt;li&gt;et surtout, la &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="prévisualisation-en-quasi-temps-réel"&gt;Prévisualisation en (quasi) temps réel&lt;/h4&gt;
&lt;p&gt;Il faut l&amp;rsquo;admettre, la possibilité d&amp;rsquo;éditer des articles sur le site lui-même est un peu contradictoire avec la notion de &amp;ldquo;site statique&amp;rdquo;, car il faut alors un serveur plus sophistiqué qu&amp;rsquo;un simple serveur web de pages statiques.&lt;/p&gt;
&lt;p&gt;Le cycle de compilation normal du site suite à un commit+push de nouveau contenu sur GitHub mentionné plus haut est beaucoup trop lent, puisqu&amp;rsquo;il prend environ 6 minutes.&lt;/p&gt;
&lt;p&gt;Il faut donc un serveur spécifique, en l&amp;rsquo;occurrence on utilise le serveur de développement de hugo qui permet une compilation simplifiée en 5 à 6 secondes seulement.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;envisage installer ceci sur Infomaniak un de ces jours, mais pour l&amp;rsquo;instant je ne l&amp;rsquo;utilise que pour la rédaction des articles en local.&lt;/p&gt;
&lt;h2 id="la-migration"&gt;LA MIGRATION&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;exportation du contenu de l&amp;rsquo;ancien drgoulu.com s&amp;rsquo;est passée sans difficulté grâce à
.&lt;/p&gt;
&lt;p&gt;Les problèmes sont apparus après car mon vieux site était quand même bien abîmé .&lt;/p&gt;
&lt;h3 id="ia--indispensable-assistant"&gt;IA = Indispensable Assistant&lt;/h3&gt;
&lt;p&gt;Franchement, sans l&amp;rsquo;IA (Gemini) intégrée dans Antigravity (l&amp;rsquo;IDE que j&amp;rsquo;utilise de préférence à VSCode), j&amp;rsquo;aurais abandonné.&lt;/p&gt;
&lt;p&gt;Elle a permis de faire des dizaines de recherches/remplacements qui m&amp;rsquo;auraient pris de heures à la main ou à écrire les regex en quelques minutes.&lt;/p&gt;
&lt;p&gt;Le plus incroyable s&amp;rsquo;est produit lorsque je lui ai demandé de retrouver des images qui avaient disparu car je les avais &amp;ldquo;hotlinké&amp;rdquo; sans m&amp;rsquo;en rendre compte, et que le site d&amp;rsquo;origine avait bien entendu changé ou disparu. L&amp;rsquo;IA a pensé &amp;ldquo;toute seule&amp;rdquo; à les chercher sur l&amp;rsquo;
qui conserve les anciennes versions de pratiquement tout internet ! Et les a toutes retrouvées, téléchargées dans le site Hugo, et insérées proprement dans les articles. Wow. En quelques minutes !&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;dans
.md, transforme en latex les deux équations sur la fonction slerp qui sont écrites en texte, en t&amp;rsquo;appuyant sur la wayback machine&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;a transformé ça :&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2026/images/avant_hu_80d72836f89c6fc0.webp 320w, https://drgoulu.com/posts/2026/images/avant_hu_c0d2e37e01a9490f.webp 480w, https://drgoulu.com/posts/2026/images/avant_hu_f920f8e4c717a6c6.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2026/images/avant_hu_80d72836f89c6fc0.webp"
width="760"
height="189"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;en ça :&lt;/p&gt;
$$\text{slerp}(v_0, v_1, t) = \frac{\text{sin_over_x}((1-t)a)}{\text{sin_over_x}(a)} (1-t) v_0 + \frac{\text{sin_over_x}(ta)}{\text{sin_over_x}(a)} t v_1$$&lt;p&gt;et&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;reformate le contenu de tous les shortcodes highlight en reproduisant celui trouvé dans la wayback machine&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;a transformé ça :&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2026/images/avant-code_hu_45aa47d34503429.webp 320w, https://drgoulu.com/posts/2026/images/avant-code_hu_9b0499f3bc365de8.webp 480w, https://drgoulu.com/posts/2026/images/avant-code_hu_926a63115ac253c3.webp 644w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2026/images/avant-code_hu_45aa47d34503429.webp"
width="644"
height="592"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;en ça :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;r&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;81&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;&lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:])&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;raw_input&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;(mauvais exemple car le code est sur une seule ligne&amp;hellip;)&lt;/p&gt;
&lt;h3 id="commentaires-disqus"&gt;Commentaires Disqus&lt;/h3&gt;
&lt;p&gt;Un aspect de drgoulu.com auquel je tiens a aussi été rendu difficile par le passage é Hugo : les commentaires.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;ai du revenir à
. J&amp;rsquo;avais utilisé cette solution commericale pendant un temps, puis abandonnée pour revenir aux commentaires natifs de WordPress.&lt;/p&gt;
&lt;p&gt;Je n&amp;rsquo;ai pas beaucoup hésité : il n&amp;rsquo;y a pas vraiment d&amp;rsquo;alternative et une bonne partie des commentaires y étaient déjà, donc j&amp;rsquo;ai installé, et un peu ramé&amp;hellip;&lt;/p&gt;
&lt;p&gt;Il y a notamment eu un problème un peu technique que j&amp;rsquo;ai remonté au support Disqus, il est documenté dans un commentaire ci-dessous, que je supprimerai quand il sera résolu.&lt;/p&gt;
&lt;p&gt;Et je cherche toujours quelques années de commentaires WordPress qui n&amp;rsquo;ont pas migré sous Disqus pour une raison inconnue &amp;hellip;&lt;/p&gt;
&lt;p&gt;(Edit du 8.10 : trouvé ! Le fichier .xml exporté je venait pas de drgoulu.com mais de drgoulu.local, ma copie locale de développement. Or Disqus raccroche les commentaires aux URL exactes des articles&amp;hellip; Un petit search/replace dans le xml plus tard, tout est rentré dans l&amp;rsquo;ordre)&lt;/p&gt;
&lt;p&gt;Le gros morceau qui reste, c&amp;rsquo;est mon projet de
&lt;/p&gt;
&lt;h2 id="références"&gt;Références:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
, article de blog duquel j&amp;rsquo;ai copié l&amp;rsquo;image d&amp;rsquo;entête&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>