<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>BisonBlog</title>
      <link>https://bison-blog-six.vercel.app</link>
      <description>Blog technique de Joseph Humbert — développement, self-hosting, Linux et IA appliquée.</description>
      <generator>Zola</generator>
      <language>fr</language>
      <atom:link href="https://bison-blog-six.vercel.app/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Wed, 14 Oct 2026 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Comment j&#39;ai codé une application Flutter pour ma Kindle en une matinée avec Open Code</title>
          <pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate>
          <author>Joseph Humbert</author>
          <link>https://bison-blog-six.vercel.app/blog/application-flutter-kindle-opencode/</link>
          <guid>https://bison-blog-six.vercel.app/blog/application-flutter-kindle-opencode/</guid>
          <description xml:base="https://bison-blog-six.vercel.app/blog/application-flutter-kindle-opencode/">&lt;p&gt;Hier soir, je lisais sur ma &lt;strong&gt;Kindle&lt;/strong&gt; des articles compilés dans un e-book pour limiter au maximum le temps passé sur mon téléphone — une habitude qui découle de &lt;a href=&quot;/blog/la-friction-salutaire/&quot;&gt;La friction salutaire&lt;/a&gt;. Et évidemment, ça n’a pas raté : en pleine lecture, je tombe sur un lien vers un autre article passionnant.&lt;/p&gt;
&lt;p&gt;Pas de connexion sur la liseuse à ce moment-là. Je sors mon téléphone pour chercher la page, mais je sais très bien comment ça se termine : je ne lis jamais l’article en question et je me perds pendant un quart d’heure à papillonner sur l’écran. C’est un piège récurrent dès qu’un lien m’intéresse en pleine session de lecture.&lt;/p&gt;
&lt;p&gt;Pour couper court à ça, j’ai voulu un truc simple : une application de bookmarks qui automatise l’envoi de ces contenus directement vers ma Kindle pour les lire plus tard, au calme et hors-ligne.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Ce matin au réveil, j’ouvre mon assistant préféré dans mon terminal : &lt;strong&gt;Open Code&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Je démarre avec une description assez basique du projet et une interface minimale en &lt;strong&gt;Flutter&lt;/strong&gt;. Je lui demande d’effectuer des recherches préalables, ce qu’il fait sans broncher. J’active ensuite la compétence &lt;strong&gt;« Grill Me »&lt;/strong&gt; pour qu’il me passe au grill : une série de questions ciblées pour stress-tester le besoin et poser tous les détails avant de coder.&lt;/p&gt;
&lt;p&gt;Puis je lui impose mes consignes habituelles :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Travailler en TDD (&lt;em&gt;Test-Driven Development&lt;/em&gt;)&lt;/strong&gt; : rédiger les tests avant le code pour qu’il valide un maximum de choses par lui-même ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Initialiser le dépôt Git&lt;/strong&gt; et commiter régulièrement ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Déployer une première release&lt;/strong&gt; dès que tous les tests passent et que l’app tourne.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;Résultat : en seulement &lt;strong&gt;trois allers-retours&lt;/strong&gt; (trois versions de test), l’application était totalement fonctionnelle.&lt;/p&gt;
&lt;p&gt;Le design correspond exactement à ce que je voulais. L’expérience utilisateur reste perfectible, certaines finitions méritent d’être peaufinées et j’ai déjà plein d’idées pour la suite, mais le cœur du système est là et tourne parfaitement. En cumulé, le modèle a bien dû mouliner 2 h 30, mais le résultat est là : une application impeccable sur mon téléphone Android, prête à l’emploi.&lt;/p&gt;
&lt;p&gt;Le code source et la release sont disponibles ici :&lt;br /&gt;
👉 &lt;a rel=&quot;external&quot; href=&quot;https://github.com/Tahlasandale/articles-kindle&quot;&gt;GitHub - Tahlasandale/articles-kindle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si vous possédez une &lt;strong&gt;Kindle&lt;/strong&gt;, un &lt;strong&gt;compte Google&lt;/strong&gt; et un &lt;strong&gt;appareil Android&lt;/strong&gt;, n’hésitez pas à tester l’outil et à me partager vos retours ou vos idées de fonctionnalités !&lt;/p&gt;
</description>
      </item>
      <item>
          <title>Les ordinateurs qui me font rêver</title>
          <pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate>
          <author>Joseph Humbert</author>
          <link>https://bison-blog-six.vercel.app/blog/ordinateurs-qui-font-rever/</link>
          <guid>https://bison-blog-six.vercel.app/blog/ordinateurs-qui-font-rever/</guid>
          <description xml:base="https://bison-blog-six.vercel.app/blog/ordinateurs-qui-font-rever/">&lt;p&gt;C’est un peu ma liste au Père Noël des ordinateurs qui me font rêver, des beaux Mac aux vieux Thinkpads en passant par les machines conçues pour durer.&lt;/p&gt;
&lt;h2 id=&quot;sommaire&quot;&gt;Sommaire&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bison-blog-six.vercel.app/blog/ordinateurs-qui-font-rever/#commercial-les-mac&quot;&gt;Commercial : les Mac&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bison-blog-six.vercel.app/blog/ordinateurs-qui-font-rever/#mac-intel&quot;&gt;Mac Intel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bison-blog-six.vercel.app/blog/ordinateurs-qui-font-rever/#mac-silicon-recents&quot;&gt;Mac silicon / récents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bison-blog-six.vercel.app/blog/ordinateurs-qui-font-rever/#niche-les-pc&quot;&gt;Niche : les PC&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bison-blog-six.vercel.app/blog/ordinateurs-qui-font-rever/#thinkpads-et-autres&quot;&gt;Thinkpads et autres&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bison-blog-six.vercel.app/blog/ordinateurs-qui-font-rever/#ordinateurs-concus-pour-durer&quot;&gt;Ordinateurs conçus pour durer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;commercial-les-mac&quot;&gt;Commercial : les Mac&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Très fan des Mac depuis que j’en ai utilisé un en stage et que j’ai utilisé un MacBook Air de 2015 en daily.&lt;/li&gt;
&lt;li&gt;Ce sont de beaux objets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;mac-intel&quot;&gt;Mac Intel&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Les Mac Intel vont vite ne plus coûter cher, et on pourra les passer sous Linux en gardant ces beaux objets avec des composants fiables (sauf les batteries).&lt;/li&gt;
&lt;li&gt;J’ai donc un intérêt pour toutes les gammes de Mac Intel i5 et i7 : MacBook, iMac et Mac mini.&lt;/li&gt;
&lt;li&gt;L’idée : les passer sous un Linux ultra léger et en faire des machines de productivité tournées principalement vers une utilisation en terminal.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Même démarche que dans &lt;a href=&quot;/blog/la-friction-salutaire/&quot;&gt;La friction salutaire&lt;/a&gt; : s’approprier une belle machine au lieu de la jeter.&lt;/p&gt;
&lt;h3 id=&quot;mac-silicon-recents&quot;&gt;Mac silicon / récents&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Les Mac avec des puces Apple silicon restent dingues en termes de performances. Les Mac M1 me semblent suffisants pour mon usage.&lt;/li&gt;
&lt;li&gt;Je suis surtout intéressé par le MacBook de cette gamme, pour profiter de la puissance et de la portabilité, idéalement avec l’écran le plus petit possible (ultraportabilité).&lt;/li&gt;
&lt;li&gt;Très intéressé également par le MacBook Neo, pour bénéficier de macOS à petit prix. Encore une fois, mon utilisation d’un ordinateur est vraiment tranquille : Firefox, Obsidian, VS Code, LocalSend, Syncthing, explorateur de fichiers, gestionnaires d’écran, de Bluetooth et de Wi-Fi, terminal, et des outils TUI et CLI à foison.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je détaille ca dans &lt;a href=&quot;/blog/2026-10-09-mes-outils-bureautiques-pour-ne-plus-dependre-des-gafam/&quot;&gt;mes outils bureautiques&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;niche-les-pc&quot;&gt;Niche : les PC&lt;/h2&gt;
&lt;h3 id=&quot;thinkpads-et-autres&quot;&gt;Thinkpads et autres&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Des vieux ordinateurs soi-disant obsolètes, mais construits à l’épreuve du temps.&lt;/li&gt;
&lt;li&gt;Pas chers sur Leboncoin ou eBay.&lt;/li&gt;
&lt;li&gt;Un hobby : bidouiller et optimiser son système pour son usage.&lt;/li&gt;
&lt;li&gt;Mon daily driver est une machine de ce genre.&lt;/li&gt;
&lt;li&gt;Pour la plupart des gens, avec un Linux léger, ça suffit à leur usage quotidien, et c’est carré.&lt;/li&gt;
&lt;li&gt;Pour moi, ça suffit à mon usage de dev, alors imaginez pour une bande de gens.&lt;/li&gt;
&lt;li&gt;Exploiter la puissance des outils TUI, et la satisfaction de naviguer sans utiliser sa souris : sérieux, c’est de la frappe, branchez-vous.&lt;/li&gt;
&lt;li&gt;Pour moi, c’est une mine d’or :
&lt;ul&gt;
&lt;li&gt;Une vieille tour peut devenir votre serveur, moins cher qu’un NAS dédié mais tout aussi fonctionnel. C’est exactement le basculement que j’ai fait dans &lt;a href=&quot;/blog/le-reveil-de-la-bete/&quot;&gt;Le Réveil de la bête&lt;/a&gt;, où une tour de récupération a pris la place du Mac noyé.&lt;/li&gt;
&lt;li&gt;Un PC obsolète sera plus puissant qu’un Raspberry Pi, mais ne permettra pas tous ses usages.&lt;/li&gt;
&lt;li&gt;Un vieux PC portable bien configuré peut devenir votre daily driver et vous fournir une UX de dingue : vous vous êtes taillé un outil sur mesure, et la difficulté de l’apprentissage rend la satisfaction de l’utilisation simplement incroyable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Au sujet de la récupération de vieux pc: &lt;a href=&quot;/blog/sauvetage-express-dual-boot-optimplex/&quot;&gt;Sauvetage express : dual boot Windows 10 / Debian 13&lt;/a&gt;, et &lt;a href=&quot;/blog/from-bouse-to-tank/&quot;&gt;From bouse to tank&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;ordinateurs-concus-pour-durer&quot;&gt;Ordinateurs conçus pour durer&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Plus niche et plus cher, mais intéressant.&lt;/li&gt;
&lt;li&gt;Globalement le même prix qu’un Mac : environ 1 000 €.&lt;/li&gt;
&lt;li&gt;Conçus pour être réparables et extensibles, et ça, c’est bien de ouf.&lt;/li&gt;
&lt;li&gt;Souvent conçus par des passionnés, donc SAV réactifs et machines bien pensées.&lt;/li&gt;
&lt;li&gt;Composants modernes et à jour, mais remplaçables quand ils deviendront obsolètes.&lt;/li&gt;
&lt;li&gt;Très intéressant si vous avez l’usage de la puissance de ces machines, et l’argent, et/ou la passion de créer votre environnement de travail vous-même.&lt;/li&gt;
&lt;li&gt;Exemples :
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://frame.work/fr/fr&quot;&gt;Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://mntre.com/reform.html&quot;&gt;MNT Reform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Les Pinebook et Pinebook Pro de &lt;a rel=&quot;external&quot; href=&quot;https://pine64.org/devices/&quot;&gt;Pine64&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Les PC de &lt;a rel=&quot;external&quot; href=&quot;https://puri.sm/products/&quot;&gt;Purism&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://fr.starlabs.systems/&quot;&gt;Star Labs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://www.tuxedocomputers.com/&quot;&gt;Tuxedo Computers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Mes notes à ce sujet : ces machines n’ont pas tout à fait la même philosophie que celle de ce gars (&lt;a rel=&quot;external&quot; href=&quot;https://ploum.net/&quot;&gt;Ploum&lt;/a&gt;) — dont j’ai déjà parlé dans &lt;a href=&quot;/blog/la-friction-salutaire/&quot;&gt;La friction salutaire&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;pour-aller-plus-loin&quot;&gt;Pour aller plus loin&lt;/h2&gt;
&lt;p&gt;Si cette dernière partie vous parle, allez lire les deux articles de Ploum qui m’ont fait réfléchir à tout ça :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://ploum.net/the-computer-built-to-last-50-years/&quot;&gt;The computer built to last 50 years&lt;/a&gt; (2021)&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://ploum.net/2022-12-03-reinventing-how-we-use-computers.html&quot;&gt;Reinventing How We Use Computers&lt;/a&gt; (2022)&lt;/li&gt;
&lt;/ul&gt;
</description>
      </item>
      <item>
          <title>Mes outils bureautiques pour ne plus dépendre des GAFAM</title>
          <pubDate>Fri, 09 Oct 2026 00:00:00 +0000</pubDate>
          <author>Joseph Humbert</author>
          <link>https://bison-blog-six.vercel.app/blog/mes-outils-bureautiques-pour-ne-plus-dependre-des-gafam/</link>
          <guid>https://bison-blog-six.vercel.app/blog/mes-outils-bureautiques-pour-ne-plus-dependre-des-gafam/</guid>
          <description xml:base="https://bison-blog-six.vercel.app/blog/mes-outils-bureautiques-pour-ne-plus-dependre-des-gafam/">&lt;p&gt;Comme vous le savez, pour ce qui est de la bureautique, on est presque toujours logé à la même enseigne : soit coincé chez Microsoft, soit enfermé chez Google. En entreprise, je bosse d’ailleurs avec la suite Google à foison. On ne va pas se mentir : c’est ultra pratique. Tout est connecté, synchronisé en temps réel, l’intégration de Gemini est propre et fluide… mais confier l’intégralité de sa vie numérique à ces silos reste un vrai problème.&lt;/p&gt;
