<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Blog on Antoine Sauvinet - Blog &amp; Portfolio</title><link>https://oinant.com/fr/posts/</link><description>Recent content in Blog on Antoine Sauvinet - Blog &amp; Portfolio</description><generator>Hugo -- 0.154.5</generator><language>fr-FR</language><lastBuildDate>Tue, 06 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://oinant.com/fr/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Le(s) rôle(s) du CTO dans une DSI : un titre, des réalités multiples</title><link>https://oinant.com/fr/posts/2026-01-06-les-roles-du-cto-dans-une-dsi/</link><pubDate>Tue, 06 Jan 2026 00:00:00 +0000</pubDate><guid>https://oinant.com/fr/posts/2026-01-06-les-roles-du-cto-dans-une-dsi/</guid><description>Derrière le titre &amp;lsquo;CTO&amp;rsquo;, des missions et périmètres très différents selon les organisations. Décryptage des réalités terrain et framework pour clarifier son rôle.</description></item><item><title>Build vs Buy en 2026 : le paradigme a changé</title><link>https://oinant.com/fr/posts/2026-01-05-build-vs-buy-2026/</link><pubDate>Mon, 05 Jan 2026 00:00:00 +0000</pubDate><guid>https://oinant.com/fr/posts/2026-01-05-build-vs-buy-2026/</guid><description>&lt;p&gt;Il y a dix ans, la question &amp;ldquo;make or buy&amp;rdquo; se résumait souvent à un calcul simple : est-ce qu&amp;rsquo;on a les devs pour le faire ? Aujourd&amp;rsquo;hui, avec l&amp;rsquo;IA agentique qui accélère les développements et standardise les pratiques, l&amp;rsquo;équation mérite d&amp;rsquo;être revisitée.&lt;/p&gt;
&lt;p&gt;Non pas que la réponse soit devenue plus simple. Elle reste &amp;ldquo;it depends&amp;rdquo;. Mais les critères sur lesquels ça dépend ont évolué.&lt;/p&gt;
&lt;figure class="align-center "&gt;
&lt;img loading="lazy" src="https://oinant.com/images/posts/build-vs-buy-framework-2026.png#center"
alt="Framework Make, Operate or Buy 2026"/&gt; &lt;figcaption&gt;
&lt;p&gt;Vue d&amp;rsquo;ensemble du framework de décision&lt;/p&gt;</description></item><item><title>SD Generator CLI : fini le cargo cult avec Stable Diffusion</title><link>https://oinant.com/fr/posts/2025-10-21-sd-generator-cli-stable-diffusion/</link><pubDate>Tue, 21 Oct 2025 00:00:00 +0000</pubDate><guid>https://oinant.com/fr/posts/2025-10-21-sd-generator-cli-stable-diffusion/</guid><description>J&amp;rsquo;open-source SD Generator CLI, un outil pour arrêter de se battre avec les workflows Stable Diffusion.</description></item><item><title>SILK-CLI : un workflow d'écriture intégrant les LLMs</title><link>https://oinant.com/fr/posts/2025-06-17-silk-cli-workflow-ecriture-llm/</link><pubDate>Tue, 17 Jun 2025 00:00:00 +0000</pubDate><guid>https://oinant.com/fr/posts/2025-06-17-silk-cli-workflow-ecriture-llm/</guid><description>Présentation de SILK-CLI, un outil CLI pour auteurs intégrant les LLMs dans leur workflow d&amp;rsquo;écriture.</description></item><item><title>Les LLMs remplaceront-ils les développeurs ?</title><link>https://oinant.com/fr/posts/2024-09-04-llms-remplaceront-ils-les-developpeurs/</link><pubDate>Wed, 04 Sep 2024 00:00:00 +0000</pubDate><guid>https://oinant.com/fr/posts/2024-09-04-llms-remplaceront-ils-les-developpeurs/</guid><description>La réponse est non. Les LLMs ne remplaceront pas les développeurs, du moins dans leur forme actuelle.</description></item><item><title>[EnhanceYourCode] : le Builder Pattern, Partie 2</title><link>https://oinant.com/fr/posts/2015-09-16-enhanceyourcode-the-builder-pattern-part2/</link><pubDate>Wed, 16 Sep 2015 09:59:55 +0000</pubDate><guid>https://oinant.com/fr/posts/2015-09-16-enhanceyourcode-the-builder-pattern-part2/</guid><description>&lt;p&gt;&lt;a href="https://oinant.com/wp-content/uploads/2015/08/builder1.jpg"&gt;&lt;img alt="Builder" loading="lazy" src="https://oinant.com/wp-content/uploads/2015/08/builder1.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bonjour,&lt;/p&gt;
&lt;p&gt;Dans l&amp;rsquo;&lt;a href="https://oinant.com/2015/09/09/enhanceyourcode-the-builder-pattern/"&gt;article précédent&lt;/a&gt;, nous avons exploré la théorie du Builder pattern.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Voyons un exemple plus concret :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Supposons que nous construisons le modèle de base d&amp;rsquo;un jeu de rôle (RPG). Voici les règles de base :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un joueur peut être un Héros : un Guerrier, un Mage, ou un Voleur (on garde ça simple)&lt;/li&gt;
&lt;li&gt;Chaque Héros a 4 caractéristiques principales : Santé, Force, Esprit et Vitesse, comptées en points.&lt;/li&gt;
&lt;li&gt;Les Héros ont un Niveau, et les caractéristiques de départ sont basées sur ce niveau (Santé commence à Niveau * 10, Force et Esprit commencent à Niveau * 5, et Vitesse commence à Niveau * 3)&lt;/li&gt;
&lt;li&gt;Le Guerrier a un Modificateur (+2 Force, -2 Esprit), le Mage a un Modificateur (+2 Esprit, -2 Force)&lt;/li&gt;
&lt;li&gt;Le joueur peut améliorer 2 Caractéristiques de 1 point chacune ou 1 caractéristique de 2 points, afin de personnaliser son Héros.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Une implémentation naïve de la classe Hero serait :&lt;/p&gt;</description></item><item><title>[EnhanceYourCode] : le Builder Pattern</title><link>https://oinant.com/fr/posts/2015-09-09-enhanceyourcode-the-builder-pattern/</link><pubDate>Wed, 09 Sep 2015 14:58:47 +0000</pubDate><guid>https://oinant.com/fr/posts/2015-09-09-enhanceyourcode-the-builder-pattern/</guid><description>&lt;p&gt;&lt;a href="https://oinant.com/wp-content/uploads/2015/08/builder1.jpg"&gt;&lt;img alt="Builder" loading="lazy" src="https://oinant.com/wp-content/uploads/2015/08/builder1.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bonjour,&lt;/p&gt;
&lt;p&gt;Dans cet article, j&amp;rsquo;aimerais vous présenter le Builder pattern et comment je l&amp;rsquo;utilise dans mon code C#.&lt;/p&gt;
&lt;p&gt;Le Builder Pattern est un &lt;a href="https://en.wikipedia.org/wiki/Creational_pattern"&gt;Creational design pattern&lt;/a&gt;, comme le Factory Method Pattern que j&amp;rsquo;ai déjà couvert dans cet &lt;a href="https://oinant.com/2015/07/22/enhanceyourcode-the-factory-method-pattern/"&gt;article précédent&lt;/a&gt;. Son objectif principal est de fournir un DSL léger pour construire des objets en définissant des propriétés de démarrage, en séparant le processus de construction d&amp;rsquo;un objet de l&amp;rsquo;objet lui-même.&lt;/p&gt;
&lt;p&gt;Essentiellement, l&amp;rsquo;idée est de créer une classe avec des champs mutables, qui seront initialisés avec des méthodes dédiées, et une méthode finale qui crée l&amp;rsquo;objet lui-même à partir de ces valeurs. Voici un exemple abstrait :&lt;/p&gt;</description></item><item><title>Canopy : Automatisez vos tests navigateur en F# !</title><link>https://oinant.com/fr/posts/2015-08-31-canopy-fsharp-intro/</link><pubDate>Mon, 31 Aug 2015 10:15:15 +0000</pubDate><guid>https://oinant.com/fr/posts/2015-08-31-canopy-fsharp-intro/</guid><description>&lt;p&gt;&lt;a href="https://oinant.com/wp-content/uploads/2015/08/frim_canopy.jpg"&gt;&lt;img alt="OLYMPUS DIGITAL CAMERA" loading="lazy" src="https://oinant.com/wp-content/uploads/2015/08/frim_canopy.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bonjour,&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;aimerais vous présenter &lt;strong&gt;&lt;a href="http://lefthandedgoat.github.io/canopy/index.html"&gt;Canopy&lt;/a&gt;&lt;/strong&gt;, une surcouche Selenium écrite en F#. Elle vous apporte la concision et la clarté de F# pour vos tests Selenium.&lt;/p&gt;
&lt;p&gt;Tout d&amp;rsquo;abord, nous devons créer une nouvelle application console F#, puis nous installons canopy dans notre projet : &lt;a href="https://oinant.com/wp-content/uploads/2015/08/install-package1.png"&gt;&lt;img alt="canopytryout-install-package" loading="lazy" src="https://oinant.com/wp-content/uploads/2015/08/install-package1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Comme vous pouvez le voir, le package NuGet de canopy va récupérer l&amp;rsquo;écosystème Selenium.&lt;/p&gt;
&lt;p&gt;Créons notre premier test. Il vérifiera qu&amp;rsquo;une recherche de &amp;ldquo;canopy F#&amp;rdquo; dans Google affichera le site officiel de Canopy comme premier résultat. Voici le petit bootstrapping nécessaire pour Canopy :&lt;/p&gt;</description></item><item><title>[Node.js] Construire un gestionnaire de processus propre</title><link>https://oinant.com/fr/posts/2015-08-30-node-js-build-a-clean-process-manager/</link><pubDate>Sun, 30 Aug 2015 12:06:56 +0000</pubDate><guid>https://oinant.com/fr/posts/2015-08-30-node-js-build-a-clean-process-manager/</guid><description>&lt;p&gt;Dans cet article, je vais démontrer comment construire un gestionnaire de processus simple et maintenable pour Node.js, en tirant parti de son Event Loop.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;idée principale est d&amp;rsquo;avoir un processeur central capable d&amp;rsquo;exécuter une série de tâches, de manière synchrone.
Comme vous le savez peut-être, JavaScript est par essence un langage asynchrone.
Prenons un exemple simple :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;CrawlingAWebPageAndGetLinks&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// do the stuff the method pretend;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;program&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;CrawlingAWebPageAndGetLinks&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Comme le flux d&amp;rsquo;exécution est asynchrone, la variable result ne sera pas valorisée avant que la méthode de crawling ne se termine, et l&amp;rsquo;utilisation de la variable se produira avant sa valorisation.
La solution standard en JavaScript pour gérer ce problème est d&amp;rsquo;utiliser une méthode callback :&lt;/p&gt;</description></item><item><title>[EnhanceYourCode] : the Factory Method Pattern</title><link>https://oinant.com/fr/posts/2015-07-22-enhanceyourcode-the-factory-method-pattern/</link><pubDate>Wed, 22 Jul 2015 21:33:31 +0000</pubDate><guid>https://oinant.com/fr/posts/2015-07-22-enhanceyourcode-the-factory-method-pattern/</guid><description>Le Factory Method pattern est l&amp;rsquo;un des design patterns de création les plus utiles. Il permet de déléguer la création d&amp;rsquo;un objet à une classe dédiée, améliorant la testabilité et respectant le principe de responsabilité unique.</description></item><item><title>Les estimations sont-elles critiques pour le business ?</title><link>https://oinant.com/fr/posts/2015-06-16-are-estimates-business-critical/</link><pubDate>Tue, 16 Jun 2015 09:12:27 +0000</pubDate><guid>https://oinant.com/fr/posts/2015-06-16-are-estimates-business-critical/</guid><description>&lt;p&gt;Grâce à mon premier article, j&amp;rsquo;ai eu la chance d&amp;rsquo;avoir des discussions très intéressantes avec certains collègues.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;une des principales préoccupations concernait l&amp;rsquo;aspect obligatoire des estimations dans certaines situations, principalement pour arbitrer entre deux projets.&lt;/p&gt;
&lt;p&gt;Tout d&amp;rsquo;abord, permettez-moi de clarifier ma pensée sur les estimations. Pour fournir une estimation fiable, les critères suivants doivent être réunis :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L&amp;rsquo;équipe doit se connaître parfaitement, sachant précisément quelles sont les forces et faiblesses de chaque membre.&lt;/li&gt;
&lt;li&gt;Le codebase de l&amp;rsquo;équipe doit être soit vierge, soit sans défauts.&lt;/li&gt;
&lt;li&gt;Le produit doit être entièrement identifié et spécifié, et le Product Owner, en tant qu&amp;rsquo;expert du domaine, doit être sûr à 100% de ce que le produit final doit être.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je posterai plus à ce sujet plus tard, mais à mon avis, ces conditions sont au mieux anti-agiles et au pire impossibles à obtenir.&lt;/p&gt;</description></item><item><title>(No)Estimates !</title><link>https://oinant.com/fr/posts/2015-06-08-noestimates/</link><pubDate>Mon, 08 Jun 2015 18:12:39 +0000</pubDate><guid>https://oinant.com/fr/posts/2015-06-08-noestimates/</guid><description>&lt;p&gt;C&amp;rsquo;est un combat quotidien pour le développeur d&amp;rsquo;aujourd&amp;rsquo;hui : donner des estimations précises du travail que nous faisons, ou que nous devrons faire. Quand avez-vous réussi pour la dernière fois à donner une estimation vraiment précise ? Vous savez, celle qui correspond parfaitement à la quantité de travail à faire, dans le délai exact, avec une vision claire de ce que vous deviez accomplir ? Ça fait un moment, n&amp;rsquo;est-ce pas ?&lt;/p&gt;</description></item></channel></rss>