<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on Benjamin Touchard — Dev Senior Go &amp; Architecte — CTO Fractionnel</title><link>https://kolapsis.com/blog/</link><description>Recent content in Blog on Benjamin Touchard — Dev Senior Go &amp; Architecte — CTO Fractionnel</description><generator>Hugo</generator><language>fr</language><lastBuildDate>Wed, 11 Nov 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://kolapsis.com/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Les tests passent. Ça ne dit pas que ça marche.</title><link>https://kolapsis.com/blog/how-to-validate-ai-written-code/</link><pubDate>Wed, 11 Nov 2026 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/how-to-validate-ai-written-code/</guid><description>&lt;p>Je développe mes produits avec un agent de code. Il écrit, je cadre, je relis, je décide. Cette façon de travailler pose une question que tout le monde finit par se poser : comment savoir que ce qui a été produit fait vraiment ce qui était demandé ?&lt;/p>
&lt;p>Ma réponse tient en deux étages. Le premier s&amp;rsquo;appelle &lt;a href="https://github.com/kOlapsis/speckit-guard">speckit-guard&lt;/a>. Le second est un banc de test dans une machine virtuelle. Cet article explique pourquoi le premier ne suffit pas, et ce que le second apporte.&lt;/p></description></item><item><title>Sortir de Google Workspace : mail, agendas, visio et bureautique sur un serveur dédié, un seul SSO</title><link>https://kolapsis.com/blog/how-to-exit-google-workspace/</link><pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/how-to-exit-google-workspace/</guid><description>&lt;h2 id="ce-qui-tourne-aujourdhui">Ce qui tourne aujourd&amp;rsquo;hui&lt;/h2>
&lt;p>Le 24 octobre 2026, l&amp;rsquo;enregistrement MX de mon domaine a cessé de pointer vers Google. Depuis, le mail arrive sur un serveur dédié, dans Stalwart, et je le lis dans Bulwark, un webmail installé comme application sur le bureau et sur Android. Les agendas et les contacts sont dans Stalwart aussi, qui fait Calendrier et Contact sans rien ajouter. La page de prise de rendez-vous que les prospects utilisent n&amp;rsquo;est plus un lien Google Calendar. La visio n&amp;rsquo;est plus Meet. Les documents s&amp;rsquo;ouvrent dans Collabora, depuis OpenCloud. Et chacun de ces services demande le même compte, le même mot de passe, la même double authentification : Authentik.&lt;/p></description></item><item><title>Dix pannes, dix bascules : le premier banc haute disponibilité de Maintenant sur OpenSVC</title><link>https://kolapsis.com/blog/maintenant-ha-opensvc-premier-banc/</link><pubDate>Sat, 03 Oct 2026 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/maintenant-ha-opensvc-premier-banc/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>Mise à jour du 12 octobre.&lt;/strong> Le mode PostgreSQL est passé sur le banc : 18 scénarios sur 18, aucune écriture acquittée perdue sur 12 042, et l&amp;rsquo;ancien primaire reconstruit en standby 50 fois sur 50. Les chiffres, ce qu&amp;rsquo;il a fallu corriger et les trois points laissés en suspens au premier passage sont dans la &lt;a href="#postgresql">nouvelle section&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;p>Dans le &lt;a href="https://kolapsis.com/blog/bilan-mai-aout-2026/">bilan de mai à août&lt;/a>, j&amp;rsquo;annonçais le chantier haute disponibilité du programme Hyper Open X : Maintenant devient un service OpenSVC sur deux nœuds, avec une adresse de service qui suit l&amp;rsquo;instance active et une bascule automatique quand ce nœud tombe. Je parlais aussi d&amp;rsquo;un banc d&amp;rsquo;essai, deux nœuds, un arbitre de quorum, un WAN simulé et des scénarios de panne rejouables, alors encore en conception.&lt;/p></description></item><item><title>Mon skill m'a généré une facture électronique, puis l'a envoyé et elle est arrivée du premier coup ! Ensuite, il a fallu en faire un produit...</title><link>https://kolapsis.com/blog/gofact-genese/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/gofact-genese/</guid><description>&lt;p>La réforme de la facturation électronique française arrive, et comme beaucoup d&amp;rsquo;indépendants, j&amp;rsquo;avais tout pour la détester : des factures HTML soignées que j&amp;rsquo;imprimais en PDF d&amp;rsquo;un Ctrl+P, un régime simple, et aucune envie de payer un SaaS pour transformer trois factures par mois en Factur-X.&lt;/p>
&lt;p>Factur-X, pour situer : un PDF/A-3 qui embarque un XML structuré (CII, sémantique EN 16931). Le PDF pour les humains, le XML pour les machines et l&amp;rsquo;administration. Et l&amp;rsquo;envoi ne se fait plus par mail mais via une plateforme de dématérialisation (PDP), qui route la facture jusqu&amp;rsquo;à ton client.&lt;/p></description></item><item><title>Solo, vingt features, AGPL : deux mois à coder Maintenant avec Claude</title><link>https://kolapsis.com/blog/maintenant-solo-claude/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/maintenant-solo-claude/</guid><description>&lt;h2 id="le-résultat-avant-lhistoire">Le résultat avant l&amp;rsquo;histoire&lt;/h2>
&lt;p>Maintenant, c&amp;rsquo;est un binaire Go de quelques mégaoctets qui tourne à 17 Mo de RAM en idle. Tu le drop dans un container, il auto-discover tes containers Docker, Swarm et Kubernetes, surveille tes endpoints HTTP et TCP, tes jobs cron via heartbeats, tes certificats TLS, les ressources de chaque service, détecte les images qui ont une mise à jour disponible, repère les configurations réseau dangereuses — ports DB exposés, bindings 0.0.0.0, containers privilégiés — expose une status page publique, balance les alertes via webhook, Discord, et en édition Pro Slack, Teams, email. Il embarque un serveur MCP avec OAuth2 pour qu&amp;rsquo;un assistant IA puisse interroger ton infra directement. Il stocke tout dans SQLite en WAL, sans dépendance externe. Pas de Postgres, pas de Redis, pas de queue. Le frontend Vue 3 + TypeScript + Tailwind est embarqué dans le binaire via &lt;code>embed.FS&lt;/code>. Une seule image Docker, un seul process, zéro orchestration.&lt;/p></description></item><item><title>Pétille — pour les enfants, ce que je n'ai pas trouvé ailleurs</title><link>https://kolapsis.com/blog/petille-carnet-appetences/</link><pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/petille-carnet-appetences/</guid><description>&lt;p>Celui-ci n&amp;rsquo;est pas un outil pour DSI. C&amp;rsquo;est pour mes filles — et les vôtres, si ça vous parle.&lt;/p>
&lt;h2 id="le-déclic">Le déclic&lt;/h2>
&lt;p>J&amp;rsquo;ai deux filles, 6 et 8 ans. Comme beaucoup de parents, j&amp;rsquo;ai fini par remarquer deux choses.&lt;/p>
&lt;p>La première, c&amp;rsquo;est qu&amp;rsquo;elles connaissent environ &lt;strong>cinq métiers&lt;/strong> : vétérinaire, maîtresse, docteur, policier, pompier. C&amp;rsquo;est normal — à cet âge, l&amp;rsquo;univers des métiers possibles se construit sur ce qu&amp;rsquo;on voit autour de soi. Ce n&amp;rsquo;est pas un problème à régler.&lt;/p></description></item><item><title>Maintenant — Monitorer tout. Ne rien configurer.</title><link>https://kolapsis.com/blog/maintenant-monitoring-unifie/</link><pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/maintenant-monitoring-unifie/</guid><description>&lt;p>La plupart des self-hosters jonglent entre 3 et 5 outils pour surveiller leur stack : un pour les containers, un pour l&amp;rsquo;uptime, un pour les certificats, un pour les métriques, et encore un autre pour la page de statut. J&amp;rsquo;ai construit Maintenant pour les remplacer tous.&lt;/p>
&lt;h2 id="le-problème">Le problème&lt;/h2>
&lt;p>Uptime Kuma pour les endpoints. Portainer ou Dozzle pour les containers. Certbot + un script maison pour les certificats. Prometheus + Grafana pour les métriques. Et encore un outil pour la page de statut publique.&lt;/p></description></item><item><title>GMX : mon transpileur Go + HTMX inspiré de Vue</title><link>https://kolapsis.com/blog/gmx-transpileur-go-htmx/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/gmx-transpileur-go-htmx/</guid><description>&lt;p>🔧 J&amp;rsquo;ai construit mon propre framework. Pour le fun.&lt;/p>
&lt;p>Go au quotidien, Vue en front depuis des années. J&amp;rsquo;adore la DX des single-file components, la Composition API, tout colocalisé dans un .vue, c&amp;rsquo;est propre.&lt;/p>
&lt;p>Mais les SPA&amp;hellip; c&amp;rsquo;est lent. Hydration, bundle JS de 400ko, loading spinners partout.&lt;br>
Le SSR c&amp;rsquo;est mieux, mais on maintient deux runtimes pour le prix d&amp;rsquo;un.&lt;/p>
&lt;p>Et puis il y avait HTMX m&amp;rsquo;intriguait depuis un moment.&lt;br>
Le serveur renvoie du HTML, le navigateur l&amp;rsquo;affiche.&lt;br>
Pas de build JS, pas de state client, pas de virtual DOM.&lt;br>
Mais je n&amp;rsquo;avais jamais pris le temps de vraiment creuser.&lt;/p></description></item><item><title>Herald : le serveur MCP qui se développe lui-même</title><link>https://kolapsis.com/blog/herald-mcp-claude-to-claude/</link><pubDate>Thu, 12 Feb 2026 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/herald-mcp-claude-to-claude/</guid><description>&lt;p>On a tous vécu ce moment : 45 min de design system sur le &lt;a href="http://claude.ai/">Claude.ai&lt;/a> (ou sur le tel), et Claude Code qui nous répond &amp;ldquo;Hello, what are we building today?&amp;rdquo; 💀 Quand tu arrives devant ta console&amp;hellip;&lt;/p>
&lt;p>Herald me trottait dans la tête depuis des mois. Un pont entre Claude Chat et Claude Code. Piloter mon poste de dev depuis mon téléphone.&lt;/p>
&lt;p>Voici l&amp;rsquo;histoire de Herald — un serveur MCP auto-hébergé qui relie Claude Chat à Claude Code — et la session où il a gagné sa propre confiance.&lt;/p></description></item><item><title>Mon architecture d'auto-hébergement Docker, de A à Z</title><link>https://kolapsis.com/blog/the-ultimate-guide-to-self-hosting/</link><pubDate>Fri, 16 Jan 2026 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/the-ultimate-guide-to-self-hosting/</guid><description>&lt;p>Ça fait plusieurs années que je déploie la même architecture Docker chez mes clients — startups, PME, projets perso. À force d&amp;rsquo;itérations, j&amp;rsquo;ai une stack qui tient la route : sécurisée, monitorée, avec des backups qui fonctionnent (et que je teste, ce qui n&amp;rsquo;est pas la même chose).&lt;/p>
&lt;p>Cet article, c&amp;rsquo;est le condensé de tout ça. Pas de théorie, que du concret — les mêmes fichiers de config que j&amp;rsquo;utilise en production.&lt;/p></description></item><item><title>SHM — Pourquoi j'ai créé un système de métriques pour le self-hosted</title><link>https://kolapsis.com/blog/shm-metriques-self-hosted/</link><pubDate>Fri, 19 Dec 2025 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/shm-metriques-self-hosted/</guid><description>&lt;p>Prometheus est fantastique. Mais pour un serveur dédié qui héberge une dizaine de services Docker, c&amp;rsquo;est parfois sortir le bazooka pour tuer une mouche.&lt;/p>
&lt;h2 id="le-constat">Le constat&lt;/h2>
&lt;p>Quand vous auto-hébergez vos services, vous voulez savoir trois choses :&lt;/p>
&lt;ol>
&lt;li>Est-ce que tout tourne ?&lt;/li>
&lt;li>Combien de ressources ça consomme ?&lt;/li>
&lt;li>Est-ce que quelque chose a changé depuis hier ?&lt;/li>
&lt;/ol>
&lt;p>Prometheus + Grafana répondent à ces questions, mais avec un coût non négligeable en ressources et en complexité de configuration. Pour un petit serveur, ça peut représenter 20-30% de la RAM disponible juste pour le monitoring.&lt;/p></description></item><item><title>Ackify — un outil simple, né d'un vrai besoin</title><link>https://kolapsis.com/blog/ackify/</link><pubDate>Sun, 28 Sep 2025 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/ackify/</guid><description>&lt;p>L&amp;rsquo;idée d&amp;rsquo;Ackify ne vient pas d&amp;rsquo;une longue étude de marché, mais simplement d&amp;rsquo;une demande d&amp;rsquo;une collègue : &lt;em>« Comment prouver facilement qu&amp;rsquo;un document a bien été lu ? »&lt;/em>&lt;/p>
&lt;h2 id="le-problème">Le problème&lt;/h2>
&lt;p>Dans beaucoup d&amp;rsquo;organisations, il est essentiel de prouver qu&amp;rsquo;un document a été lu et compris par son destinataire. Que ce soit pour la compliance RGPD, les procédures internes, les documents contractuels ou les mises à jour de politique interne.&lt;/p></description></item><item><title>L'art de la traçabilité</title><link>https://kolapsis.com/blog/lart-de-la-tracabilite/</link><pubDate>Sun, 28 Sep 2025 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/lart-de-la-tracabilite/</guid><description>&lt;p>Chez Butterfly Therapeutics, on avait une stack un peu particulière : du Go/PostgreSQL et Vue 3 pour le web, des apps dans des casques de réalité virtuelle sous Android, des apps Android et iOS classiques. Le tout dockerisé, déployé sur un serveur dédié. Quand un patient signalait un bug dans son casque VR en pleine séance de traitement de l&amp;rsquo;endométriose, il fallait être capable de remonter la chaîne — du casque au backend — en quelques minutes. Pas le lendemain.&lt;/p></description></item><item><title>L'importance de l'idempotence dans vos API</title><link>https://kolapsis.com/blog/idempotence-api/</link><pubDate>Wed, 19 Mar 2025 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/idempotence-api/</guid><description>&lt;p>Vous avez un formulaire de paiement. L&amp;rsquo;utilisateur clique sur &amp;ldquo;Payer&amp;rdquo;, la requête part, le réseau lag, l&amp;rsquo;utilisateur ne voit rien se passer, il reclique. Votre API crée deux commandes. Deux prélèvements. Le client râle, le support vous appelle, et vous passez votre après-midi à annuler un doublon en base.&lt;/p>
&lt;p>Ce problème a un nom : l&amp;rsquo;absence d&amp;rsquo;idempotence. &lt;strong>Une requête idempotente, c&amp;rsquo;est une requête qui produit le même résultat qu&amp;rsquo;on l&amp;rsquo;exécute une fois ou dix fois.&lt;/strong> Pas de doublon, pas d&amp;rsquo;effet de bord.&lt;/p></description></item><item><title>Création d'une extension de génération de QRCode en SVG pour PostgreSQL</title><link>https://kolapsis.com/blog/pgqrcode-postgresql/</link><pubDate>Fri, 27 Sep 2024 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/pgqrcode-postgresql/</guid><description>&lt;p>Quand vous avez besoin de générer des QR codes à la volée dans une application, la logique classique est de le faire côté backend. Mais parfois, le plus efficace c&amp;rsquo;est de le faire directement en base de données.&lt;/p>
&lt;h2 id="le-besoin">Le besoin&lt;/h2>
&lt;p>Dans un projet où nous devions générer des milliers de QR codes pour des documents traçables, le pipeline classique (requête BDD → backend → librairie QR → rendu SVG) ajoutait de la latence et de la complexité inutiles.&lt;/p></description></item><item><title>Agnostic Environment</title><link>https://kolapsis.com/blog/agnostic-environment/</link><pubDate>Thu, 29 Aug 2024 00:00:00 +0000</pubDate><guid>https://kolapsis.com/blog/agnostic-environment/</guid><description>&lt;p>Si vous êtes un développeur junior, vous n&amp;rsquo;avez peut-être pas encore entendu parler du &lt;strong>manifeste des Twelve-Factor App&lt;/strong>. Si c&amp;rsquo;est le cas, je vous conseille vivement de vous y intéresser : &lt;a href="https://12factor.net/fr/">https://12factor.net/fr/&lt;/a>.&lt;/p>
&lt;p>Il y a, je crois, deux grands principes dans le développement logiciel. Ils devraient être les lignes directrices de tout développeur : les principes &lt;strong>SOLID&lt;/strong> et le manifeste des &lt;strong>Twelve-Factor Apps&lt;/strong>.&lt;/p>
&lt;h2 id="la-configuration">La configuration&lt;/h2>
&lt;p>Je voulais donc m&amp;rsquo;attarder sur l&amp;rsquo;un des éléments du manifeste Twelve-Factor, à savoir la configuration, qui devrait toujours être la plus agnostique possible : &lt;a href="https://12factor.net/fr/config">https://12factor.net/fr/config&lt;/a>.&lt;/p></description></item></channel></rss>