&lt;p&gt;Si tu veux une suite bureautique complète, boostée par un zeste d’IA bien calibrée, et que tu as un profil un peu geek, il existe une alternative solide : te tourner vers la philosophie &lt;strong&gt;local-first&lt;/strong&gt; et les &lt;strong&gt;formats ouverts&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Voici ma boîte à outils du quotidien pour reprendre le contrôle de mes machines sans me couper du reste du monde.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;la-stack-en-un-coup-d-oeil&quot;&gt;La stack en un coup d’œil&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Outil remplacé&lt;/th&gt;&lt;th&gt;En solo (local &amp;amp; souverain)&lt;/th&gt;&lt;th&gt;À plusieurs (collaboratif temps réel)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Word&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Markdown (Micro / Obsidian) + Pandoc&lt;/td&gt;&lt;td&gt;Google Docs / Framapad / Overleaf&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;PowerPoint&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Obsidian (plugin Slides)&lt;/td&gt;&lt;td&gt;Gamma AI&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Excel&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;CSV + Python (Pandas)&lt;/td&gt;&lt;td&gt;Grist&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;OneDrive&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Syncthing&lt;/td&gt;&lt;td&gt;MEGA&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Teams&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;em&gt;Inutile&lt;/em&gt;&lt;/td&gt;&lt;td&gt;Jitsi Meet&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;1-word-l-ecriture-et-les-notes&quot;&gt;1. Word : l’écriture et les notes&lt;/h2&gt;
&lt;p&gt;Que ce soit chez Microsoft avec Word ou chez Google avec Docs, le besoin de base reste le même.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;En solo&lt;/strong&gt; : prendre des notes de cours (et des notes pour tout le reste), insérer des images, poser des formules mathématiques propres, tracer des schémas Mermaid, rédiger des courriers administratifs et pouvoir exporter en PDF pour transmettre des documents impeccables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;En multi&lt;/strong&gt; : pouvoir écrire à deux ou plus sur le même document, en direct et sans prise de tête.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;en-solo-la-puissance-du-markdown-brut&quot;&gt;En solo : la puissance du Markdown brut&lt;/h3&gt;
&lt;p&gt;En local, tout tourne autour du &lt;strong&gt;Markdown&lt;/strong&gt;. C’est un langage de balisage léger, ouvert et lisible même sans aucun logiciel spécialisé. En quelques caractères simples (&lt;code&gt;#&lt;/code&gt;, &lt;code&gt;*&lt;/code&gt;, &lt;code&gt;-&lt;/code&gt;), on structure des titres, des listes et de la mise en page. Ça pèse trois fois rien, ça ne dépend d’aucun format propriétaire et la syntaxe s’apprend en moins d’une semaine.&lt;/p&gt;
&lt;p&gt;Pour la prise de notes au vol dans le feu d’un cours, j’édite souvent mes fichiers directement dans &lt;strong&gt;Micro&lt;/strong&gt;, un éditeur de texte dans le terminal ultra basique et sans fioritures.&lt;/p&gt;
&lt;p&gt;Quand j’ai besoin d’une vue plus soignée ou d’une mise en page avancée, j’ouvre &lt;strong&gt;Obsidian&lt;/strong&gt;. Même si l’application est propriétaire, sa philosophie reste très ouverte : les fichiers restent sur mon disque et l’écosystème de plugins communautaires est gigantesque. On peut modeler l’interface à son image (jusqu’à reproduire un espace façon Notion), profiter de la &lt;em&gt;live preview&lt;/em&gt;, imbriquer des schémas Mermaid, coller des images et même intégrer des iframes.&lt;/p&gt;
&lt;p&gt;Le seul piège avec Obsidian, c’est qu’on peut vite passer des heures à bidouiller ses réglages au lieu de bosser — c’est pour ça que je reviens souvent à Micro pour rédiger vite. Mais pour l’export, c’est redoutable : on peut convertir en docx via &lt;strong&gt;Pandoc&lt;/strong&gt;, ou exporter directement en PDF en conservant fidèlement le thème visuel appliqué dans l’application.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://obsidian.md/images/screenshot-tablet-4.png&quot; alt=&quot;Obsidian|1211&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;en-multi-framapad-et-overleaf-au-banc-d-essai&quot;&gt;En multi : Framapad et Overleaf au banc d’essai&lt;/h3&gt;
&lt;p&gt;Quand il faut rédiger à plusieurs, Google Docs reste le réflexe par défaut parce que tout le monde a déjà un compte. Pourtant, d’autres solutions font bien mieux le travail selon la situation :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Framapad&lt;/strong&gt; : pour les documents classiques ou la prise de notes collective. Zéro compte requis : on crée un pad, on partage l’URL, et les potes peuvent taper direct dans le texte. C’est libre, sans friction et hébergé chez Framasoft en France.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Overleaf&lt;/strong&gt; : indispensable pour les études d’ingé dès qu’il y a des maths ou de la physique. C’est un éditeur LaTeX en ligne collaboratif avec compilation et prévisualisation en direct. Plus besoin de se battre avec la syntaxe parfois lourde de LaTeX : on fait générer le code d’une formule par un LLM ou on utilise le mode d’édition visuel (WYSIWYG). Pour rendre un compte-rendu de TP nickel, ça change la vie.&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Google Docs&lt;/th&gt;&lt;th&gt;Framapad&lt;/th&gt;&lt;th&gt;Overleaf&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;https://img.phonandroid.com/2022/05/google-docs-edition-multiples.jpg&quot; alt=&quot;Docs&quot; /&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;https://framablog.org/public/_img/framasoft/framapad-lite.jpg&quot; alt=&quot;Framapad&quot; /&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/d/d6/Screenshot_of_Overleaf.png?utm_source=en.wikipedia.org&amp;amp;utm_campaign=index&amp;amp;utm_content=original&quot; alt=&quot;Overleaf&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;2-powerpoint-des-presentations-sans-surcharge&quot;&gt;2. PowerPoint : des présentations sans surcharge&lt;/h2&gt;
&lt;p&gt;Faire des présentations claires est obligatoire dans presque tous les projets. Mais entre les usines à gaz propriétaires et les milliards d’options de mise en page qui font perdre du temps, PowerPoint et Google Slides ont tendance à m’agacer.&lt;/p&gt;
&lt;h3 id=&quot;en-solo-les-slides-integrees-dans-obsidian&quot;&gt;En solo : les slides intégrées dans Obsidian&lt;/h3&gt;
&lt;p&gt;J’avais testé des frameworks pour développeurs comme Slidev, mais c’était trop lourd pour un usage express. La vraie trouvaille, c’est le &lt;strong&gt;plugin natif Slides d’Obsidian&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Le principe est minimaliste : on sépare ses sections par trois tirets (&lt;code&gt;---&lt;/code&gt;), et la note Markdown devient instantanément un diaporama projetable. Titres, listes, images, vidéos, iframes : tout s’affiche proprement. On n’a pas d’animations tape-à-l’œil, mais quand on connaît son sujet et que le message est clair, dérouler des slides épurées est mille fois plus percutant.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://static0.makeuseofimages.com/wordpress/wp-content/uploads/wm/2026/03/laptop-showing-a-slideshow-made-with-markdown-in-obsidian.jpg?q=70&amp;amp;fit=crop&amp;amp;w=1600&amp;amp;h=900&amp;amp;dpr=1&quot; alt=&quot;ObsidianSlides&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;en-multi-gamma-ai-pour-abattre-la-page-blanche&quot;&gt;En multi : Gamma AI pour abattre la page blanche&lt;/h3&gt;
&lt;p&gt;Travailler un diaporama en groupe sans outil adapté vire souvent au cauchemar. Pour éviter ça, je passe par &lt;strong&gt;Gamma AI&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;L’outil repose sur une syntaxe Markdown, ce qui permet de réutiliser directement mes notes. En fournissant simplement un plan bien structuré, Gamma génère une première trame complète en quelques secondes avec des thèmes soignés et des visuels intégrés. Bien sûr, il faut repasser derrière pour corriger et affiner, mais ça règle définitivement le syndrome de la page blanche tout en évitant les lourdeurs des suites classiques.&lt;/p&gt;
&lt;div class=&quot;video-embed&quot;&gt;
&lt;iframe src=&quot;https://www.youtube-nocookie.com/embed/mDxYzkHsJ7E&quot; title=&quot;Gamma — Presentations&quot; loading=&quot;lazy&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;3-excel-du-python-en-local-grist-en-ligne&quot;&gt;3. Excel : du Python en local, Grist en ligne&lt;/h2&gt;
&lt;p&gt;Le tableur traditionnel accumule les défauts : interfaces rigides, clics à répétition et formules illisibles dès qu’on dépasse trois conditions.&lt;/p&gt;
&lt;h3 id=&quot;en-solo-csv-brut-et-scripts-python&quot;&gt;En solo : CSV brut et scripts Python&lt;/h3&gt;
&lt;p&gt;Pendant mes séances de TP, je ne supporte pas d’ouvrir Excel pour relever des mesures. Je note toutes mes données brutes dans un simple fichier texte, que je convertis rapidement en fichier &lt;strong&gt;CSV&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Ensuite, tout le traitement de données, les calculs et les courbes se font en &lt;strong&gt;Python&lt;/strong&gt; avec des bibliothèques comme &lt;strong&gt;Pandas&lt;/strong&gt; et &lt;strong&gt;Matplotlib&lt;/strong&gt;. En tant que dev, coder un script pour manipuler un tableau est dix fois plus intuitif et reproductible que de chercher comment aligner des cellules. Si je rédige mon compte-rendu dans Overleaf, je demande directement à une IA de me convertir mes données en tableau LaTeX ou de sortir le script du graphique, et l’affaire est pliée. C’est une efficacité atomique.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;CSV&lt;/th&gt;&lt;th&gt;Python&lt;/th&gt;&lt;th&gt;Pandas&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;img src=&quot;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQF1rqL_e8JokHlXMnhK6f4NveiUXPRanFV44I649DiUQ&amp;amp;s=10&quot; alt=&quot;csv&quot; /&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;https://www.python.org/static/community_logos/python-logo-master-v3-TM.png&quot; alt=&quot;Py&quot; /&gt;&lt;/td&gt;&lt;td&gt;&lt;img src=&quot;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTWy0C2RNDzA8gFbv_XKuabdjZsVwv6Qegn3-O0lQ0e5CtjfIjR5UufJYQ&amp;amp;s=10&quot; alt=&quot;pd&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;en-multi-la-revelation-grist&quot;&gt;En multi : la révélation Grist&lt;/h3&gt;
&lt;p&gt;Pour collaborer sur des tableaux sans subir Excel, la découverte de l’année s’appelle &lt;strong&gt;Grist&lt;/strong&gt; (qui est d’ailleurs validé et utilisé par l’État français via la DINUM).&lt;/p&gt;
&lt;p&gt;Grist fonctionne comme un hybride entre un tableur et une base de données relationnelle. Les colonnes sont rigoureusement typées (texte, date, image, devise), et surtout : &lt;strong&gt;les formules s’écrivent en Python&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;On peut concevoir de vrais tableaux de bord partagés, et comme sur Framapad, les collaborateurs peuvent éditer sans créer de compte dès que le propriétaire du document partage le lien. Je m’en suis notamment servi pour gérer la comptabilité de mon association : si un membre oublie de téléverser un justificatif pour sa dépense, le solde global refuse de se calculer et bloque tout le monde. Pression sociale garantie, compta tenue au carré.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://korben.info/grist-tableur-base-de-donnees-collaboratif/grist-tableur-base-de-donnees-collaboratif-1.webp&quot; alt=&quot;grist&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;4-onedrive-syncthing-pour-ma-toile-mega-en-depannage&quot;&gt;4. OneDrive : Syncthing pour ma toile, MEGA en dépannage&lt;/h2&gt;
&lt;p&gt;Synchroniser ses fichiers entre plusieurs appareils ne devrait pas obliger à confier l’ensemble de son disque dur aux serveurs d’un géant américain.&lt;/p&gt;
&lt;h3 id=&quot;en-solo-syncthing-en-reseau-decentralise&quot;&gt;En solo : Syncthing en réseau décentralisé&lt;/h3&gt;
&lt;p&gt;Pour faire circuler mes notes et mes documents entre mon PC portable, ma tour et mon serveur personnel, j’utilise &lt;strong&gt;Syncthing&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;L’outil fonctionne en pair-à-pair chiffré : pas besoin de cloud central, tes machines se découvrent et se synchronisent directement entre elles. Entre plusieurs ordinateurs, ça tourne du feu de dieu. L’interface graphique est austère, mais on s’en moque éperdument vu que le service tourne en tâche de fond et qu’on manipule ses fichiers dans son terminal ou son explorateur habituel.&lt;/p&gt;
&lt;p&gt;Seul bémal honnête : l’application mobile sous Android reste parfois capricieuse lors des mises à jour, mais pour relier des machines physiques en direct, je n’ai rien trouvé de plus souverain.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://upload.wikimedia.org/wikipedia/commons/b/bf/SyncthingWebInterface.jpg?utm_source=fr.wikipedia.org&amp;amp;utm_campaign=index&amp;amp;utm_content=original&quot; alt=&quot;sync&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;en-multi-mega-pour-les-gros-partages&quot;&gt;En multi : MEGA pour les gros partages&lt;/h3&gt;
&lt;p&gt;Syncthing est parfait pour synchroniser ses propres machines, mais inadapté pour envoyer rapidement une archive de projet à un camarade.&lt;/p&gt;
&lt;p&gt;Pour les partages ponctuels avec des personnes qui ne maîtrisent pas Git ou GitHub, j’utilise un compte &lt;strong&gt;MEGA&lt;/strong&gt; ouvert au début de mes études. Le chiffrement de bout en bout côté client et l’espace de stockage gratuit évitent de se reposer sur Google Drive, même si je m’efforce de réserver son usage aux stricts dépannages.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.mega.io/wp-content/uploads/2023/02/FR_CD_G-1024x576.png&quot; alt=&quot;mega&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;5-teams-place-a-la-legerete-avec-jitsi&quot;&gt;5. Teams : place à la légèreté avec Jitsi&lt;/h2&gt;
&lt;p&gt;Teams ou Google Meet illustrent parfaitement l’obésiciel moderne : des gouffres en mémoire vive pour afficher un simple flux vidéo et échanger du texte.&lt;/p&gt;
&lt;p&gt;En solo, le besoin n’existe évidemment pas.&lt;/p&gt;
&lt;h3 id=&quot;en-multi-jitsi-meet&quot;&gt;En multi : Jitsi Meet&lt;/h3&gt;
&lt;p&gt;Quand il faut caler une visio rapide ou partager un écran pour déboguer un script en équipe, &lt;strong&gt;Jitsi Meet&lt;/strong&gt; s’impose sans hésiter. Né à l’origine à l’université de Strasbourg, ce projet open source s’exécute directement dans le navigateur. Pas de client lourd à installer, pas de compte requis pour rejoindre l’appel : on définit le nom du salon, on transmet l’adresse aux participants, et la communication démarre instantanément. C’est fluide, sécurisé et respectueux de la vie privée.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQjYt2D-e3qH4gKvVL_IbpB-umC3Lxob3nbZ1TDnZHo9jif_JCMbN_gbcs&amp;amp;s=10&quot; alt=&quot;Jitsi&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;bilan&quot;&gt;Bilan&lt;/h2&gt;
&lt;p&gt;Adopter une stack bureautique local-first et libre ne relève pas du dogme absolu : c’est avant tout une question d’hygiène numérique et de bon sens technique. En s’appuyant sur des formats légers et universels comme le Markdown et le CSV, on s’assure de pouvoir relire ses notes dans vingt ans sans dépendre de l’abonnement d’une multinationale.&lt;/p&gt;
&lt;p&gt;L’arrivée des outils d’IA permet désormais de combler les frictions sans abandonner cette souveraineté, que ce soit pour générer du code d’analyse ou poser une base de diaporama.&lt;/p&gt;
&lt;p&gt;S’il vous semble manquer des alternatives intéressantes dans ce tableau ou si vous utilisez d’autres outils légers au quotidien, n’hésitez pas à me faire signe par mail ou sur les réseaux pour partager vos retours d’expérience !&lt;/p&gt;
</description>
      </item>
      <item>
          <title>From bouse to tank — le glow up du PC</title>
          <pubDate>Wed, 30 Sep 2026 00:00:00 +0000</pubDate>
          <author>Joseph Humbert</author>
          <link>https://bison-blog-six.vercel.app/blog/from-bouse-to-tank/</link>
          <guid>https://bison-blog-six.vercel.app/blog/from-bouse-to-tank/</guid>
          <description xml:base="https://bison-blog-six.vercel.app/blog/from-bouse-to-tank/">&lt;p&gt;Le nouveau poste arrive un lundi de septembre. Un Asus, i5 7e génération, 16 Go de RAM, une Nvidia, un disque dur mécanique. Tu le sors du carton : Windows, WSL qui boucle au lancement. Tu ouvres un ticket Linux — réglé. Claude pose un bouton de panique quand WSL repart en vrille.&lt;/p&gt;
&lt;p&gt;Le ricing commence. Debian allégée, Sway, Waybar, Catppuccin. Le repo BisonWallpaper porte déjà cette trajectoire : 29 avril, commit initial — un script de fond d’écran XFCE, un README, un art ASCII. 4 mai — greeter LightDM détecté, copie système, favicon. 11 mai — menus whiptail, thème Catppuccin néon sur fond nuit. D’un outil utilitaire à un design system.&lt;/p&gt;
&lt;p&gt;Le PC suit. De la bouse Windows au tank Linux : froid, propre, fonctionnel. Les commits et le ricing racontent la même chose — on part petit, on itère, un jour ça tient. Le prix reste : couchers à 2 h, réveils lourds, dette de sommeil. Le glow up est terminé. Reste à dormir.&lt;/p&gt;
</description>
      </item>
      <item>
          <title>Du poids mort au majordome : installer Hermes Agent sur la Citadelle</title>
          <pubDate>Sat, 12 Sep 2026 00:00:00 +0000</pubDate>
          <author>Joseph Humbert</author>
          <link>https://bison-blog-six.vercel.app/blog/hermes-agent-sur-la-citadelle/</link>
          <guid>https://bison-blog-six.vercel.app/blog/hermes-agent-sur-la-citadelle/</guid>
          <description xml:base="https://bison-blog-six.vercel.app/blog/hermes-agent-sur-la-citadelle/">&lt;blockquote&gt;
&lt;p&gt;Suite de &lt;a href=&quot;/blog/le-reveil-de-la-bete/&quot;&gt;Le Réveil de la bête&lt;/a&gt;. Là-bas, je laissais un bloc mort dans mon &lt;code&gt;compose.yml&lt;/code&gt; : un service Hermes que je n’arrivais même pas à démarrer, et une phrase que j’avais écrite un peu vite — « le poids mort d’Hermes ». Voici la suite, et elle ne se passe pas comme prévu.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;21-h-38-hello-there&quot;&gt;21 h 38, « hello there »&lt;/h2&gt;
&lt;p&gt;Le 10 septembre au soir, j’écris deux mots à un truc qui n’existe pas encore vraiment : &lt;em&gt;hello there&lt;/em&gt;. Pas de plan, pas de configuration, juste l’envie de voir ce que ça répond.&lt;/p&gt;
&lt;p&gt;Deux jours plus tard, l’agent tourne sur la Citadelle, il répond sur Telegram, il a accès à mon serveur, à ma mémoire et à 62 compétences. La ligne morte du &lt;code&gt;compose.yml&lt;/code&gt;, elle, n’existe plus : je l’ai retirée.&lt;/p&gt;
&lt;h2 id=&quot;pas-de-conteneur-installation-directe&quot;&gt;Pas de conteneur, installation directe&lt;/h2&gt;
&lt;p&gt;Mon réflexe, c’était le conteneur : un service de plus dans le compose, et on n’en parle plus. Sauf que le conteneur ne s’est jamais lancé.&lt;/p&gt;
&lt;p&gt;Alors j’ai fait l’inverse : installation directe sur le système, à la racine. Et ça a fonctionné tout de suite. Avec un avantage que je n’avais pas anticipé et qui compte pour un agent : il a accès à tous les fichiers de la machine, sans volume à monter ni chemin à traduire. Un agent qui doit lire une configuration, un journal ou un projet n’a pas besoin d’un mur entre lui et le disque.&lt;/p&gt;
&lt;p&gt;En prime, sur une tour qui fait déjà tourner un proxy, une base, un serveur de code et une synchro de notes, ça évite un conteneur de plus pour un programme qui parle à un modèle distant.&lt;/p&gt;
&lt;h2 id=&quot;l-installation&quot;&gt;L’installation&lt;/h2&gt;
&lt;p&gt;L’installation, c’est vingt minutes et zéro surprise : l’installeur officiel monte tout, puis deux commandes pour choisir le modèle et vérifier l’état de la maison.&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;hermes&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; setup&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;     # assistant de configuration&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;hermes&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; model&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;     # choix du modèle et du fournisseur&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;hermes&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; doctor&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;    # état des lieux&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Le modèle, c’est du &lt;code&gt;deepseek-flash&lt;/code&gt; : rapide et bon marché, largement suffisant pour un agent qui passe sa journée à lire des fichiers et à taper des commandes. Le cadre est agnostique, je peux changer de fournisseur sans réinstaller.&lt;/p&gt;
&lt;p&gt;Le premier mur arrive avec le gateway, la partie qui branche l’agent sur une messagerie. Je veux qu’il réponde sur Telegram, c’est là que je suis.&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;✗   Start failed — user systemd not reachable:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    loginctl enable-linger was denied: Failed to connect to system scope bus&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    systemctl --user cannot reach the user D-Bus session in this shell.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Traduction : sur cette machine je travaille en SSH sur un compte sans session graphique ni bus utilisateur, donc &lt;code&gt;systemctl --user&lt;/code&gt; ne peut rien piloter.&lt;/p&gt;
&lt;h2 id=&quot;deux-erreurs-deux-causes&quot;&gt;Deux erreurs, deux causes&lt;/h2&gt;
&lt;p&gt;Une fois ce point réglé, le gateway a redémarré en boucle : entre 19 h 46 et 20 h 00, &lt;strong&gt;quarante démarrages&lt;/strong&gt; à vingt secondes d’intervalle.&lt;/p&gt;
&lt;p&gt;Pour comprendre, je n’ai pas fait d’archéologie. J’ai collé les erreurs à mon agent, et je l’ai couplé avec une session d’un agent OpenCode en parallèle, sur le même problème. À deux, ils ont identifié deux causes bien distinctes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Un token Telegram mort.&lt;/strong&gt; Le token que j’avais collé était rejeté par le serveur, et le gateway sortait sur une erreur de configuration. C’était simplement le mauvais identifiant.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La connexion à l’API Telegram qui ne passait pas.&lt;/strong&gt; Les journaux montrent huit tentatives de connexion, la découverte d’IP de repli par DNS-over-HTTPS, un chemin IPv4 forcé qui échoue, puis un échec complet du chemin principal : la machine n’arrivait pas à joindre les serveurs de Telegram.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Deux problèmes qui n’avaient rien à voir l’un avec l’autre, et qui se manifestaient de la même façon : un service qui tombe. C’est exactement le genre de diagnostic où je serais resté bloqué une soirée sur le mauvais problème.&lt;/p&gt;
&lt;p&gt;Depuis, une seule instance, sous contrôle d’un superviseur, et il n’a plus bougé.&lt;/p&gt;
&lt;h2 id=&quot;l-interface-web-en-dix-minutes&quot;&gt;L’interface web en dix minutes&lt;/h2&gt;
&lt;p&gt;Il existe une interface web pour cet agent, maintenue à part du projet principal. Je l’ai trouvée sur GitHub, et je ne l’ai pas installée moi-même.&lt;/p&gt;
&lt;p&gt;J’ai ouvert une conversation vide de tout contexte, je lui ai donné le lien du dépôt et j’ai dit : configure ça correctement sur mon installation. Dix minutes plus tard, c’était impeccable, en service, accessible depuis le navigateur.&lt;/p&gt;
&lt;p&gt;C’est probablement le passage le plus déroutant de ces deux jours : un outil qui lit son propre dépôt et qui s’installe.&lt;/p&gt;
&lt;p&gt;Une chose à ne pas faire pour autant : une interface d’administration qui donne accès à un agent ayant les droits de toucher au serveur ne se publie pas sur Internet sans authentification. Ça n’a rien à voir avec la confiance qu’on porte à l’outil.&lt;/p&gt;
&lt;h2 id=&quot;une-recherche-et-une-lecture-auto-hebergees&quot;&gt;Une recherche et une lecture auto-hébergées&lt;/h2&gt;
&lt;p&gt;Un agent sans accès au web est un agent bavard.&lt;/p&gt;
&lt;p&gt;L’agent dispose de deux outils natifs pour ça : &lt;code&gt;web_search&lt;/code&gt; pour chercher, &lt;code&gt;web_extract&lt;/code&gt; pour lire une page. Je les ai branchés sur ma propre infrastructure, chacun sur son service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pour la recherche&lt;/strong&gt;, un conteneur de plus dans le &lt;code&gt;compose.yml&lt;/code&gt; : &lt;strong&gt;Degoog&lt;/strong&gt;, un métamoteur auto-hébergé, exposé sur une API compatible SearXNG — le format que &lt;code&gt;web_search&lt;/code&gt; parle nativement. Il arrive sans aucun moteur activé, et on installe ensuite ceux qu’on veut depuis son magasin d’extensions. Ma sélection :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Brave&lt;/strong&gt; et &lt;strong&gt;Brave News&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DuckDuckGo&lt;/strong&gt; et &lt;strong&gt;DuckDuckGo News&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Startpage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wikipedia&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hacker News&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reddit&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Pour la lecture&lt;/strong&gt;, pas de conteneur du tout : un petit plugin que j’ai posé dans le dossier de plugins de l’agent, qui récupère la page avec &lt;code&gt;httpx&lt;/code&gt; et la découpe en texte exploitable avec &lt;code&gt;trafilatura&lt;/code&gt;, sans navigateur sans tête. &lt;code&gt;web_extract&lt;/code&gt; pointe dessus.&lt;/p&gt;
&lt;p&gt;Recherche et lecture tapent donc l’une sur mon métamoteur, l’autre sur ma brique locale, sans navigateur headless : aucune clé d’API, aucun tiers dans la boucle.&lt;/p&gt;
&lt;p&gt;J’avais d’abord visé Firecrawl, la solution dont tout le monde parle, avec ses workers, son service Playwright et sa base. Abandonnée pour une raison bête : la pile demande plus de 4 Go de RAM, la machine en a 3,8. Et un plugin local suffit à lire un article ou une documentation. C’est le même raisonnement que dans &lt;a href=&quot;/blog/la-friction-salutaire-pourquoi-j-ai-desarme-mon-numerique/&quot;&gt;La friction salutaire&lt;/a&gt; : la contrainte matérielle tranche les débats d’architecture mieux que n’importe quel comparatif.&lt;/p&gt;
&lt;h2 id=&quot;la-persona-en-trois-lignes&quot;&gt;La persona, en trois lignes&lt;/h2&gt;
&lt;p&gt;J’ai trouvé un fichier d’âme sur internet, je l’ai adapté au français et à ma façon de travailler, et j’ai bien aimé le style.&lt;/p&gt;
&lt;p&gt;Je conseille à tout le monde de faire ça : ça donne beaucoup plus de personnalité aux discussions. Une persona change la donne : l’agent tient une position, il te reprend quand tu t’apprêtes à faire une bêtise, il anticipe l’étape d’après au lieu d’attendre l’instruction.&lt;/p&gt;
&lt;h2 id=&quot;la-sauvegarde-et-le-seul-vrai-garde-fou&quot;&gt;La sauvegarde, et le seul vrai garde-fou&lt;/h2&gt;
&lt;p&gt;Chaque nuit, la configuration part vers un dépôt privé — sans les secrets, exclus par principe. Et avant chaque envoi, un script relit tout et &lt;strong&gt;refuse le push&lt;/strong&gt; s’il trouve une clé ou un mot de passe. Un garde-fou qui bloque au lieu d’avertir.&lt;/p&gt;
&lt;p&gt;Pour le reste, la règle est simple : ce qui se défait reste libre, ce qui ne se défait pas demande l’autorisation. Un fichier, un commit local, un conteneur qu’on recrée — vas-y. Un envoi vers l’extérieur, une suppression, une publication — tu demandes d’abord.&lt;/p&gt;
&lt;h2 id=&quot;bilan&quot;&gt;Bilan&lt;/h2&gt;
&lt;p&gt;Ce qui tourne aujourd’hui : installation directe sur le système, gateway Telegram stable, interface web en service, métamoteur auto-hébergé avec neuf moteurs, 62 compétences, une persona, des sauvegardes nocturnes. Ce qui reste : quatre avertissements au dernier état des lieux, rien de bloquant, &lt;code&gt;hermes doctor&lt;/code&gt; ne ment pas.&lt;/p&gt;
&lt;p&gt;Deux choses que je retiens. La première, c’est que ce système est &lt;strong&gt;plus modeste&lt;/strong&gt; que celui que je faisais tourner sur mon laptop — et qu’il a un avantage qui écrase le reste : il vit sur le serveur, dans une machine isolée de ma machine de travail. Il tourne quand mon laptop est fermé, et si je casse quelque chose en bricolant, ça ne touche pas mon outil de production.&lt;/p&gt;
&lt;p&gt;La seconde, c’est que je n’ai pas installé ce logiciel tout seul. J’ai passé deux jours à coller des erreurs dans une conversation, et la plupart du temps, ça a suffi. Sans fournisseur branché, un agent reste un binaire muet. Une fois le modèle en place, il devient le meilleur assistant d’installation de lui-même. Il reste une part de maîtrise en moins : je ne saurais pas réinstaller tout ça de mémoire.&lt;/p&gt;
&lt;p&gt;Quant à la conclusion de mon article précédent — « le prochain chantier, c’est cet agent IA qui remplacera le poids mort d’Hermes » — elle a mal vieilli. Le fameux poids mort venait de ma façon de l’installer, rien d’autre.&lt;/p&gt;
</description>
      </item>
      <item>
          <title>La friction salutaire : pourquoi j&#39;ai désarmé mon numérique</title>
          <pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate>
          <author>Joseph Humbert</author>
          <link>https://bison-blog-six.vercel.app/blog/la-friction-salutaire/</link>
          <guid>https://bison-blog-six.vercel.app/blog/la-friction-salutaire/</guid>
          <description xml:base="https://bison-blog-six.vercel.app/blog/la-friction-salutaire/">&lt;p&gt;En traînant sur des blogs un peu obscurs du web indépendant, je suis tombé sur des mecs comme SebSauvage ou Ploum (le type derrière Offpunk). Au début je regardais ça de loin, et puis en fait ça m’a mis une vraie claque. En gros, ils posent un truc tout bête : et si, pour sauver notre cerveau, il fallait juste réapprendre à utiliser un web moche, textuel et hors-ligne ?&lt;/p&gt;
&lt;p&gt;C’est exactement l’esprit de la &lt;strong&gt;slow tech&lt;/strong&gt; : une approche de l’informatique qui refuse la course aveugle à la nouveauté, combat l’obésiciel et privilégie des outils sobres, réparables et pensés pour durer. L’idée n’est pas de rejeter la technologie, mais de ralentir délibérément le rythme pour choisir des systèmes qui nous servent au lieu de nous asservir.&lt;/p&gt;
&lt;p&gt;En lisant ça, je me suis pas mal reconnu. En tant qu’étudiant en école d’ingé, j’avais ce dégoût qui montait en sourdine depuis des mois. On passe nos journées sur des interfaces boursouflées, blindées d’animations inutiles, qui cherchent juste à capter notre temps de cerveau au lieu d’obéir à ce qu’on leur demande. Bref, j’ai voulu tenter l’inverse complet : rajouter de la friction volontaire, arrêter de subir et reprendre le contrôle de mes machines.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id=&quot;1-le-rer-en-noir-et-blanc-et-la-liseuse-de-survie&quot;&gt;1. Le RER en noir et blanc et la liseuse de survie&lt;/h3&gt;
&lt;p&gt;Le point de départ, c’est mes trajets de RER. J’ai facilement 1 h 30 de transport par jour. Sur le papier, c’est le moment rêvé pour relire des cours, taffer un projet ou lire de la doc. Dans les faits ? Une catastrophe. Je sortais mon tel pour ouvrir un PDF, je voyais une notif rouge pétante, une couleur flashy, et dix secondes après j’étais bêtement en train de scroller sur un fil d’actualité. Zéro concentration.&lt;/p&gt;
&lt;p&gt;Du coup, j’ai testé deux trucs un peu radicaux :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Le mode noir et blanc h24 sur le smartphone&lt;/strong&gt; : Franchement, au début c’est super bizarre. Mais ça change tout. Dès que tu vires la couleur, l’écran perd direct 90 % de son pouvoir hypnotique. Les vignettes YouTube deviennent ternes, Insta n’a plus aucun intérêt, et le tel redevient juste un outil chiant. Un bloc de verre utilitaire.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prendre une vieille liseuse e-ink pour bosser&lt;/strong&gt; : Pour lire des cours un peu denses ou des articles de fond, c’est le jour et la nuit. Pas d’écran qui t’arrache les yeux, et surtout : l’écran met une demi-seconde à rafraîchir. Rien que ça, ça coupe court à tout réflexe de zapping compulsif.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ralentir le truc, c’est la slow tech appliquée à l’attention : ça crée un vide d’air incroyable. Dans le train, mon esprit arrête d’être bombardé de stimuli. Ça dépend des jours évidemment, mais souvent ça me laisse enfin le temps de réfléchir à un problème d’algo ou juste de digérer un cours sans être interrompu toutes les deux minutes.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id=&quot;2-le-vieux-mac-de-2015-qui-revit-sous-linux&quot;&gt;2. Le vieux Mac de 2015 qui revit sous Linux&lt;/h3&gt;
&lt;p&gt;Cette envie de virer le superflu, je me la suis prise en pleine face sur mon ordi portable. En arrivant en cursus info, on réalise vite à quel point les OS grand public nous prennent pour des gosses.&lt;/p&gt;
&lt;p&gt;J’avais un MacBook de 2015 qui tournait encore super bien matériellement. Le problème, c’est qu’Apple a décidé que non. J’ai voulu installer une stack mobile récente (Flutter, le SDK Android, etc.), et là, mur complet : OS plus supporté, Xcode qui refuse de s’installer parce qu’il manque un patch mineur, et des heures à bidouiller des scripts douteux pour essayer de contourner un verrouillage 100 % commercial. La machine était encore largement dans les temps niveau perfs : la marque, elle, voulait simplement que j’en rachète une neuve.&lt;/p&gt;
&lt;p&gt;J’ai fini par péter un plomb : j’ai rasé le disque et collé une distrib Linux légère. En deux heures, tout tournait nickel. Pas d’artifice, pas de compte iCloud requis, ça compile, point. Alors oui, ça demande de mettre les mains dans le cambouis (et parfois de passer une soirée sur un driver Wi-Fi récalcitrant, je ne vais pas mentir), mais au moins la machine fait ce que je lui demande. En tant que futur dev, je pense que c’est indispensable de comprendre ce qui tourne sous le capot plutôt que d’accepter une mise au rebut artificielle.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id=&quot;3-faire-tourner-des-petits-llm-en-local-l-ecole-de-la-contrainte&quot;&gt;3. Faire tourner des petits LLM en local : l’école de la contrainte&lt;/h3&gt;
&lt;p&gt;Le dernier délire en date, c’est l’IA. En ce moment, tout le monde jette ses lignes de code et ses données perso sur les serveurs de gros modèles cloud sans même y réfléchir deux secondes.&lt;/p&gt;
&lt;p&gt;Moi, j’ai voulu faire tourner des petits modèles en local sur ma bécane. Évidemment, ça ne rivalise pas avec les clusters gigantesques des GAFAM, mais l’expérience m’a appris trois trucs majeurs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La vie privée, la vraie&lt;/strong&gt; : Zéro clé d’API, pas de boîte californienne qui aspire mes prompts pour réentraîner ses trucs. Tout tourne dans ma RAM, hors-ligne.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La fierté de bidouiller&lt;/strong&gt; : Réussir à faire tourner un modèle quantifié proprement, régler les bons paramètres et le requêter via un petit script maison, c’est quand même dix fois plus gratifiant que de simplement coller un prompt sur une interface web toute faite.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comprendre le coût des choses&lt;/strong&gt; : Quand tu vois ta RAM saturer et tes ventilos hurler parce que ton prompt fait 500 tokens de trop, tu captes direct le coût physique de l’informatique. La contrainte matérielle force à être sobre : on apprend à poser de bonnes questions et à réfléchir avant d’appuyer sur Entrée.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3 id=&quot;en-gros&quot;&gt;En gros…&lt;/h3&gt;
&lt;p&gt;Mon idée, c’est pas du tout de vivre en ermite dans les bois ou de jouer au hacker du dimanche pour faire genre. C’est juste d’arrêter d’être un pur consommateur passif, exactement comme l’expliquent des mecs comme Ploum.&lt;/p&gt;
&lt;p&gt;Le noir et blanc sauve mon attention, Linux sauve mon matos de la poubelle, et bidouiller du self-hosting me fait enfin piger concrètement le réseau et les ressources.&lt;/p&gt;
&lt;p&gt;Ça demande un peu de temps, parfois ça plante et ça énerve, mais honnêtement, cette friction-là vaut largement le coup. C’est juste le prix à payer pour avoir un numérique sobre qui ne nous bouffe pas la tête.&lt;/p&gt;
</description>
      </item>
      <item>
          <title>Le Réveil de la bête</title>
          <pubDate>Tue, 08 Sep 2026 00:00:00 +0000</pubDate>
          <author>Joseph Humbert</author>
          <link>https://bison-blog-six.vercel.app/blog/le-reveil-de-la-bete/</link>
          <guid>https://bison-blog-six.vercel.app/blog/le-reveil-de-la-bete/</guid>
          <description xml:base="https://bison-blog-six.vercel.app/blog/le-reveil-de-la-bete/">&lt;blockquote&gt;
&lt;p&gt;Suite de mon &lt;a href=&quot;/blog/sauvetage-express-dual-boot-optimplex/&quot;&gt;Sauvetage express : dual boot Windows 10 / Debian 13 sur un OptiPlex 390&lt;/a&gt; — après l’abandon du Mac et du Latitude noyé et le montage de la tour OptiPlex, je remets sur pied le serveur pour la rentrée.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;un-ete-sans-serveur&quot;&gt;Un été sans serveur&lt;/h2&gt;
&lt;p&gt;Mon serveur a passé l’été éteint — pas de course aux notes et aux infos, et une certaine sérénité qui accompagne l’interruption volontaire d’un service qu’on n’administre plus.&lt;/p&gt;
&lt;p&gt;La rentrée venue, la question classique : est-ce que ça va repartir ? L’OS a vieilli sur place, les images Docker sont plus datées, les configs ont bougé pendant mes vacances (bon, j’avais « un peu » touché à mon syncthing et mes notes obsidian entre deux baignades).&lt;/p&gt;
&lt;p&gt;J’appuie sur le bouton, je remonte et me connecte en SSH, et je lance la commande dont je ne me lasse pas :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-1&quot;&gt;cd&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; /root/infra&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; docker&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; compose up&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et là, la surprise : &lt;strong&gt;tout est remonté nickel&lt;/strong&gt;. Presque aucune galère. Caddy qui reprend le proxy, Glances qui se remet à parler CPU, SilverBullet qui retrouve mes notes, PocketBase qui rapplique impeccable. Voilà une vertu du tout-Docker-Compose qu’on ne vante pas assez : tout le système tient dans un fichier.&lt;/p&gt;
&lt;h2 id=&quot;la-citadelle-de-seigneur-bison-oui-le-nom-de-mon-serveur-est-pompeux-et-alors&quot;&gt;La Citadelle de Seigneur Bison (Oui le nom de mon serveur est pompeux et alors ? :-))&lt;/h2&gt;
&lt;p&gt;Rien que pour le plaisir des yeux, voilà la stack qui tourne dans le boîtier :&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Service&lt;/th&gt;&lt;th&gt;Rôle&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Caddy&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Reverse proxy (réseau hôte, socket Tailscale)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Dashboard&lt;/strong&gt; (nginx)&lt;/td&gt;&lt;td&gt;Portail d’accueil — le tableau de bord de la Citadelle&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;SilverBullet&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Prise de notes &amp;amp; savoir&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;code-server&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;VS Code dans le navigateur, pour bricoler l’infra&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;PocketBase&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Base de données &amp;amp; admin&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Wetty&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Terminal SSH via le navigateur&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Glances&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Monitoring CPU/RAM en temps réel&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Syncthing&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Synchro de mes notes Obsidian&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;rclone&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sauvegardes chiffrées vers MEGA + git push sur GitHub&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Et c’est dans la période qui a suivi le réveil que j’en ai profité pour &lt;strong&gt;développer la configuration&lt;/strong&gt; : affinage des healthchecks, volumes mieux découpés, sauvegarde nocturne automatisée. L’art de profiter d’un redémarrage pour faire le ménage au lieu de le repousser.&lt;/p&gt;
&lt;h2 id=&quot;la-vraie-galere-syncthing-apres-la-mise-a-jour-de-l-appli-mobile&quot;&gt;La vraie galère : Syncthing après la mise à jour de l’appli mobile&lt;/h2&gt;
&lt;p&gt;Le hic, il est venu de là où on ne l’attend pas : &lt;strong&gt;une mise à jour de l’application mobile Syncthing&lt;/strong&gt;. Du jour au lendemain, la synchronisation de mes notes Obsidian a décidé de ne plus avancer. Verdict : tout était à reparamétrer. J’ai dû repasser derrière sur &lt;strong&gt;trois fronts&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Le téléphone (Android)&lt;/strong&gt; : l’appli mise à jour a imposé une remise à zéro de la config — ré-ajout de l’appareil, re-scan des dossiers ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ma nouvelle machine sous Windows&lt;/strong&gt; : la tour OptiPlex aménagée dans mon précédent article, nouveau venu dans le foyer, a dû être déclarée comme appareil de confiance et rattachée au même dossier ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le serveur&lt;/strong&gt; : au passage, j’ai fait le grand ménage dans les appareils — &lt;strong&gt;suppression des morts&lt;/strong&gt; (l’ancien Mac 2015, le Latitude noyé) et &lt;strong&gt;ajout des nouveaux&lt;/strong&gt; (le PC, le téléphone).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Moralité d’une reconfig dans les trois sens : Syncthing, c’est un réseau de confiance. Chaque appareil a un &lt;em&gt;device ID&lt;/em&gt;, chaque pair doit être accepté des deux côtés, chaque dossier re-partagé. Quand une appli mobile force un reset, c’est toute la chaîne qu’il faut reconstruire. Bénéfice pas négligeable : j’en ai profité pour &lt;strong&gt;harmoniser les noms d’appareils&lt;/strong&gt; et virer les reliques du passé.&lt;/p&gt;
&lt;h2 id=&quot;la-quete-de-l-agent-ia-leger&quot;&gt;La quête de l’agent IA léger&lt;/h2&gt;
&lt;p&gt;Pendant que la Citadelle redevenait propre, un manque s’est fait sentir : &lt;strong&gt;un agent IA pour administrer le serveur&lt;/strong&gt;. J’utilise en effet OpenCode mais Glances me dit qu’il est trop lourd… J’avais tenté d’intégrer &lt;strong&gt;Hermes&lt;/strong&gt; (&lt;code&gt;nousresearch/hermes-agent&lt;/code&gt;) au compose, bloc prévu pour piloter l’infra en passant par un chat. Sauf que… je n’arrive même pas à &lt;strong&gt;tirer l’image&lt;/strong&gt;. Bloc mort dans le compose, de la configuration qui ne sert à rien et qui coûte cher en « pourquoi ça marche pas » chaque fois qu’on relit le fichier.&lt;/p&gt;
&lt;p&gt;Autant dire que je suis &lt;strong&gt;en recherche d’un agent IA très léger&lt;/strong&gt; pour manager ce serveur : quelque chose qui parle Docker et systemd, qui s’exécute localement sans dévorer la RAM d’une petite tour et qui se branche proprement sur un workflow « observe → plan → exécute ».&lt;/p&gt;
&lt;p&gt;Si tu as des pistes d’agents légers réellement utilisables pour l’administration serveur — &lt;strong&gt;laisse ta suggestion par mail ou sur LinkedIn&lt;/strong&gt;, je testerai les meilleures propositions.&lt;/p&gt;
&lt;h2 id=&quot;bilan&quot;&gt;Bilan&lt;/h2&gt;
&lt;p&gt;Ressusciter un serveur après un été d’inactivité, c’est finalement du presque-rien quand tout est Dockerisé : une commande, un café, et la Citadelle est debout. La vraie charge, elle vient des chaînes qui relient les machines entre elles — et Syncthing me l’a rappelé en me forçant à re-coudre toute la toile pour cause de mise à jour mobile.&lt;/p&gt;
&lt;p&gt;Windows n’est plus qu’un coin à jeux, les notes revivent, et le prochain chantier, c’est cet agent IA qui remplacera le poids mort d’Hermes. À suivre…&lt;/p&gt;
</description>
      </item>
      <item>
          <title>Sauvetage express : dual boot Windows 10 / Debian 13 sur un OptiPlex 390</title>
          <pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate>
          <author>Joseph Humbert</author>
          <link>https://bison-blog-six.vercel.app/blog/sauvetage-express-dual-boot-optimplex/</link>
          <guid>https://bison-blog-six.vercel.app/blog/sauvetage-express-dual-boot-optimplex/</guid>
          <description xml:base="https://bison-blog-six.vercel.app/blog/sauvetage-express-dual-boot-optimplex/">&lt;h2 id=&quot;la-semaine-ou-tout-a-crame&quot;&gt;La semaine où tout a cramé&lt;/h2&gt;
&lt;p&gt;Tout commence par une cascade de morts informatiques. Mon &lt;strong&gt;MacBook de 2015&lt;/strong&gt; — ma machine de tous les jours, celle dont la batterie tenait mieux que toutes les autres — rend l’âme après dix ans de bons et loyaux services. Dans la foulée, mon &lt;strong&gt;Latitude 3790 2-en-1&lt;/strong&gt; prend la flotte : connecteur cramé, écran mort, irréparable. Je me retrouve sans aucun ordinateur quelques jours avant la reprise des cours.&lt;/p&gt;
&lt;h2 id=&quot;le-lundi-de-la-debrouille&quot;&gt;Le lundi de la débrouille&lt;/h2&gt;
&lt;p&gt;Sans machine, le lundi se transforme en purgatoire. J’essaie de bosser depuis mon &lt;strong&gt;téléphone&lt;/strong&gt; et du papier-crayon. Verdict en fin de journée : invivable.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L’écran du téléphone est &lt;strong&gt;trop petit pour afficher un sujet de maths et sa correction côte à côte&lt;/strong&gt; ;&lt;/li&gt;
&lt;li&gt;Mes fiches sont dans &lt;strong&gt;Obsidian&lt;/strong&gt;, version mobile : pour consulter une fiche puis revenir au sujet, je dois &lt;strong&gt;changer d’application en permanence&lt;/strong&gt; — et ce va-et-vient infini est le meilleur piège à concentration qu’on puisse imaginer. Plus d’une fois, un « vite fait, je vérifie une formule » s’est terminé dans les méandres de YouTube, vingt minutes plus tard.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bilan de la journée : presque rien. Il me faut un vrai PC, et vite.&lt;/p&gt;
&lt;h2 id=&quot;le-mardi-de-la-chance&quot;&gt;Le mardi de la chance&lt;/h2&gt;
&lt;p&gt;Mardi soir, je file &lt;strong&gt;en catastrophe&lt;/strong&gt; chez des potes qui tiennent un petit stock de machines d’occasion. Ils me ressortent un vieux &lt;strong&gt;Dell OptiPlex 390&lt;/strong&gt; — une tour discrète, pas une bête de course, avec un HDD vieillissant sous &lt;strong&gt;Windows 10 sans licence&lt;/strong&gt;. Elle démarre : c’est parti pour le plan B.&lt;/p&gt;
&lt;h2 id=&quot;le-plan-deux-disques-deux-mondes&quot;&gt;Le plan : deux disques, deux mondes&lt;/h2&gt;
&lt;p&gt;J’ai besoin de deux choses apparemment contradictoires :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;garder &lt;strong&gt;Windows 10&lt;/strong&gt; pour mes &lt;strong&gt;jeux&lt;/strong&gt; ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debian&lt;/strong&gt; pour &lt;strong&gt;travailler&lt;/strong&gt; — c’est sous Linux que je travaille et que je développe depuis plusieurs mois, et je ne compte pas revenir en arrière.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Solution : installer un &lt;strong&gt;second disque dur&lt;/strong&gt; dans la tour, installer Debian dessus, et laisser &lt;strong&gt;GRUB&lt;/strong&gt; jouer l’arbitre entre les deux systèmes.&lt;/p&gt;
&lt;p&gt;J’ouvre le boîtier, je plaque un disque de 240 Go sur un port SATA libre (petit détail au passage : n’oublie pas le câble d’alimentation — un disque qui n’est pas alimenté, c’est un disque qui n’existe pas), je referme, j’insère la clé Debian.&lt;/p&gt;
&lt;p&gt;Installation anodine : partitionnement ciblé sur le &lt;strong&gt;nouveau disque&lt;/strong&gt;, GRUB installé par l’installateur, redémarrage. Et là…&lt;/p&gt;
&lt;h2 id=&quot;la-galere-grub-ou-l-art-de-tirer-trois-fois&quot;&gt;La galère GRUB, ou l’art de tirer trois fois&lt;/h2&gt;
&lt;!-- Premier boot après l&#39;installation : **ouverture de Windows**. Normal, me dis-je — le disque Debian n&#39;est probablement pas prioritaire dans le BIOS. --&gt;
&lt;p&gt;Deuxième tentative : je relance l’installateur, je m’assure que tout part sur le bon disque, je redémarre… &lt;strong&gt;Windows encore&lt;/strong&gt;. Troisième essai, même résultat. Trois installations de Debian derrière moi, et toujours pas l’ombre d’un menu GRUB. C’est là que ça gratte.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Le coupable, en réalité : la priorité de démarrage du BIOS.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;GRUB avait bien été installé… mais pas sur le disque que la carte mère regardait en premier. Quand le BIOS cherche un système à démarrer, il consulte sa liste de périphériques bootables dans l’ordre : si Debian (et son GRUB) est sur le &lt;strong&gt;deuxième&lt;/strong&gt; disque et que Windows reste en tête de liste, aucun menu ne s’affiche jamais. Windows démarre, comme si Debian n’existait pas.&lt;/p&gt;
&lt;p&gt;La morale est simple et brutale : &lt;strong&gt;réfléchis à la priorité de démarrage de tes disques avant d’installer quoi que ce soit.&lt;/strong&gt; Sur un OptiPlex 390, on éduque la bête dans le BIOS (&lt;code&gt;F2&lt;/code&gt; au boot), section &lt;em&gt;Boot Sequence&lt;/em&gt; : place le disque Debian en &lt;strong&gt;première position&lt;/strong&gt;. De mon côté, une fois le bon disque en tête, tout est rentré dans l’ordre : menu GRUB, Windows en choix n°1, Debian en n°2, &lt;code&gt;GRUB_TIMEOUT=5&lt;/code&gt; pour respirer.&lt;/p&gt;
&lt;h2 id=&quot;personnalisation-un-environnement-au-look-sweet&quot;&gt;Personnalisation : un environnement au look Sweet&lt;/h2&gt;
&lt;p&gt;Debian tourne. Il reste à faire en sorte que &lt;em&gt;ce soit le mien&lt;/em&gt;. Je pars sur &lt;strong&gt;KDE Plasma&lt;/strong&gt;, avec un thème précis en tête : sombre, bleuté, polaire — le &lt;strong&gt;Sweet-Ambar-Blue&lt;/strong&gt;, décliné jusqu’à l’écran de connexion :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Look &amp;amp; Feel&lt;/strong&gt; Sweet-Ambar-Blue pour Plasma, et &lt;strong&gt;même thème pour SDDM&lt;/strong&gt;, l’écran de connexion — la cohérence visuelle paie ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Icônes&lt;/strong&gt; : candy-icons, colorées sans être criardes ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Curseurs&lt;/strong&gt; : ArcStarry (Sweet en backup) ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Konsole&lt;/strong&gt; : profil « SweetAmbar », la vraie signature — &lt;strong&gt;fond translucide à 50 % avec flou&lt;/strong&gt;, schéma sombre (fond &lt;code&gt;24,27,40&lt;/code&gt;, texte blanc pur) ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GTK&lt;/strong&gt; : Breeze en mode sombre, pour que les applis non-KDE ne jurent pas avec le reste ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wallpaper&lt;/strong&gt; : un cyber-bison qui pose l’ambiance.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-5&quot;&gt;# Profil Konsole « SweetAmbar »&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;[Background]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-8&quot;&gt;Color&lt;/span&gt;&lt;span&gt;=24,27,40&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;[Foreground]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-8&quot;&gt;Color&lt;/span&gt;&lt;span&gt;=255,255,255&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;[General]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-8&quot;&gt;Description&lt;/span&gt;&lt;span&gt;=Sweet Ambar Blue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-8&quot;&gt;Opacity&lt;/span&gt;&lt;span&gt;=0.5&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Le terminal est la vitrine du setup : demi-transparence, un brin de flou, &lt;code&gt;fastfetch&lt;/code&gt; qui annonce la couleur à l’ouverture, et quelques amusements qu’on a tous (&lt;code&gt;cmatrix&lt;/code&gt;, &lt;code&gt;lolcat&lt;/code&gt;, &lt;code&gt;cowsay&lt;/code&gt;).&lt;/p&gt;
&lt;h2 id=&quot;la-tournee-des-outils&quot;&gt;La tournée des outils&lt;/h2&gt;
&lt;p&gt;Parce qu’un bel OS sans bons outils, c’est une façade. J’ai ramené mon quotidien d’étudiant-développeur dessus :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Obsidian&lt;/strong&gt; — le vault de notes autour duquel tourne toute ma vie de travail ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LocalSend&lt;/strong&gt; pour envoyer des fichiers entre machines sans câble ni compte ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firefox ESR&lt;/strong&gt; en brouette de base ;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;zola&lt;/strong&gt;, le générateur de site statique derrière ce blog ;&lt;/li&gt;
&lt;li&gt;arrosé de &lt;code&gt;flatpak&lt;/code&gt; pour tout ce qu’apt ne fournit pas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;bilan&quot;&gt;Bilan&lt;/h2&gt;
&lt;p&gt;En l’espace d’une soirée de panique aboutissant à la récupération d’une machine et d’une semaine de bricolage, l’OptiPlex 390 est passé de « vieille tour sous Windows pirate » à machine de dev principale. Les leçons, en vrac :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La priorité de démarrage du BIOS, c’est la moitié de la bataille&lt;/strong&gt; du dual boot sur disques séparés ;&lt;/li&gt;
&lt;li&gt;Un setup Linux cohérent (thème + SDDM + Konsole + GTK) se monte vite, mais chaque détail compte ;&lt;/li&gt;
&lt;li&gt;Parfois, la créativité technique naît de l’urgence du quotidien : il a fallu perdre un lundi à galérer sur un téléphone pour mériter mardi ce vieux boîtier de récupération.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows est toujours là, cantonné aux jeux. Tout le reste a migré.&lt;/p&gt;
</description>
      </item>
      <item>
          <title>Lancer son blog avec Zola</title>
          <pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate>
          <author>Joseph Humbert</author>
          <link>https://bison-blog-six.vercel.app/blog/lancer-son-blog-avec-zola/</link>
          <guid>https://bison-blog-six.vercel.app/blog/lancer-son-blog-avec-zola/</guid>
          <description xml:base="https://bison-blog-six.vercel.app/blog/lancer-son-blog-avec-zola/">&lt;h2 id=&quot;introduction-a-zola&quot;&gt;Introduction à Zola&lt;/h2&gt;
&lt;p&gt;Zola est un générateur de sites statiques écrit en Rust, conçu pour être rapide, simple et fiable. Créé par Vincent Prouillet, il se distingue par une architecture épurée et une philosophie minimaliste : pas de dépendance lourde, un binaire unique et un rendu prévisible.&lt;/p&gt;
&lt;p&gt;Contrairement à d’autres générateurs qui regroupent de nombreuses fonctionnalités dans le noyau principal, Zola adopte une approche stricte. Le binaire est petit, la compilation est ultra-rapide et le rendu est reproductible. Pour un blog personnel ou un site documentaire, c’est souvent le choix idéal — et pour quelqu’un comme moi qui aime comprendre de bout en bout ce qu’il déploie, c’est exactement ce que je cherchais.&lt;/p&gt;
&lt;h2 id=&quot;pourquoi-zola-plutot-qu-un-autre-outil&quot;&gt;Pourquoi Zola plutôt qu’un autre outil ?&lt;/h2&gt;
&lt;p&gt;J’ai testé plusieurs alternatives ces dernières années. Jekyll (Ruby), Hugo (Go), ou les générateurs basés sur Node. Tous fonctionnent très bien, mais Zola coche des cases qui comptent pour moi :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aucune dépendance d’exécution&lt;/strong&gt; : pas de runtime à installer sur la machine de build, un simple binaire suffit&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vitesse de génération&lt;/strong&gt; : quelques millisecondes même pour un site fourni, ce qui se remarque en local comme en CI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sobriété&lt;/strong&gt; : le minimalisme du rendu pousse à écrire de l’HTML propre et léger, cohérent avec ma manière de concevoir des solutions légères&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Facilité d’intégration&lt;/strong&gt; : un site statique se déploie n’importe où, y compris sur un Raspberry Pi de mon homelab&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce blog tourne pour l’instant sur Vercel, en déploiement continu depuis son dépôt Git, mais c’est tout l’intérêt d’un site statique : il se pose n’importe où, y compris sur le Raspberry Pi de mon homelab — et c’est cette voie-là que je documente ici.&lt;/p&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;p&gt;L’installation de Zola est remarquablement simple. Plusieurs méthodes sont disponibles selon votre système d’exploitation.&lt;/p&gt;
&lt;h3 id=&quot;via-les-binaires-precompiles&quot;&gt;Via les binaires précompilés&lt;/h3&gt;
&lt;p&gt;Téléchargez la dernière version stable depuis la page GitHub des releases. Pour Linux, il suffit de décompresser l’archive et d’ajouter le binaire à votre PATH :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;tar&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; -xzf&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; zola-v0.23.5-x86_64-unknown-linux-gnu.tar.gz&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-8&quot;&gt;export&lt;/span&gt;&lt;span&gt; PATH&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;$HOME&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;/.local/bin:&lt;/span&gt;&lt;span&gt;$PATH&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sous Linux, Zola ne nécessite ni Node.js ni environnement lourd : c’est l’un de ses grands atouts pour qui veut du tooling simple.&lt;/p&gt;
&lt;h3 id=&quot;via-les-gestionnaires-de-paquets&quot;&gt;Via les gestionnaires de paquets&lt;/h3&gt;
&lt;p&gt;Sur macOS, vous pouvez utiliser Homebrew :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;brew&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; install zola&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sur Debian ou Ubuntu, Zola &lt;strong&gt;n’est pas&lt;/strong&gt; dans les dépôts officiels : passez par le binaire des &lt;a rel=&quot;external&quot; href=&quot;https://github.com/getzola/zola/releases&quot;&gt;releases GitHub&lt;/a&gt;, par Snap (&lt;code&gt;snap install --edge zola&lt;/code&gt;), par Flatpak (&lt;code&gt;flatpak install flathub org.getzola.zola&lt;/code&gt;) ou par l’archive APT tierce &lt;a rel=&quot;external&quot; href=&quot;https://pkg.haus&quot;&gt;pkg.haus&lt;/a&gt;. Sur Windows, Winget, Scoop et Chocolatey proposent également Zola.&lt;/p&gt;
&lt;h3 id=&quot;verification-de-l-installation&quot;&gt;Vérification de l’installation&lt;/h3&gt;
&lt;p&gt;Une fois l’installation terminée, vérifiez que tout fonctionne correctement :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;zola&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La commande doit retourner la version installée. Si vous voyez un numéro de version comme &lt;code&gt;0.23.5&lt;/code&gt;, c’est que tout est en ordre et vous pouvez passer à l’étape suivante.&lt;/p&gt;
&lt;h2 id=&quot;initialiser-un-nouveau-site&quot;&gt;Initialiser un nouveau site&lt;/h2&gt;
&lt;p&gt;La commande &lt;code&gt;zola init&lt;/code&gt; crée la structure de base d’un nouveau site. Elle vous demande la base URL du site, puis génère les dossiers et fichiers nécessaires :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;zola&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; init mon-blog&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Après cette commande, vous trouverez dans le dossier &lt;code&gt;mon-blog&lt;/code&gt; les éléments suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;config.toml&lt;/code&gt; : le fichier de configuration principal&lt;/li&gt;
&lt;li&gt;&lt;code&gt;content/&lt;/code&gt; : le dossier contenant les pages et articles&lt;/li&gt;
&lt;li&gt;&lt;code&gt;templates/&lt;/code&gt; : les fichiers de templates HTML&lt;/li&gt;
&lt;li&gt;&lt;code&gt;static/&lt;/code&gt; : les ressources statiques (images, CSS, JavaScript)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sass/&lt;/code&gt; : les feuilles de style SCSS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le fichier de configuration est le cœur du site. C’est là que vous définissez le titre, la base URL, les taxonomies et toutes les options de génération. Notez que les versions récentes de Zola le nomment &lt;code&gt;zola.toml&lt;/code&gt;, avec &lt;code&gt;config.toml&lt;/code&gt; accepté en rétrocompatibilité.&lt;/p&gt;
&lt;h2 id=&quot;comprendre-la-structure-de-configuration&quot;&gt;Comprendre la structure de configuration&lt;/h2&gt;
&lt;p&gt;Le fichier de configuration utilise le format TOML, un format lisible et concis que je retrouve d’ailleurs quotidiennement dans mes pipelines CI et mes fichiers Docker. Voici les éléments principaux :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;base_url =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;https://mon-blog.example.com&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;title =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;Mon Blog&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;author =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;Joseph Humbert&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;generate_feeds =&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;feed_filenames = [&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;&amp;quot;rss.xml&amp;quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;taxonomies = [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  { name =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;tags&amp;quot;&lt;/span&gt;&lt;span&gt;, paginate_by =&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 10&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  { name =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;categories&amp;quot;&lt;/span&gt;&lt;span&gt;, paginate_by =&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 10&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;markdown&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;highlighting&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;light_theme =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;github-light&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;dark_theme =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;synthwave-84&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La section &lt;code&gt;taxonomies&lt;/code&gt; permet de définir les classifications de vos articles. Attention à la syntaxe des versions récentes : il s’agit d’un tableau de tables, et non plus d’une carte clé/valeur. Tags et catégories sont les plus courants, mais vous pouvez en ajouter d’autres selon vos besoins.&lt;/p&gt;
&lt;h2 id=&quot;rediger-et-publier-du-contenu&quot;&gt;Rédiger et publier du contenu&lt;/h2&gt;
&lt;p&gt;Zola organise le contenu en sections. Chaque section est un dossier dans &lt;code&gt;content/&lt;/code&gt; avec un fichier &lt;code&gt;_index.md&lt;/code&gt; qui définit les métadonnées de la section. Les articles sont des fichiers Markdown avec un en-tête TOML délimité par &lt;code&gt;+++&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Voici un exemple de structure pour un blog :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;content/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;  _index.md&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;  blog/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    _index.md&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    article-1.md&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;    article-2.md&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;  a-propos.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pour créer un article, il suffit d’ajouter un fichier &lt;code&gt;.md&lt;/code&gt; dans le dossier &lt;code&gt;blog/&lt;/code&gt; avec le front matter approprié. Un détail qui m’a fait trébucher au départ : les taxonomies d’une page se déclarent dans un sous-bloc &lt;code&gt;[taxonomies]&lt;/code&gt; du front matter, et non comme de simples clés à plat. Une fois ceci compris, Zola gère automatiquement le tri par date, la pagination et la génération des flux RSS.&lt;/p&gt;
&lt;h2 id=&quot;developpement-local-et-build&quot;&gt;Développement local et build&lt;/h2&gt;
&lt;p&gt;Zola propose deux commandes principales pour le développement :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;zola&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; serve&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cette commande lance un serveur de développement local avec rechargement automatique. Vous pouvez prévisualiser le site en temps réel, modifier vos articles et voir les changements immédiatement. Le serveur écoute par défaut sur le port 1111.&lt;/p&gt;
&lt;p&gt;Pour générer la version finale du site, prête pour la mise en production :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;zola&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; build&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La commande crée un dossier &lt;code&gt;public/&lt;/code&gt; contenant tous les fichiers HTML, CSS et JS optimisés. Ce dossier est ce que vous déployez sur votre serveur d’hébergement. La compilation est extrêmement rapide, souvent en moins d’une seconde pour un blog de taille moyenne.&lt;/p&gt;
&lt;h2 id=&quot;deploiement-et-maintenance&quot;&gt;Déploiement et maintenance&lt;/h2&gt;
&lt;p&gt;Une fois le site généré, plusieurs options de déploiement s’offrent à vous :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Netlify&lt;/strong&gt; : déploiement automatique via Git, très populaire pour les sites statiques&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Pages&lt;/strong&gt; : hébergement gratuit avec intégration GitHub Actions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VPS ou serveur personnel&lt;/strong&gt; : transfert via rsync, ou déploiement automatisé via un pipeline de CI que je configure en général avec Docker ou des tâches cron&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour ma part, c’est cette dernière option que j’affectionne : elle s’inscrit naturellement dans ma démarche d’automatisation et de self-hosting. Un simple &lt;code&gt;rsync&lt;/code&gt; ou un job de CI suffit à publier la dernière version du site.&lt;/p&gt;
&lt;p&gt;Pour la maintenance, Zola impose très peu de contraintes. Les mises à jour sont rares et généralement rétrocompatibles. Il est recommandé de surveiller les notes de version pour connaître les changements éventuels.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Lancer un blog avec Zola est une expérience agréable et efficace. L’installation est rapide, la configuration est claire et la rédaction se fait naturellement en Markdown. Pour développeurs techniques cherchant un outil fiable et performant, Zola représente un excellent choix. Cet article est d’ailleurs lui-même publié avec la version 0.23.5 de Zola, et vous êtes en train de lire le résultat direct du pipeline que je viens de décrire.&lt;/p&gt;
&lt;p&gt;N’hésitez pas à explorer la documentation officielle pour approfondir les fonctionnalités avancées, et à me suivre sur &lt;a rel=&quot;external&quot; href=&quot;https://github.com/Tahlasandale&quot;&gt;GitHub&lt;/a&gt; où les projets évoqués dans ce blog sont régulièrement mis à jour.&lt;/p&gt;
</description>
      </item>
      <item>
          <title>Bienvenue sur mon nouveau blog technique</title>
          <pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate>
          <author>Joseph Humbert</author>
          <link>https://bison-blog-six.vercel.app/blog/mon-premier-article/</link>
          <guid>https://bison-blog-six.vercel.app/blog/mon-premier-article/</guid>
          <description xml:base="https://bison-blog-six.vercel.app/blog/mon-premier-article/">&lt;h2 id=&quot;pourquoi-ce-blog&quot;&gt;Pourquoi ce blog ?&lt;/h2&gt;
&lt;p&gt;Après de longues hésitations, j’ai décidé de lancer ce blog. L’idée germe dans mon esprit depuis plusieurs années, mais entre les études à Polytech Paris-Saclay, ma recherche d’alternance et une vingtaine de projets personnels, je n’avais jamais trouvé le bon moment. Aujourd’hui, avec les outils modernes de génération de sites statiques, la barre à franchir est plus basse que jamais. Plus aucune excuse, donc.&lt;/p&gt;
&lt;p&gt;Ce blog a pour vocation de documenter mon parcours technique, de partager des tutoriels et de réfléchir à des questions plus larges sur le développement logiciel : l’architecture, l’autonomie, l’outillage. J’espère que les articles que tu liras ici te seront utiles, que tu sois développeur chevronné ou simple curieux.&lt;/p&gt;
&lt;h2 id=&quot;le-choix-de-zola&quot;&gt;Le choix de Zola&lt;/h2&gt;
&lt;p&gt;J’ai longtemps hésité entre plusieurs générateurs de sites statiques : Jekyll, Hugo, Pelican… autant d’options intéressantes, chacune avec ses avantages et ses inconvénients. Entre un besoin de vitesse et la volonté de garder un contrôle total sur mon code, j’ai finalement opté pour Zola, écrit en Rust.&lt;/p&gt;
&lt;p&gt;Voici les raisons principales de ce choix :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rapidité&lt;/strong&gt; : Zola est écrit en Rust et la génération du site prend quelques millisecondes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplicité&lt;/strong&gt; : la configuration est claire, le templating est intuitif&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt; : la doc officielle est complète et bien structurée&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Communauté&lt;/strong&gt; : malgré une base d’utilisateurs plus modeste que Hugo, la communauté est active et bienveillante&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Templates&lt;/strong&gt; : le système de templates est familier et puissant&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En bonus, Zola gère nativement les flux RSS, les taxonomies et la pagination, ce qui correspond exactement à mes besoins.&lt;/p&gt;
&lt;h2 id=&quot;un-premier-apercu-du-code&quot;&gt;Un premier aperçu du code&lt;/h2&gt;
&lt;p&gt;Pour te donner un aperçu de ce à quoi ressemble un article Zola, voici un petit extrait de configuration en TOML :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;base_url =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;https://blog.example.com&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;title =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;Mon Blog&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;author =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;Joseph Humbert&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;taxonomies&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;tags = [&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;&amp;quot;zola&amp;quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;extra&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;github =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;https://github.com/Tahlasandale&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;portfolio =&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; &amp;quot;https://portfoliojosephhumbert.vercel.app&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ce format est lisible, concis et ne nécessite aucune connaissance approfondie pour être compris. À côté du TOML que je manipule déjà au quotidien avec les CI, les pipelines et les outils comme Docker, c’est un langage que j’apprécie directement.&lt;/p&gt;
&lt;h2 id=&quot;ce-que-tu-trouveras-ici&quot;&gt;Ce que tu trouveras ici&lt;/h2&gt;
&lt;p&gt;Les articles de ce blog seront principalement répartis en quatre grandes thématiques :&lt;/p&gt;
&lt;h3 id=&quot;1-dev-en-autonomie&quot;&gt;1. Dev en autonomie&lt;/h3&gt;
&lt;p&gt;Je développe seul depuis longtemps : 24 dépôts publics sur GitHub, de Flutter à Go en passant par TypeScript. Je partagerai ici des retours d’expérience sur la livraison de projets de A à Z, les pièges à éviter et les méthodes qui fonctionnent.&lt;/p&gt;
&lt;h3 id=&quot;2-self-hosting-et-diy&quot;&gt;2. Self-hosting et DIY&lt;/h3&gt;
&lt;p&gt;Un Raspberry Pi, Docker, du Linux maison : mon homelab est un terrain de jeu pédagogique. J’y déploie des services, j’y expérimente et je documente mes erreurs pour que tu puisses reproduire et aller plus loin.&lt;/p&gt;
&lt;h3 id=&quot;3-ia-appliquee&quot;&gt;3. IA appliquée&lt;/h3&gt;
&lt;p&gt;Bots Telegram, transcription Whisper, agents Hermes et OpenCode, APIs Gemini et Mistral : j’aime brancher les LLM sur des usages concrets plutôt que de les regarder en démonstration. Ces sujets seront régulièrement abordés.&lt;/p&gt;
&lt;h3 id=&quot;4-vie-d-alternant&quot;&gt;4. Vie d’alternant&lt;/h3&gt;
&lt;p&gt;Je suis actuellement en alternance de trois ans chez un éditeur de logiciel pour un produit de gestion d’école, sur une stack PHP/Symfony, React, PostgreSQL, Docker, Kubernetes et Azure. Entre les rythmes entreprise/école et le passage d’étudiant à ingénieur, il y a beaucoup à raconter et à apprendre ensemble.&lt;/p&gt;
&lt;h2 id=&quot;la-stack-technique&quot;&gt;La stack technique&lt;/h2&gt;
&lt;p&gt;Pour les curieux, voici un résumé de la stack technique utilisée pour ce blog :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Générateur&lt;/strong&gt; : Zola 0.23.5&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Langage&lt;/strong&gt; : Rust (pour Zola), HTML/CSS côté front&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hébergement&lt;/strong&gt; : Vercel, en déploiement continu depuis le dépôt Git — un site statique se poserait tout aussi bien sur mon homelab&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feed&lt;/strong&gt; : flux RSS disponible dans &lt;code&gt;/rss.xml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La configuration du site est relativement simple. Le fichier &lt;code&gt;config.toml&lt;/code&gt; définit la structure globale, les taxonomies (tags et catégories) et les options de génération. Les templates sont stockés dans le dossier &lt;code&gt;templates/&lt;/code&gt; et les feuilles de style dans &lt;code&gt;static/css/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Je réfléchis également à ajouter un système de commentaires ouvert, peut-être via un service externe comme Giscus. Ce n’est pas encore décidé, mais c’est une piste que j’explore.&lt;/p&gt;
&lt;h2 id=&quot;pour-conclure&quot;&gt;Pour conclure&lt;/h2&gt;
&lt;p&gt;Ce premier article a surtout vocation à poser les bases. Il est court, volontairement simple, et sert surtout d’introduction à ce qui sera développé dans les prochains billets. Je ne cherchais pas ici à impressionner, mais simplement à dire bonjour et à te donner envie de revenir.&lt;/p&gt;
&lt;p&gt;Si tu as des suggestions d’articles, des remarques sur le site ou simplement envie d’échanger, tu me trouveras sur GitHub ou mon portfolio. Les retours des lecteurs sont toujours précieux et m’aident à améliorer la qualité du contenu.&lt;/p&gt;
&lt;p&gt;Merci de ta visite et à bientôt pour de nouveaux articles.&lt;/p&gt;
</description>
      </item>
    </channel>
</rss>
