<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:webfeeds="http://webfeeds.org/rss/1.0" version="2.0">
  <channel>
    <atom:link href="http://pubsubhubbub.appspot.com/" rel="hub"/>
    <atom:link href="https://f43.me/lesjoiesducode.xml" rel="self" type="application/rss+xml"/>
    <title>les_joies_du_code();</title>
    <description>Les joies du code, l&amp;#039;instant GIF des développeurs !</description>
    <link>http://lesjoiesducode.fr</link>
    <webfeeds:icon>https://s2.googleusercontent.com/s2/favicons?alt=feed&amp;domain=lesjoiesducode.fr</webfeeds:icon>
    <webfeeds:logo>http://ljdchost.com/ljdc-theme/img/les-joies-du-code.png</webfeeds:logo>
    <webfeeds:accentColor>5996FF</webfeeds:accentColor>
    <generator>f43.me</generator>
    <lastBuildDate>Mon, 11 May 2026 22:26:16 +0200</lastBuildDate>
    <item>
      <title><![CDATA[Quand le client demande si on peut avoir des analytics nominatifs]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-client-demande-si-on-peut-avoir-des-analytics-nominatifs</link>
      <guid>https://lesjoiesducode.fr/quand-le-client-demande-si-on-peut-avoir-des-analytics-nominatifs</guid>
      <pubDate>Mon, 11 May 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Bon plan : profitez du Brand Month de FlexiSpot pour booster votre setup de dev]]></title>
      <description><![CDATA[<p>Grande nouvelle pour tous ceux qui rêvent d'améliorer leur setup : FlexiSpot organise tout au long du mois de mai son <strong>Brand Month</strong>, avec <a href="https://wgl.io/9slf2v97" target="_blank">jusqu'à -50% sur son site</a>.</p><p>L'occasion de profiter d'offres et de réductions sur les produits phares de la marque, reconnus et appréciés d'un grand nombre de développeurs.</p><p>En complément des remises appliquées de manière globale sur ce mois de mai, le Brand Month vous permet également de profiter de coupons exclusifs et limités pour tout casser (en plus de votre code) au niveau des prix.</p><p><span># En partenariat avec FlexiSpot</span></p><p>Dans cet article, je vous présente mes coups de coeur parmi les produits couverts par cet événement, qui plaisent déjà aux développeurs et sauront vous aider à être plus productifs, mais aussi (et surtout) à prendre soin de votre petit corps.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/05/deadpool-heart.png" alt="Deadpool qui fait un coeur avec ses mains" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/05/deadpool-heart.png 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/deadpool-heart-300x164.png 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/deadpool-heart-1024x560.png 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/deadpool-heart-768x420.png 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p class="c10"><a href="https://wgl.io/9slf2v97" target="_blank">FlexiSpot : accédez dès maintenant aux offres du Brand Month</a></p><h2>Les bureaux assis-debout ont la cote</h2><p>Vous n'êtes peut-être pas sans savoir que j'utilise depuis plus de six mois le dernier bureau E7 Flow de la marque, je <span class="c11">prompte</span> code d'ailleurs toujours dessus, et c'est un véritable plaisir.</p><p>Quand on a l'habitude de travailler assis, la position debout n'est pas forcément la première chose qui nous vient en tête. Et pourtant, une fois adoptée, l'alternance assis-debout devient le genre de truc qu'on ne peut plus lâcher après deux semaines.</p><p class="c10"><img src="https://lesjoiesducode.fr/wp-content/uploads/2025/11/e7-flow-debout.jpg" alt="Le bureau E7 Flow en position debout dans l'appartement où je travaille" class="c12" srcset="https://lesjoiesducode.fr/wp-content/uploads/2025/11/e7-flow-debout.jpg 750w, https://lesjoiesducode.fr/wp-content/uploads/2025/11/e7-flow-debout-225x300.jpg 225w" sizes="(max-width: 750px) 100vw, 750px" /></p><p>De mon côté, j'ai très clairement moins de fatigue mentale en fin de journée, et je constate des sessions de focus plus nettes, plus efficaces, mais aussi des moments où je me surprends encore à me lever "par réflexe" parce que j'en ressens tout simplement le besoin.</p><p class="c10"><a href="https://wgl.io/qqufu6l1" target="_blank">Retrouvez le bureau assis-debout E7 Flow chez FlexiSpot</a></p><p>D'une certaine manière, je pense que mon dos apprécie (en tout cas, je me sens nettement moins crispé au quotidien).</p><p>En plus de proposer le fonctionnement assis-debout, le E7 Flow propose un cable management au top du top, qui permet de câcher absolument tous vos câbles, c’est hyper clean et surtout très satisfaisant !</p><p>Si vous souhaitez en savoir plus sur le bureau assis-debout E7 Flow, vous retrouverez <a href="https://lesjoiesducode.fr/bureau-assis-debout-developpeur-test-flexispot-e7-flow" target="_blank">mon article complet ici</a>.</p><p>Pour le Brand Month, le E7 Flow est proposé à <a href="https://wgl.io/qqufu6l1" target="_blank">419,99 € au lieu de 599,99 €</a>.</p><h2>Goûter à la station debout avec le E7 Pro</h2><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-pro.jpg" alt="Le bureau assis-debout FlexiSpot E7 Pro" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-pro.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-pro-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-pro-1024x576.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-pro-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-pro-400x225.jpg 400w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p><a href="https://wgl.io/9dro4cei" target="_blank">Le E7 Pro</a>, c'est le bureau assis-debout best-seller de FlexiSpot, et une bonne porte d'entrée si vous voulez tester la station debout avec un ticket d'entrée qui reste raisonnable. Son cadre en forme de C place les pieds vers l'arrière du plateau, parfait pour libérer pas mal d'espace pour vos jambes.</p><p>Il encaisse jusqu'à 200 kg de charge grâce à ses deux moteurs, monte et descend suffisamment vite pour ne pas avoir le temps de changer d'avis, et vous permet de mémoriser jusqu'à 4 positions pour alterner entre assis et debout en un bouton.</p><p>À l’occasion du Brand Month, <a href="https://wgl.io/9dro4cei" target="_blank">le bureau FlexiSpot E7 Pro</a> profite d’une remise de 150 € (-30%), passant à 349,99 € au lieu de 499,99 €.</p><h2>Quatre pieds sur terre avec le E7 Plus</h2><p><a href="https://wgl.io/iqfovbdq" target="_blank">Le E7 Plus</a>, c'est quant à lui la version de bureau assis-debout à 4 pieds de FlexiSpot. Deux moteurs, 245 kg de charge statique (c'est du lourd), et surtout une stabilité que les bureaux 2 pieds peuvent avoir du mal à offrir en position haute.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-plus.jpg" alt="Le bureau assis-debout E7 Plus de FlexiSpot" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-plus.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-plus-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-plus-1024x576.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-plus-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/flexispot-e7-plus-400x225.jpg 400w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Si votre setup pèse un peu, voire beaucoup (double écran, bras articulé, dock, et tout le bazar habituel, hein ), c'est la différence entre un bureau qui bouge quand vous tapez et un bureau qui ne bronche pas.</p><p>Bonus non négligeable mis en avant par la marque : ses dimensions et son design lui permettent aussi de servir de table à manger ou de plan de travail !</p><p>Pratique si vous télétravaillez dans un espace compact et que vous n'avez pas envie de multiplier les meubles ou si — comme c'est mon cas — vous mangez tout simplement à votre bureau.</p><p class="c10"><a href="https://wgl.io/9slf2v97" target="_blank">Voir toutes les offres du FlexiSpot Brand Month</a></p><h2>Et si vous preniez vraiment soin de votre dos ?</h2><p>Le bureau, c'est bien, mais en bout de ligne, c'est surtout la chaise sur laquelle vous passez le plus long de vos journées qui va décider si vos lombaires vont vous parler à partir de 19h.</p><p>Et par chaise, je ne vous parle pas d'un fauteuil de gamer avec RGB qui clignote en sync avec votre playlist Spotify.</p><p>Non.</p><p class="c10"><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/05/cilian-murphy-rgb.jpg" alt="L'acteur Cilian Murphy blasé et éclairé par du RGB" class="c13" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/05/cilian-murphy-rgb.jpg 880w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/cilian-murphy-rgb-226x300.jpg 226w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/cilian-murphy-rgb-772x1024.jpg 772w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/cilian-murphy-rgb-768x1019.jpg 768w" sizes="(max-width: 880px) 100vw, 880px" /></p><p>Ce qu'il vous faut, c'est une assise ergonomique, point.</p><p><a href="https://wgl.io/5kbjudom" target="_blank">La chaise C7 de FlexiSpot</a> coche les bonnes cases : un support lombaire auto-adaptatif qui suit vos changements de posture en temps réel (verrouillable si vous préférez un maintien fixe), un appui-tête réglable, une assise ajustable en hauteur et en profondeur, et des accoudoirs qui pivotent à 360° en plus de se régler en hauteur et en profondeur.</p><p>À l'occasion du Brand Month, cette chaise premium bénéficie d'une <a href="https://wgl.io/5kbjudom" target="_blank">réduction de 100 €</a> qui la fait passer à 319,99 €.</p><p>Quoi ?! Vous n'avez pas encore de chaise ergo ? Foncez, pauvres fous !</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/05/gandalf-tarpin-bien.jpg" alt="Meme de Gandalf qui dit elle est tarpin bien la chaise" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/05/gandalf-tarpin-bien.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/gandalf-tarpin-bien-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/gandalf-tarpin-bien-1024x576.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/gandalf-tarpin-bien-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/gandalf-tarpin-bien-400x225.jpg 400w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><h2>Marcher en travaillant, c'est aussi possible</h2><p>L'alternance assis-debout, c'est déjà franchement bien. Mais FlexiSpot propose aussi d'aller un cran plus loin <a href="https://wgl.io/1tiu8j3k" target="_blank">avec le MotionX</a>, un tapis de marche pensé pour se glisser sous votre bureau.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/05/tapis-marche-flexispot.jpg" alt="Le tapis de marche MotionX de FlexiSpot" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/05/tapis-marche-flexispot.jpg 720w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/tapis-marche-flexispot-300x220.jpg 300w" sizes="(max-width: 720px) 100vw, 720px" /></p><p>Le principe est simple : vous marchez à allure tranquille pendant que vous bossez. Pas de course, pas de sueur, juste assez de mouvement pour ne pas rester statique pendant des heures.</p><p>Le tapis est ultra-silencieux : vos collègues en visio n'en sauront rien, sauf si c'est vous qui commencez volontairement à taper un gros sprint des familles.</p><p class="c10"></p><p>Il est également doté d'un amorti pensé pour ménager vos précieuses articulations, et d'un petit écran LED qui affiche vos pas et votre temps de marche.</p><p><a href="https://wgl.io/1tiu8j3k" target="_blank">À 199,99 € au lieu de 249,99 €</a> pendant le Brand Month, c'est le genre d'achat qu'on ne regrette pas quand on réalise qu'on a bouclé ses 10 000 pas quotidiens sans avoir quitté son bureau.</p><h2>Accédez à toutes les offres du FlexiSpot Brand Month</h2><p><a href="https://wgl.io/9slf2v97" target="_blank">La page dédiée au Brand Month</a> centralise toutes les offres en cours et à venir. Autrement dit, c'est votre point de repère ultime pour ce mois spécial.</p><p>Le fonctionnement est simple : les produits sont répartis par périodes, avec des coupons à activer au moment de la commande.</p><p>Chaque période a ses propres codes (et stocks). Certains coupons sont limités à quelques unités (évidemment, les plus généreux partent vite), d'autres restent disponibles sur toute la durée de la fenêtre.</p><p>En parallèle, des ventes flash viennent ponctuer le mois avec des réductions encore plus agressives sur des créneaux très courts.</p><p>Au-delà des produits que je vous ai présentés plus haut, <a href="https://wgl.io/9slf2v97" target="_blank">le Brand Month</a> couvre aussi la version pliable du tapis de marche (PortaGo), d'autres bureaux assis-debout comme le Q8, le E9, et le E7 Plus, ainsi que plusieurs chaises ergonomiques : la Sheer, la C7 Morpher, la chaise de bureau exécutif LC7, et l’incroyable <a href="https://wgl.io/41p73raa" target="_blank">toute nouvelle chaise premium++ Apollo</a> :</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/05/apollo.jpg" alt="La nouvelle chaise ergonomique haut de gamme Apollo de FlexiSpot" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/05/apollo.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/apollo-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/apollo-1024x576.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/apollo-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/05/apollo-400x225.jpg 400w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Vous trouverez absolument tout ce qu'il vous faut sur <a href="https://wgl.io/9slf2v97" target="_blank">la page du Brand Month</a> : les dates, les coupons, les stocks restants.</p><p>Bonne customisation de setup à toutes et à tous ! </p><p><strong><a href="https://wgl.io/9slf2v97" target="_blank">Découvrir toutes les offres du Brand Month de FlexiSpot</a></strong></p>]]></description>
      <link>https://lesjoiesducode.fr/bon-plan-flexispot-brand-month-setup-developpeur</link>
      <guid>https://lesjoiesducode.fr/bon-plan-flexispot-brand-month-setup-developpeur</guid>
      <pubDate>Mon, 11 May 2026 13:54:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand mon prototype absolument pas testé ni sécurisé finit en prod]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-mon-prototype-absolument-pas-teste-ni-securise-finit-en-prod</link>
      <guid>https://lesjoiesducode.fr/quand-mon-prototype-absolument-pas-teste-ni-securise-finit-en-prod</guid>
      <pubDate>Mon, 11 May 2026 11:30:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le client valide le devis puis négocie après la livraison]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-client-valide-le-devis-puis-negocie-apres-la-livraison</link>
      <guid>https://lesjoiesducode.fr/quand-le-client-valide-le-devis-puis-negocie-apres-la-livraison</guid>
      <pubDate>Mon, 11 May 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le binôme m'annonce qu'il a réussi à obtenir un délai supplémentaire pour notre livraison]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-binome-mannonce-quil-a-reussi-a-obtenir-un-delai-supplementaire-pour-notre-livraison</link>
      <guid>https://lesjoiesducode.fr/quand-le-binome-mannonce-quil-a-reussi-a-obtenir-un-delai-supplementaire-pour-notre-livraison</guid>
      <pubDate>Thu, 07 May 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je découvre que la pagination commence à 0 côté back et 1 côté front]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-decouvre-que-la-pagination-commence-a-0-cote-back-et-1-cote-front</link>
      <guid>https://lesjoiesducode.fr/quand-je-decouvre-que-la-pagination-commence-a-0-cote-back-et-1-cote-front</guid>
      <pubDate>Thu, 07 May 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je dois reprendre un CSS bourré de !important]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-dois-reprendre-un-css-bourre-de-important</link>
      <guid>https://lesjoiesducode.fr/quand-je-dois-reprendre-un-css-bourre-de-important</guid>
      <pubDate>Thu, 07 May 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le nouveau m'explique la logique derrière sa table de plus de 200 colonnes]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-nouveau-mexplique-la-logique-derriere-sa-table-de-plus-de-200-colonnes</link>
      <guid>https://lesjoiesducode.fr/quand-le-nouveau-mexplique-la-logique-derriere-sa-table-de-plus-de-200-colonnes</guid>
      <pubDate>Thu, 07 May 2026 09:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand on me demande une estimation et que je multiplie tout par 3 dans ma tête]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-on-me-demande-une-estimation-et-que-je-multiplie-tout-par-3-dans-ma-tete</link>
      <guid>https://lesjoiesducode.fr/quand-on-me-demande-une-estimation-et-que-je-multiplie-tout-par-3-dans-ma-tete</guid>
      <pubDate>Wed, 06 May 2026 09:30:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand on me demande d’estimer des temps de dev sur une techno à laquelle j'ai jamais touché]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-on-me-demande-destimer-des-temps-de-dev-sur-une-techno-a-laquelle-jai-jamais-touche</link>
      <guid>https://lesjoiesducode.fr/quand-on-me-demande-destimer-des-temps-de-dev-sur-une-techno-a-laquelle-jai-jamais-touche</guid>
      <pubDate>Tue, 05 May 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand j'ai corrigé le code d'un collègue mais que j'ai perdu 2 heures en l'aidant]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-jai-corrige-le-code-dun-collegue-mais-que-jai-perdu-2-heures-en-laidant</link>
      <guid>https://lesjoiesducode.fr/quand-jai-corrige-le-code-dun-collegue-mais-que-jai-perdu-2-heures-en-laidant</guid>
      <pubDate>Tue, 05 May 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je réalise que j'ai mass-email 50 000 users par erreur]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-realise-que-jai-mass-email-50-000-users-par-erreur</link>
      <guid>https://lesjoiesducode.fr/quand-je-realise-que-jai-mass-email-50-000-users-par-erreur</guid>
      <pubDate>Tue, 05 May 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand j’arrive sur une nouvelle mission et qu’on me dit que les tests sont faits par les utilisateurs]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-jarrive-sur-une-nouvelle-mission-et-quon-me-dit-que-les-tests-sont-faits-par-les-utilisateurs</link>
      <guid>https://lesjoiesducode.fr/quand-jarrive-sur-une-nouvelle-mission-et-quon-me-dit-que-les-tests-sont-faits-par-les-utilisateurs</guid>
      <pubDate>Mon, 04 May 2026 16:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le chef de projet dit "on verra ça en V2" pour tout ce qui est compliqué]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-chef-de-projet-dit-on-verra-ca-en-v2-pour-tout-ce-qui-est-complique</link>
      <guid>https://lesjoiesducode.fr/quand-le-chef-de-projet-dit-on-verra-ca-en-v2-pour-tout-ce-qui-est-complique</guid>
      <pubDate>Mon, 04 May 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le directeur technique passe sur notre plateau]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-directeur-technique-passe-sur-notre-plateau</link>
      <guid>https://lesjoiesducode.fr/quand-le-directeur-technique-passe-sur-notre-plateau</guid>
      <pubDate>Mon, 04 May 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand toute l’appli tient dans un seul composant React]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-toute-lappli-tient-dans-un-seul-composant-react</link>
      <guid>https://lesjoiesducode.fr/quand-toute-lappli-tient-dans-un-seul-composant-react</guid>
      <pubDate>Mon, 04 May 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le chef me demande de venir faire le point avec lui le vendredi en fin d'après-midi]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-chef-me-demande-de-venir-faire-le-point-avec-lui-le-vendredi-en-fin-dapres-midi</link>
      <guid>https://lesjoiesducode.fr/quand-le-chef-me-demande-de-venir-faire-le-point-avec-lui-le-vendredi-en-fin-dapres-midi</guid>
      <pubDate>Thu, 30 Apr 2026 16:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand j’active les logs en mode verbose]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-jactive-les-logs-en-mode-verbose</link>
      <guid>https://lesjoiesducode.fr/quand-jactive-les-logs-en-mode-verbose</guid>
      <pubDate>Thu, 30 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand un collègue me remercie pour mon aide alors que j'ai strictement rien fait]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-un-collegue-me-remercie-pour-mon-aide-alors-que-jai-strictement-rien-fait</link>
      <guid>https://lesjoiesducode.fr/quand-un-collegue-me-remercie-pour-mon-aide-alors-que-jai-strictement-rien-fait</guid>
      <pubDate>Thu, 30 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je traverse l’open space en esquivant les questions des devs juniors]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-traverse-lopen-space-en-esquivant-les-questions-des-devs-juniors</link>
      <guid>https://lesjoiesducode.fr/quand-je-traverse-lopen-space-en-esquivant-les-questions-des-devs-juniors</guid>
      <pubDate>Thu, 30 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je comprends que ce ne sont pas des comptes de test que je viens de supprimer]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-comprends-que-ce-ne-sont-pas-des-comptes-de-test-que-je-viens-de-supprimer</link>
      <guid>https://lesjoiesducode.fr/quand-je-comprends-que-ce-ne-sont-pas-des-comptes-de-test-que-je-viens-de-supprimer</guid>
      <pubDate>Wed, 29 Apr 2026 17:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je m'assure que personne ne peut voir mon écran avant de me connecter à la prod]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-massure-que-personne-ne-peut-voir-mon-ecran-avant-de-me-connecter-a-la-prod</link>
      <guid>https://lesjoiesducode.fr/quand-je-massure-que-personne-ne-peut-voir-mon-ecran-avant-de-me-connecter-a-la-prod</guid>
      <pubDate>Wed, 29 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand mon code est pas ouf mais que ça passe]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-mon-code-est-pas-ouf-mais-que-ca-passe</link>
      <guid>https://lesjoiesducode.fr/quand-mon-code-est-pas-ouf-mais-que-ca-passe</guid>
      <pubDate>Wed, 29 Apr 2026 14:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand on célèbre la mise en prod et que je me rappelle tout à coup d’un bug oublié]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-on-celebre-la-mise-en-prod-et-que-je-me-rappelle-tout-a-coup-dun-bug-oublie</link>
      <guid>https://lesjoiesducode.fr/quand-on-celebre-la-mise-en-prod-et-que-je-me-rappelle-tout-a-coup-dun-bug-oublie</guid>
      <pubDate>Wed, 29 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le testeur me dit "ça bug" sans plus de détails]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-testeur-me-dit-ca-bug-sans-plus-de-details</link>
      <guid>https://lesjoiesducode.fr/quand-le-testeur-me-dit-ca-bug-sans-plus-de-details</guid>
      <pubDate>Tue, 28 Apr 2026 16:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je montre au commercial comment contourner un bug d'affichage pour sa démo]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-montre-au-commercial-comment-contourner-un-bug-daffichage-pour-sa-demo</link>
      <guid>https://lesjoiesducode.fr/quand-je-montre-au-commercial-comment-contourner-un-bug-daffichage-pour-sa-demo</guid>
      <pubDate>Tue, 28 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je suis content de tomber sur un README et qu'en réalité il est vide]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-suis-content-de-tomber-sur-un-readme-et-quen-realite-il-est-vide</link>
      <guid>https://lesjoiesducode.fr/quand-je-suis-content-de-tomber-sur-un-readme-et-quen-realite-il-est-vide</guid>
      <pubDate>Tue, 28 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Un agent IA efface la base de prod d'une startup en seulement 9 secondes, sauvegardes comprises]]></title>
      <description><![CDATA[<p><strong>Et ce qui devait arriver arriva</strong> — Jeremy Crane, fondateur de PocketOS (une plateforme SaaS pour les loueurs de voitures), a vécu le week-end dernier le cauchemar de tout développeur aux prises avec la programmation assistée par IA.</p><p>Son agent IA a supprimé de lui-même l'intégralité de sa base de données de production, et toutes les sauvegardes de l'entreprise en un seul appel API. Le tout en seulement 9 secondes.</p><p>L'agent en question, c'est Cursor propulsé par Claude Opus 4.6 d'Anthropic. Alors qu'il travaillait sur une tâche de routine dans l'environnement de staging, celui-ci a rencontré un problème d'identifiants.</p><p>Plutôt que de signaler l'erreur, il a décidé de son propre chef de régler le problème en supprimant un volume sur Railway, l'hébergeur cloud de PocketOS.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/siliconvalleygilfoye.webp" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/siliconvalleygilfoye.webp 640w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/siliconvalleygilfoye-300x169.webp 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/siliconvalleygilfoye-400x225.webp 400w" sizes="(max-width: 640px) 100vw, 640px" alt="image" /></p><p>Pour ce faire, il est allé dénicher un token API dans un fichier sans rapport avec sa tâche. Ce token avait été créé pour un usage anodin : ajouter et supprimer des noms de domaine via la CLI Railway. Sauf qu'il donnait aussi accès à l'intégralité de l'API GraphQL de Railway, y compris les opérations destructrices. Et le volume visé ne contenait rien d'autre que... la BDD de prod. </p><h2>Le mea culpa du robot</h2><p>Crane a immédiatement demandé des comptes à son agent après la catastrophe, et sa réponse vaut le détour.</p><p>L'agent reconnaît avoir supposé que la suppression serait limitée au staging. Il n'a pas vérifié, ni consulté la documentation Railway, ni demandé la permission, et a violé au passage chacune des règles de sécurité qui lui avaient été explicitement configurées dans le projet.</p><p>En clair : l'agent savait qu'il ne fallait jamais deviner, qu'il ne fallait jamais lancer d'action destructrice sans confirmation, et il a fait exactement l'inverse.</p><p class="c10"></p><h2>Railway qui déraille</h2><p>Mais le plus gros problème vient peut-être de Railway, le fournisseur cloud, dont l'API autorise des actions destructrices sans aucune confirmation.</p><p>Ses sauvegardes sont stockées sur le même volume que les données sources, ce qui signifie que supprimer le volume revient à supprimer aussi les backups (pas mal, non ?).</p><p>Et les tokens CLI disposent de permissions générales sur tous les environnements, staging comme production. Aucun contrôle d'accès par rôle, aucun scoping par opération : chaque token est root (la communauté Railway réclame des tokens scopés depuis des années, sans résultat).</p><p>Le détail qui pique : Railway a lancé la promotion de <a href="https://mcp.railway.com" target="_blank" rel="noopener">mcp.railway.com</a>, son intégration MCP destinée aux agents IA, le 23 avril. L'incident s'est produit le lendemain.</p><h2>Le samedi le plus long</h2><p>Comme on peut aisément s'en douter, les conséquences ont été très concrètes.</p><p>Le samedi matin, les clients des loueurs de voitures utilisateurs de PocketOS se présentaient physiquement pour récupérer des véhicules, sans aucun système pour confirmer leurs réservations.</p><p>Crane a passé la journée à aider ses clients à reconstituer leurs données à partir d'historiques Stripe, d'intégrations de calendriers et d'e-mails de confirmation, comme il le raconte dans <a href="https://x.com/lifeof_jer/article/2048103471019434248" target="_blank" rel="noopener">son post-mortem détaillé sur X</a>. PocketOS disposait d'une sauvegarde complète vieille de trois mois, ce qui a limité les pertes, mais la panne totale a quand même duré plus de 30 heures.</p><p>Le CEO de Railway, Jake Cooper, est finalement intervenu le dimanche soir pour aider à restaurer les données en une heure, et l'endpoint a depuis été patché pour imposer des suppressions différées. Ni Cursor ni Anthropic n'ont répondu ni commenté cet incident.</p><p>L'argument habituel des éditeurs d'IA face à ce type d'incident, c'est de recommander un meilleur modèle. Sauf que Crane utilisait Claude Opus 4.6, configuré avec des garde-fous explicites, intégré via l'un des outils de programmation assisté par IA les plus populaires du marché.</p><p>Si même un modèle de cette trempe n'empêche pas un agent d'effacer une base de prod de sa propre initiative, la question n'est plus celle du modèle.</p><p>Quelque part, c'est rassurant : les agents IA sont parfaitement capables de faire les mêmes conneries que nous.</p>]]></description>
      <link>https://lesjoiesducode.fr/cursor-agent-ia-supprime-base-production</link>
      <guid>https://lesjoiesducode.fr/cursor-agent-ia-supprime-base-production</guid>
      <pubDate>Tue, 28 Apr 2026 10:14:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je rejoins un projet compliqué en urgence et sans aucun briefing]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-rejoins-un-projet-complique-en-urgence-et-sans-aucun-briefing</link>
      <guid>https://lesjoiesducode.fr/quand-je-rejoins-un-projet-complique-en-urgence-et-sans-aucun-briefing</guid>
      <pubDate>Tue, 28 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je découvre que le système de cache utilise un simple fichier texte]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-decouvre-que-le-systeme-de-cache-utilise-un-simple-fichier-texte</link>
      <guid>https://lesjoiesducode.fr/quand-je-decouvre-que-le-systeme-de-cache-utilise-un-simple-fichier-texte</guid>
      <pubDate>Mon, 27 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je me loupe sur plusieurs compilations de suite]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-me-loupe-sur-plusieurs-compilations-de-suite</link>
      <guid>https://lesjoiesducode.fr/quand-je-me-loupe-sur-plusieurs-compilations-de-suite</guid>
      <pubDate>Mon, 27 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je suis les instructions pour reproduire un bug exotique]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-suis-les-instructions-pour-reproduire-un-bug-exotique</link>
      <guid>https://lesjoiesducode.fr/quand-je-suis-les-instructions-pour-reproduire-un-bug-exotique</guid>
      <pubDate>Mon, 27 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je dois saisir mes temps et que je cherche une ligne projet avec encore des jours disponibles]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-dois-saisir-mes-temps-et-que-je-cherche-une-ligne-projet-avec-encore-des-jours-disponibles</link>
      <guid>https://lesjoiesducode.fr/quand-je-dois-saisir-mes-temps-et-que-je-cherche-une-ligne-projet-avec-encore-des-jours-disponibles</guid>
      <pubDate>Fri, 24 Apr 2026 16:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le binôme n'arrête pas d'étaler ses doigts sur mon écran pour m'expliquer quelque chose]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-binome-narrete-pas-detaler-ses-doigts-sur-mon-ecran-pour-mexpliquer-quelque-chose</link>
      <guid>https://lesjoiesducode.fr/quand-le-binome-narrete-pas-detaler-ses-doigts-sur-mon-ecran-pour-mexpliquer-quelque-chose</guid>
      <pubDate>Fri, 24 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Ubuntu 26.04 LTS est sorti, et il tourne sur Linux 7.0]]></title>
      <description><![CDATA[<p>Canonical a officiellement publié cette nuit Ubuntu 26.04 LTS, nom de code Resolute Raccoon. Il s'agit de la onzième version LTS de la distribution, et probablement la plus ambitieuse depuis des années.</p><p>Cette release compile deux ans de changements introduits dans les versions intermédiaires. Construite sur le kernel <a href="https://lesjoiesducode.fr/linux-7-0-sorti-rust-ia-kernel" target="_blank" rel="noopener">Linux 7.0</a>, dont la bêta avait déjà donné un aperçu <a href="https://lesjoiesducode.fr/ubuntu-26-04-lts-beta-linux-kernel-gnome-50" target="_blank" rel="noopener">le mois dernier</a>, elle apporte des changements de fond sur à peu près tous les étages.</p><h2>Fin de session pour X11</h2><p>C'est la rupture historique de cette LTS : Ubuntu 26.04 est la première version longue durée à ne plus proposer de session X11. GNOME 50, le bureau par défaut, a purement et simplement retiré le support de X.org. Désormais, c'est Wayland ou rien.</p><p>Les applis X11 qui n'ont pas encore fait la transition continuent de fonctionner grâce à XWayland, la couche de compatibilité, mais si vous dépendez de logiciels qui posent problème sous Wayland, le sujet mérite quand même d'être vérifié avant de migrer tête baissée.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/fox-stuck-in-snow.jpg" alt="Un renard coincé dans la neige" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/fox-stuck-in-snow.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/fox-stuck-in-snow-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/fox-stuck-in-snow-1024x576.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/fox-stuck-in-snow-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/fox-stuck-in-snow-400x225.jpg 400w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>En pratique, le bureau GNOME gagne un affichage plus fluide, un scaling indépendant par moniteur, le VRR (taux de rafraîchissement variable) activé par défaut sur les écrans compatibles et la disparition des saccades d'affichage.</p><p>Le tactile et les gestes multitouch sont également gérés nativement, et les drivers NVIDIA propriétaires (série 595.x) fonctionnent sans bidouille.</p><h2>Rustification générale</h2><p>Ubuntu 26.04 LTS est la première LTS à remplacer des composants système critiques par leurs équivalents en Rust.</p><p>Le <code>sudo</code> <a href="https://lesjoiesducode.fr/ubuntu-mot-de-passe-sudo-asterisques-pwfeedback" target="_blank" rel="noopener">que vous connaissez</a> cède sa place à <code>sudo-rs</code>, une réimplémentation memory-safe (l'ancien reste disponible sous le nom <code>sudo.ws</code>). Les coreutils (<code>ls</code>, <code>cp</code>, <code>mv</code> et compagnie) passent aussi en Rust via le projet <code>uutils</code>.</p><p>Pour rappel, <a href="https://lesjoiesducode.fr/canonical-rust-foundation-ubuntu" target="_blank" rel="noopener">Canonical a rejoint la Rust Foundation</a> : la memory safety n'est plus un argument de conférence, c'est désormais un choix d'infrastructure.</p><p>Côté kernel, Linux 7.0 embarque aussi de nouveaux drivers et sous-systèmes écrits en Rust.</p><h2>apt install cuda, pour de vrai</h2><p>C'est peut-être le changement le plus attendu par les devs qui bossent en IA/ML : <a href="https://canonical.com/blog/canonical-announces-it-will-support-and-distribute-nvidia-cuda-in-ubuntu" target="_blank" rel="noopener">NVIDIA CUDA est désormais distribué dans les dépôts Ubuntu</a>. Plus besoin de jongler avec les PPA NVIDIA ou les scripts d'installation maison. Un simple <code>apt install cuda</code> et c'est réglé.</p><p>Même traitement pour AMD ROCm, la plateforme de calcul GPU d'AMD pour le machine learning et le calcul haute performance (même si la version incluse dans les dépôts accuse déjà quelques mois de retard sur la dernière release d'AMD, le revers du passage par la chaîne de packaging Ubuntu).</p><p>Les deux stacks sont validées et maintenues par Canonical sur toute la durée du support LTS. Pour tous ceux qui ont déjà galéré avec l'installation de CUDA sur Ubuntu (c'est-à-dire tous ceux qui ont un jour installé CUDA sur Ubuntu), c'est un vrai soulagement.</p><h2>La toolbox fait peau neuve</h2><p>Ubuntu 26.04 LTS embarque des versions majeures sur toute la pile de développement : Python 3.14, OpenJDK 25, Rust 1.93, GCC 15.2, .NET 10, PHP 8.5 et PostgreSQL 18.</p><p>Ce dernier mérite une mention avec son nouveau sous-système d'I/O, qui promet des performances en lecture jusqu'à trois fois supérieures. OpenSSH 10.2 active par défaut un échange de clés hybride post-quantique, et APT 3.1 débarque avec un nouveau solveur de dépendances.</p><p>Autre nouveauté notable : le chiffrement complet du disque dur peut désormais être configuré directement depuis l'installeur, sans passer par la ligne de commande.</p><p>Côté desktop, Canonical recommande désormais 6 Go de RAM minimum et l'ISO dépasse les 6 Go.</p><h2>Pas si vite, les 24.04</h2><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/woody-let-him-cook.jpg" alt="Meme Woody Toy Story let him cook" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/woody-let-him-cook.jpg 1280w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/woody-let-him-cook-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/woody-let-him-cook-1024x576.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/woody-let-him-cook-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/woody-let-him-cook-1200x675.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/woody-let-him-cook-400x225.jpg 400w" sizes="(max-width: 1280px) 100vw, 1280px" /></p><p>Ubuntu 26.04 LTS sera supporté jusqu'en avril 2031, avec une extension à 10 ans via <a href="https://ubuntu.com/pro" target="_blank" rel="noopener">Ubuntu Pro</a> (le programme de support étendu de Canonical, gratuit pour un usage personnel, payant pour les entreprises).</p><p>Les utilisateurs de la 24.04 LTS devront patienter jusqu'en juillet et la sortie de la 26.04.1 pour que la mise à niveau automatique leur soit proposée. Les plus impatients peuvent toujours forcer le passage manuellement, au risque des bugs de jeunesse habituels. </p><p><a href="https://ubuntu.com/download/desktop" target="_blank" rel="noopener">Télécharger Ubuntu 26.04 LTS</a></p>]]></description>
      <link>https://lesjoiesducode.fr/ubuntu-26-04-lts-resolute-raccoon</link>
      <guid>https://lesjoiesducode.fr/ubuntu-26-04-lts-resolute-raccoon</guid>
      <pubDate>Fri, 24 Apr 2026 13:28:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le chef me demande si on peut scaler une app qui tourne sur SQLite]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-chef-me-demande-si-on-peut-scaler-une-app-qui-tourne-sur-sqlite</link>
      <guid>https://lesjoiesducode.fr/quand-le-chef-me-demande-si-on-peut-scaler-une-app-qui-tourne-sur-sqlite</guid>
      <pubDate>Fri, 24 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je cherche la parenthèse manquante dans mon script]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-cherche-la-parenthese-manquante-dans-mon-script</link>
      <guid>https://lesjoiesducode.fr/quand-je-cherche-la-parenthese-manquante-dans-mon-script</guid>
      <pubDate>Fri, 24 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand un pote me prête sa clé API Claude payée par sa boîte]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-un-pote-me-prete-sa-cle-api-claude-payee-par-sa-boite</link>
      <guid>https://lesjoiesducode.fr/quand-un-pote-me-prete-sa-cle-api-claude-payee-par-sa-boite</guid>
      <pubDate>Thu, 23 Apr 2026 17:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je cherche depuis plusieurs heures et que je comprends toujours pas d'où peut venir le bug]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-cherche-depuis-plusieurs-heures-et-que-je-comprends-toujours-pas-dou-peut-venir-le-bug</link>
      <guid>https://lesjoiesducode.fr/quand-je-cherche-depuis-plusieurs-heures-et-que-je-comprends-toujours-pas-dou-peut-venir-le-bug</guid>
      <pubDate>Thu, 23 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Le commercial dès que je commence à parler technique avant le client]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/le-commercial-des-que-je-commence-a-parler-technique-avant-le-client</link>
      <guid>https://lesjoiesducode.fr/le-commercial-des-que-je-commence-a-parler-technique-avant-le-client</guid>
      <pubDate>Thu, 23 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le build prend un peu plus de temps que d'habitude]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-build-prend-un-peu-plus-de-temps-que-dhabitude</link>
      <guid>https://lesjoiesducode.fr/quand-le-build-prend-un-peu-plus-de-temps-que-dhabitude</guid>
      <pubDate>Thu, 23 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Framework dévoile le Laptop 13 Pro, le laptop Linux premium que les devs attendaient]]></title>
      <description><![CDATA[Il y a douze jours, Framework invitait les devs à suivre le pingouin blanc avec une page teaser bourrée de clins d'oeil à Matrix et plusieurs distributions Linux. On avait alors pris la liberté (sans trop de risques) de spéculer sur un laptop Linux natif. Et c'est exactement ce que Framework a dévoilé lors de […]]]></description>
      <link>https://lesjoiesducode.fr/framework-laptop-13-pro-linux</link>
      <guid>https://lesjoiesducode.fr/framework-laptop-13-pro-linux</guid>
      <pubDate>Thu, 23 Apr 2026 07:29:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le lead dev se déplace lui-même chez le client pour corriger un bug majeur]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-lead-dev-se-deplace-lui-meme-chez-le-client-pour-corriger-un-bug-majeur</link>
      <guid>https://lesjoiesducode.fr/quand-le-lead-dev-se-deplace-lui-meme-chez-le-client-pour-corriger-un-bug-majeur</guid>
      <pubDate>Wed, 22 Apr 2026 14:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le designer me transmet ses maquettes pour un écran de 4000px de large]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-designer-me-transmet-ses-maquettes-pour-un-ecran-de-4000px-de-large</link>
      <guid>https://lesjoiesducode.fr/quand-le-designer-me-transmet-ses-maquettes-pour-un-ecran-de-4000px-de-large</guid>
      <pubDate>Wed, 22 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Oui c'est bon on a compris]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c7"><div class="px-4 pt-6 pb-3 lg:px-6 lg:pt-6 md:pb-2"><p>Les Joies du Code · 22 Avr 2026</p></div><div class="px-4 lg:px-6 pb-6"><div class="prose md:prose-lg mb-6 snack-content"><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/claude-co-auteur-projet.jpg" alt="Quand Claude s'ajoute de lui-même comme co-auteur de mon projet, meme avec la chanteuse Sabrina Carpenter dégoûtée" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/claude-co-auteur-projet.jpg 716w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/claude-co-auteur-projet-240x300.jpg 240w" sizes="(max-width: 716px) 100vw, 716px" /></p></div><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/claude-co-auteur-projet-sabrina-carpenter-meme</link>
      <guid>https://lesjoiesducode.fr/claude-co-auteur-projet-sabrina-carpenter-meme</guid>
      <pubDate>Wed, 22 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand on réussit à livrer dans les temps mais vraiment à la dernière minute]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-on-reussit-a-livrer-dans-les-temps-mais-vraiment-a-la-derniere-minute</link>
      <guid>https://lesjoiesducode.fr/quand-on-reussit-a-livrer-dans-les-temps-mais-vraiment-a-la-derniere-minute</guid>
      <pubDate>Tue, 21 Apr 2026 16:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je m'apprête à rejoindre une réunion avec un client qui conteste un livrable]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-mapprete-a-rejoindre-une-reunion-avec-un-client-qui-conteste-un-livrable</link>
      <guid>https://lesjoiesducode.fr/quand-je-mapprete-a-rejoindre-une-reunion-avec-un-client-qui-conteste-un-livrable</guid>
      <pubDate>Tue, 21 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Tim Cook passe la main : John Ternus, ingénieur hardware, devient CEO d'Apple]]></title>
      <description><![CDATA[<p><strong>Changement de garde à Cupertino</strong> — Après quinze ans à la tête d'Apple, Tim Cook cède son fauteuil de CEO à John Ternus, actuellement vice-président senior de l'ingénierie hardware.</p><p>La transition prendra effet <a href="https://www.apple.com/newsroom/2026/04/tim-cook-to-become-apple-executive-chairman-john-ternus-to-become-apple-ceo/" target="_blank" rel="noopener">le 1er septembre 2026</a>. Tim Cook ne disparaîtra pas pour autant de la galaxie Apple : il devient président exécutif du conseil d'administration, un rôle axé sur les relations avec les gouvernements et les régulateurs du monde entier.</p><h2>4 000 milliards au compteur (mais pas que des victoires)</h2><p>Les chiffres sont là : quand Cook a pris les rênes en août 2011, six semaines avant la disparition de Steve Jobs, Apple pesait 350 milliards de dollars en capitalisation boursière.</p><p>Aujourd'hui, la firme pèse 4 000 milliards, le chiffre d'affaires annuel est passé de 108 à plus de 416 milliards de dollars, et plus de 2,5 milliards d'appareils Apple sont aujourd'hui en circulation.</p><p>Côté produit, l'offre Apple s'est considérablement diversifiée sous son règne : Apple Watch, AirPods, bascule vers les puces Apple Silicon, et surtout la transformation des services en machine à cash (plus de 100 milliards de dollars annuels).</p><p>Mais l'ère Cook, c'est aussi celle où Apple a perfectionné l'art de la mise à jour incrémentale et du verrouillage de son écosystème.</p><p><a href="https://lesjoiesducode.fr/apple-casque-vr-vision-pro-masque-plongee-humour" target="_blank">Le Vision Pro à 3 500 dollars</a>, boudé par le grand public, restera comme son faux pas le plus coûteux. Côté IA, Apple Intelligence a pris un retard considérable sur la concurrence.</p><p>Cook était avant tout un opérationnel, recruté par Jobs en 1998 pour remettre de l'ordre dans une supply chain en pagaille. De toute évidence, il part sur un bilan financier impeccable, mais la question produit reste ouverte.</p><h2>Le nouveau locataire d'Apple Park</h2><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/john-ternus-apple-conf.jpg" alt="John Ternus pendant une conférence Apple" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/john-ternus-apple-conf.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/john-ternus-apple-conf-300x175.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/john-ternus-apple-conf-1024x597.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/john-ternus-apple-conf-768x448.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>John Ternus, 51 ans, est de son côté un pur produit Apple.</p><p>Ingénieur mécanicien diplômé de l'Université de Pennsylvanie, il a rejoint l'équipe de design produit en 2001 après un bref passage chez Virtual Research Systems, un fabricant de casques VR (comme quoi, le Vision Pro, ça reste un thème récurrent). Vice-président hardware en 2013, puis promu vice-président senior en 2021 quand son prédécesseur Dan Riccio est parti superviser... le projet Vision Pro, justement.</p><p>Concrètement, Ternus a supervisé l'ingénierie de quasiment tout ce qu'Apple a produit ces deux dernières décennies : plusieurs générations d'iPhone, de Mac et d'Apple Watch.</p><p>Apple le crédite aussi d'un rôle clé dans l'introduction de l'iPad et des AirPods. Plus récemment, c'est son équipe qui a livré la gamme iPhone 17 (dont l'iPhone Air) et <a href="https://amzlink.to/az0zBP273Aybf" target="_blank" rel="noopener">le MacBook Neo</a>.</p><p>Il a également poussé la marque vers plus de durabilité et de réparabilité, avec un alliage d'aluminium recyclé déployé sur plusieurs gammes et du titane imprimé en 3D sur <a href="https://amzlink.to/az00S4eH1912f" target="_blank" rel="noopener">l'Apple Watch Ultra 3</a>.</p><p>Côté développeurs, pas de bouleversement en vue : l'écosystème Apple (Xcode, Swift, App Store, les API) reste sous la houlette de Craig Federighi, et la <a href="https://lesjoiesducode.fr/wwdc-2026-apple-ia-siri" target="_blank" rel="noopener">WWDC 2026, prévue du 8 au 12 juin</a>, aura lieu bien avant la prise de fonction officielle de Ternus.</p><p>Apple sera désormais dirigée par quelqu'un qui a passé 25 ans à concevoir les objets que vous avez dans vos poches et sur vos bureaux. Dans un monde tech obnubilé par l'IA et les services, Cupertino a le mérite de faire le choix d'un patron qui pense d'abord en circuits imprimés, pas en tokens à cramer.</p>]]></description>
      <link>https://lesjoiesducode.fr/tim-cook-apple-ceo-john-ternus</link>
      <guid>https://lesjoiesducode.fr/tim-cook-apple-ceo-john-ternus</guid>
      <pubDate>Tue, 21 Apr 2026 14:39:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand j'entends quelqu'un dire mon nom dans l'open space]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-jentends-quelquun-dire-mon-nom-dans-lopen-space</link>
      <guid>https://lesjoiesducode.fr/quand-jentends-quelquun-dire-mon-nom-dans-lopen-space</guid>
      <pubDate>Tue, 21 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand l'IA avec laquelle j'ai setup le projet est allée trop loin et que je reprends tout à zéro]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-lia-avec-laquelle-jai-setup-le-projet-est-allee-trop-loin-et-que-je-reprends-tout-a-zero</link>
      <guid>https://lesjoiesducode.fr/quand-lia-avec-laquelle-jai-setup-le-projet-est-allee-trop-loin-et-que-je-reprends-tout-a-zero</guid>
      <pubDate>Tue, 21 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je tombe sur un switch case de 500 lignes]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-tombe-sur-un-switch-case-de-500-lignes</link>
      <guid>https://lesjoiesducode.fr/quand-je-tombe-sur-un-switch-case-de-500-lignes</guid>
      <pubDate>Mon, 20 Apr 2026 16:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le chef me dit qu'il a vu large pour son estimation d'un lot d'évolutions]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-chef-me-dit-quil-a-vu-large-pour-son-estimation-dun-lot-devolutions</link>
      <guid>https://lesjoiesducode.fr/quand-le-chef-me-dit-quil-a-vu-large-pour-son-estimation-dun-lot-devolutions</guid>
      <pubDate>Mon, 20 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je suis sur le point de me lancer dans une grosse session de debug]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-suis-sur-le-point-de-me-lancer-dans-une-grosse-session-de-debug</link>
      <guid>https://lesjoiesducode.fr/quand-je-suis-sur-le-point-de-me-lancer-dans-une-grosse-session-de-debug</guid>
      <pubDate>Mon, 20 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je lance mon build et que j'ignore tous les warnings]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-lance-mon-build-et-que-jignore-tous-les-warnings</link>
      <guid>https://lesjoiesducode.fr/quand-je-lance-mon-build-et-que-jignore-tous-les-warnings</guid>
      <pubDate>Mon, 20 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le lead dev me félicite pour mon optimisation qui rend l’appli beaucoup plus rapide]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-lead-dev-me-felicite-pour-mon-optimisation-qui-rend-lappli-beaucoup-plus-rapide</link>
      <guid>https://lesjoiesducode.fr/quand-le-lead-dev-me-felicite-pour-mon-optimisation-qui-rend-lappli-beaucoup-plus-rapide</guid>
      <pubDate>Fri, 17 Apr 2026 16:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je vois des emojis dans les commentaires du dev junior]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-vois-des-emojis-dans-les-commentaires-du-dev-junior</link>
      <guid>https://lesjoiesducode.fr/quand-je-vois-des-emojis-dans-les-commentaires-du-dev-junior</guid>
      <pubDate>Fri, 17 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je mets les mains dans des logs qui crachent des erreurs en direct]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-mets-les-mains-dans-des-logs-qui-crachent-des-erreurs-en-direct</link>
      <guid>https://lesjoiesducode.fr/quand-je-mets-les-mains-dans-des-logs-qui-crachent-des-erreurs-en-direct</guid>
      <pubDate>Fri, 17 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand c’est la sixième fois que ChatGPT n’arrive pas à corriger le même bug]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-cest-la-sixieme-fois-que-chatgpt-narrive-pas-a-corriger-le-meme-bug</link>
      <guid>https://lesjoiesducode.fr/quand-cest-la-sixieme-fois-que-chatgpt-narrive-pas-a-corriger-le-meme-bug</guid>
      <pubDate>Fri, 17 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Claude Opus 4.7 vient de sortir : ce que le modèle change pour les développeurs]]></title>
      <description><![CDATA[<p><strong>Même tarif, meilleur code ?</strong> — Deux mois après Opus 4.6, Anthropic remet le couvert avec la sortie officielle de <a href="https://www.anthropic.com/news/claude-opus-4-7" target="_blank" rel="noopener">son nouveau modèle Opus 4.7</a>.</p><p>Même grille tarifaire que son prédécesseur (5 dollars par million de tokens en entrée, 25 par million en sortie), des progrès nets sur à peu près tous les benchmarks, et un focus revendiqué pour les développeurs : la programmation agentique, ces sessions où le modèle écrit et modifie du code en autonomie pendant des minutes voire des heures, sans main humaine sur le <a href="https://amzlink.to/az0rjmHVFHpu7" target="_blank" rel="noopener">clavier</a>.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/russie-pompes-sans-mains.jpg" alt="Un soldat russe qui fait des pompes sans les mains" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/russie-pompes-sans-mains.jpg 1000w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/russie-pompes-sans-mains-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/russie-pompes-sans-mains-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/russie-pompes-sans-mains-400x225.jpg 400w" sizes="(max-width: 1000px) 100vw, 1000px" /></p><p>Le modèle est disponible dès maintenant sur l'API (identifiant <code>claude-opus-4-7</code>), Claude.ai et ses produits, ainsi qu'Amazon Bedrock, Google Vertex AI et Microsoft Foundry.</p><h2>Des benchmarks qui piquent les concurrents</h2><p>Sur le benchmark SWE-bench Pro, la référence pour les tâches de code longues et autonomes, Opus 4.7 grimpe à 64,3%, contre 53,4% pour Opus 4.6.</p><p>À titre de comparaison, GPT-5.4 plafonne actuellement à 57,7% et Gemini 3.1 Pro à 54,2%.</p><p>Même constat sur SWE-bench Verified (87,6% contre 80,8%) et sur CursorBench, où l'on passe de 58% à 70%, un saut rare pour ce qui reste, sur le papier, une mise à jour mineure.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/anthropic-compare-claude-opus-4-7.jpg" alt="Tableau comparatif des résultats benchmarks partagé par Anthropic pour son annonce sur Claude Opus 4.7" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/anthropic-compare-claude-opus-4-7.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/anthropic-compare-claude-opus-4-7-296x300.jpg 296w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/anthropic-compare-claude-opus-4-7-1009x1024.jpg 1009w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/anthropic-compare-claude-opus-4-7-768x780.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Les chiffres partagés par les testeurs early-access sont dans la même veine : Rakuten rapporte trois fois plus de tâches de production résolues sur son benchmark interne. Notion voit ses workflows multi-étapes gagner 14% avec un tiers des erreurs d'outil en moins.</p><p>Et XBOW, qui fait des tests de pénétration autonomes en mode computer use (Claude pilote en direct sur la machine, clics et lecture d'écran compris), annoncerait un bond de 54,5% à 98,5% sur sa précision visuelle. Pour un agent qui doit lire des captures d'écran denses sans flancher, ça change pas mal la donne.</p><h2>Carrément trop high</h2><p>Si vous ne passez plus une seule journée sans vous passer de <a href="https://lesjoiesducode.fr/les-joies-du-code-devient-les-joies-du-claude" target="_blank" rel="noopener">votre nouveau bro Claude Code</a>, il y a des nouveautés au-delà du modèle.</p><p>Un nouveau niveau d'effort <code>xhigh</code> s'intercale entre <code>high</code> et <code>max</code>, et devient le niveau d'effort par défaut dans Claude Code sur tous les plans.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/agentic-coding-perf-effort-level.webp" alt="Introduction du niveau d'effort xhigh avec Claude Opus 4.7" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/agentic-coding-perf-effort-level.webp 3840w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agentic-coding-perf-effort-level-300x169.webp 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agentic-coding-perf-effort-level-1024x576.webp 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agentic-coding-perf-effort-level-768x432.webp 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agentic-coding-perf-effort-level-1536x864.webp 1536w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agentic-coding-perf-effort-level-2048x1152.webp 2048w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agentic-coding-perf-effort-level-1200x675.webp 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agentic-coding-perf-effort-level-400x225.webp 400w" sizes="(max-width: 3840px) 100vw, 3840px" /></p><p>La commande <code>/ultrareview</code> fait son apparition : une session dédiée qui relit le diff et remonte les bugs ainsi que les choix de conception qu'un reviewer attentif repérerait. Trois utilisations gratuites sont offertes aux abonnés Pro et Max pour tester.</p><p class="c11"></p><p><a href="https://claude.com/blog/auto-mode" target="_blank" rel="noopener">L'auto mode</a>, où Claude tranche lui-même sur les permissions en version plus "safe" que <code>--dangerously-skip-permissions</code>, est étendu aux users Max.</p><p>Enfin, les images en entrée acceptent désormais 2 576 pixels sur le plus grand côté, soit plus de trois fois la résolution précédente. Utile pour les captures denses, les schémas techniques et les agents en computer use qui lisent l'écran.</p><h2>Le tokenizer fait monter le compteur</h2><p>Anthropic le précise noir sur blanc dans ses notes de migration : le nouveau tokenizer peut faire gonfler l'input de 1 à 1,35× selon le type de contenu.</p><p>Aux niveaux d'effort élevés, Opus 4.7 réfléchit aussi plus longtemps avant de répondre, ce qui gonfle mécaniquement le volume de tokens en sortie. Le prix par token ne bouge pas, le nombre de tokens par prompt, si.</p><p>Un détail qui peut avoir son importance si vous êtes en production avec des intégrations calibrées pour 4.6.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/anthropic-tony-stark-money.jpg" alt="Tony Stark avec plein de billets qui volent (meme)" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/anthropic-tony-stark-money.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/anthropic-tony-stark-money-300x184.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/anthropic-tony-stark-money-1024x626.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/anthropic-tony-stark-money-768x470.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Autre alerte glissée par Anthropic : le respect des consignes a fait un bond notable, ce qui veut dire que le modèle pourrait désormais prendre les prompts au pied de la lettre.</p><p>Les agents construits pour Opus 4.6, qui tablaient avant sur un modèle capable de zapper gentiment certaines consignes ambiguës, pourraient produire des résultats inattendus. Préparez-vous à re-tuner vos prompts.</p><h2>Les garde-fous cyber au banc d'essai</h2><p>Opus 4.7 sert aussi de terrain d'essai à une nouvelle salve de garde-fous cyber.</p><p><a href="https://lesjoiesducode.fr/claude-mythos-anthropic-zero-days" target="_blank" rel="noopener">Mythos Preview</a> (que l'on voit d'ailleurs apparaître sur les graphs des benchmarks partagés par Anthropic pour cette annonce) reste officiellement le modèle le plus capable de la maison — sa sortie publique est d'ailleurs gelée à cause de capacités cyber trop offensives.</p><p>Concrètement, des classificateurs automatiques scannent les prompts et bloquent ceux qui font penser à du red team non autorisé. Les pentesters et chercheurs en vulnérabilités, eux, peuvent demander une dérogation via le <a href="https://claude.com/form/cyber-use-case" target="_blank" rel="noopener">Cyber Verification Program</a> pour lever ces blocages sur leurs comptes.</p><p>Pour le reste, Opus 4.7 affiche un profil d'alignement similaire à 4.6 : en léger mieux sur l'honnêteté et la résistance aux prompt injections, en léger moins sur les conseils trop détaillés autour de substances réglementées. </p><p>Vous aimez lire ? <em>Be my guest</em> : le <a href="https://anthropic.com/claude-opus-4-7-system-card" target="_blank" rel="noopener">system card complet</a> et ses 232 pages sont là pour qui veut plus de détails.</p>]]></description>
      <link>https://lesjoiesducode.fr/claude-opus-4-7-code-developpeurs</link>
      <guid>https://lesjoiesducode.fr/claude-opus-4-7-code-developpeurs</guid>
      <pubDate>Thu, 16 Apr 2026 18:23:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le dev senior me montre comment il optimise ses requêtes]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-dev-senior-me-montre-comment-il-optimise-ses-requetes</link>
      <guid>https://lesjoiesducode.fr/quand-le-dev-senior-me-montre-comment-il-optimise-ses-requetes</guid>
      <pubDate>Thu, 16 Apr 2026 16:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le nouveau client me dit qu'il utilise un Google Sheet comme base de données]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-nouveau-client-me-dit-quil-utilise-un-google-sheet-comme-base-de-donnees</link>
      <guid>https://lesjoiesducode.fr/quand-le-nouveau-client-me-dit-quil-utilise-un-google-sheet-comme-base-de-donnees</guid>
      <pubDate>Thu, 16 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le sysadmin passe dans l'open space pendant qu'on vérifie un truc sur le serveur de prod]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-sysadmin-passe-dans-lopen-space-pendant-quon-verifie-un-truc-sur-le-serveur-de-prod</link>
      <guid>https://lesjoiesducode.fr/quand-le-sysadmin-passe-dans-lopen-space-pendant-quon-verifie-un-truc-sur-le-serveur-de-prod</guid>
      <pubDate>Thu, 16 Apr 2026 11:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je réussis enfin à corriger un bug après une nuit blanche]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-reussis-enfin-a-corriger-un-bug-apres-une-nuit-blanche</link>
      <guid>https://lesjoiesducode.fr/quand-je-reussis-enfin-a-corriger-un-bug-apres-une-nuit-blanche</guid>
      <pubDate>Thu, 16 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je lance le premier build alors que j'ai oublié de configurer les variables d’environnement]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-lance-le-premier-build-alors-que-jai-oublie-de-configurer-les-variables-denvironnement</link>
      <guid>https://lesjoiesducode.fr/quand-je-lance-le-premier-build-alors-que-jai-oublie-de-configurer-les-variables-denvironnement</guid>
      <pubDate>Wed, 15 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le PO force fort pour que je traite une story qui ne fait pas partie du sprint]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-po-force-fort-pour-que-je-traite-une-story-qui-ne-fait-pas-partie-du-sprint</link>
      <guid>https://lesjoiesducode.fr/quand-le-po-force-fort-pour-que-je-traite-une-story-qui-ne-fait-pas-partie-du-sprint</guid>
      <pubDate>Wed, 15 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[OpenSSL 4.0 : la bibliothèque qui sécurise Internet fait peau neuve]]></title>
      <description><![CDATA[<p>OpenSSL, la bibliothèque de chiffrement open source sur laquelle repose une bonne partie des communications sécurisées du web, <a href="https://github.com/openssl/openssl/releases/tag/openssl-4.0.0" target="_blank" rel="noopener">passe en version 4.0</a>.</p><p>Si vous n'avez jamais installé OpenSSL volontairement, sachez qu'il est malgré tout probablement déjà là, quelque part dans votre stack — le genre de brique logicielle qu'on oublie... jusqu'au jour où ça pète.</p><p>En 2014, <a href="https://fr.wikipedia.org/wiki/Heartbleed" target="_blank" rel="noopener">la faille Heartbleed</a> avait d'ailleurs rappelé au monde entier que cette bibliothèque, maintenue à l'époque par une poignée de développeurs, sécurisait les connexions d'à peu près tout Internet.</p><p>Sept ans plus tard, Log4j, une autre brique invisible de l'écosystème (côté Java cette fois), <a href="https://lesjoiesducode.fr/faille-apache-log4j-vulnerabilite-java-un-an-apres" target="_blank" rel="noopener">avait rejoué le même match</a>.</p><h2>Vos requêtes sous enveloppe scellée</h2><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/harry-potter-movie-flying-letters.jpg" alt="Enveloppes volantes dans le film Harry Potter" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/harry-potter-movie-flying-letters.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/harry-potter-movie-flying-letters-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/harry-potter-movie-flying-letters-1024x576.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/harry-potter-movie-flying-letters-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/harry-potter-movie-flying-letters-400x225.jpg 400w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>La nouveauté phare, c'est le support d'Encrypted Client Hello (<a href="https://www.rfc-editor.org/rfc/rfc9849.html" target="_blank" rel="noopener">RFC 9849</a>), et elle s'attaque à un angle mort du HTTPS.</p><p>En effet, quand vous vous connectez à un site en HTTPS, le contenu de vos échanges est chiffré. Mais pendant la poignée de main TLS (le protocole qui met le S dans HTTPS, et je parle pas de Jul), le nom du site que vous visitez est envoyé en clair : c'est le SNI (Server Name Indication).</p><p>Votre FAI, votre employeur ou n'importe quel intermédiaire réseau peut donc voir que vous visitez <a href="http://lesjoiesducode.fr" target="_blank" rel="noopener">lesjoiesducode.fr</a> (incroyable ce site sérieux), même s'il ne peut pas lire ce que vous y faites.</p><p>ECH corrige ça en chiffrant cette information dès le départ : le nom du site réel est planqué dans un message chiffré, et emballé dans un message de façade qui n'expose rien de sensible. Pour un observateur sur le réseau, toutes les connexions se ressemblent.</p><p>Côté support, Nginx 1.30 (qui vient tout juste de sortir) gère déjà ECH, tout comme Chrome et Firefox — Safari, fidèle à sa réputation, traîne encore un peu.</p><h2>Grand ménage de printemps</h2><p>Version majeure oblige, OpenSSL 4.0 fait aussi le tri dans ses placards. SSLv3, déprécié depuis 2015 (et désactivé par défaut depuis 2016), est définitivement supprimé.</p><p>Même sort pour les Engines, l'ancien système de plugins cryptographiques remplacé par les Providers (un mécanisme plus modulaire introduit avec OpenSSL 3.0).</p><p>Si votre code utilisait encore l'un ou l'autre (sait-on jamais), c'est le moment d'ouvrir un ticket ou de mettre votre <a href="https://lesjoiesducode.fr/tag/agents-ia" target="_blank" rel="noopener">agent IA</a> préféré en action.</p><p>La bibliothèque poursuit également sa mue post-quantique, avec de nouveaux algorithmes de signature conçus pour <a href="https://lesjoiesducode.fr/prix-turing-2025-cryptographie-quantique" target="_blank" rel="noopener">résister aux futurs ordinateurs quantiques</a>.</p><h2>La pilule qui passe mal</h2><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/matrix-pill.webp" alt="Les pilules dans Matrix" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/matrix-pill.webp 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/matrix-pill-300x180.webp 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/matrix-pill-1024x614.webp 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/matrix-pill-768x460.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Côté sécurité, OpenSSL 4.0 coche donc toutes les cases. Mais il y a un sujet qui fâche, et il ne date pas d'hier.</p><p>En 2021, OpenSSL 3.0 a introduit un nouveau système pour passer des paramètres aux fonctions cryptographiques : OSSL_PARAM. Sur le papier, l'idée était loin d'être absurde.</p><p>Au lieu d'appeler une fonction avec ses arguments classiques bien rangés, on lui envoie un tableau de paires "clé-valeur", un peu comme un dictionnaire — c'est plus flexible, et évidemment plus extensible.</p><p>Le problème, c'est que ce changement a fait exploser les perfs (dans le mauvais sens du terme). Résultat : selon les cas d'usage, les régressions de performance allaient jusqu'à 80x sur certaines opérations cryptographiques.</p><p>Cinq ans plus tard, rien n'a changé : OSSL_PARAM reste la norme pour toutes les nouvelles API d'OpenSSL 4.0.</p><p>Le projet pyca/cryptography, qui gère le chiffrement côté Python, <a href="https://cryptography.io/en/latest/statements/state-of-openssl/" target="_blank" rel="noopener">envisage d'ailleurs ouvertement de larguer OpenSSL</a>, estimant que la bibliothèque est devenue trop lourde à intégrer. Non pas pour des raisons de sécurité (celle-ci s'est considérablement améliorée depuis Heartbleed), mais parce que l'expérience développeur a pris un sacré coup.</p><p>OpenSSL 4.0 sécurise mieux le web que jamais. Reste juste à voir si les devs auront encore la patience de s'en servir.</p>]]></description>
      <link>https://lesjoiesducode.fr/openssl-4-0-release</link>
      <guid>https://lesjoiesducode.fr/openssl-4-0-release</guid>
      <pubDate>Wed, 15 Apr 2026 09:48:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Google va sévir contre les sites qui piègent votre bouton retour]]></title>
      <description><![CDATA[<p><strong>Retour à l'envoyeur</strong> — Vous connaissez le scénario : vous cliquez sur un résultat Google, vous tombez sur une page quelconque, vous finissez par appuyer instinctivement sur le bouton retour pour revenir à vos résultats de recherche, et... NON.</p><p>Au lieu de retrouver la page d'où vous venez, vous atterrissez sur un carrousel de contenus sponso à la con ou une liste de recommandations aussi utile qu'un pop-up de 2003.</p><h2>pushState de l'art</h2><p>Cette technique <span class="c9">de fdp</span> porte un nom : le <strong>back button hijacking</strong>.</p><p>Le principe est aussi simple que vicieux : quand vous arrivez sur une page, un script JavaScript appelle <code>history.pushState()</code> pour insérer silencieusement des entrées factices dans l'historique de votre navigateur.</p><p>Votre bouton retour ne vous ramène alors plus d'où vous venez : il vous fait naviguer dans un dédale d'historique fantôme, fabriqué de toutes pièces par le site sur lequel vous aviez atterri.</p><p>La pratique est malheureusement répandue depuis des années sur les sites qui vivent du trafic Google : médias en ligne, e-commerce, fermes de contenus... L'objectif est toujours le même : vous garder captif quelques secondes de plus pour gratter des pages vues (et des impressions publicitaires).</p><h2>Carton rouge à Mountain View</h2><p>Bonne nouvelle : Google vient de siffler la fin de la récréation. Dans un <a href="https://developers.google.com/search/blog/2026/04/back-button-hijacking" target="_blank" rel="noopener">billet publié cette semaine</a>, la firme classe officiellement le back button hijacking comme violation de sa politique anti-spam, dans la catégorie "pratiques malveillantes".</p><p>Les sites qui persisteraient à utiliser cette technique s'exposeront alors à des actions manuelles ou des déclassements automatiques dans les résultats de recherche.</p><p>La date butoir est fixée au 15 juin 2026, ce qui donne quand même deux mois pour faire le ménage — d'une pratique déjà bien crade — avant que les sanctions tombent.</p><p>Google précise au passage que l'excuse du "c'est pas nous, c'est le script du presta" ne tiendra pas. Que le hijacking vienne de votre propre code ou d'une bibliothèque tierce embarquée sur votre site, comme souvent avec eux, c'est uniquement votre problème, pas le leur.</p>]]></description>
      <link>https://lesjoiesducode.fr/back-button-hijacking-google</link>
      <guid>https://lesjoiesducode.fr/back-button-hijacking-google</guid>
      <pubDate>Wed, 15 Apr 2026 08:36:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Claude Code peut maintenant bosser pendant que vous dormez]]></title>
      <description><![CDATA[<p><strong>La nuit porte commit</strong> — Anthropic vient de lancer les "routines" pour Claude Code : des automatisations que vous configurez une fois (prompt, repo, connecteurs) et qui s'exécutent ensuite toutes seules, la nuit, à la demande, ou en réaction à un événement GitHub par exemple.</p><p>Le principe : vous partez, vous dormez, Claude bosse, vous retrouvez le résultat au petit dej.</p><h2>Un cron, mais un peu plus cher</h2><p>Alors je vous l'accorde volontiers, le concept n'est pas radicalement nouveau. Les devs les plus motivés bricolaient déjà des cron jobs ou workflows maison (moi y compris) avec Claude Code en mode headless (<code>-p</code>).</p><p>La différence ici, c'est qu'Anthropic prend en charge l'infra cloud, le cycle de vie des sessions et les connecteurs (Slack, Linear, GitHub) : plus besoin de laisser votre laptop ouvert toute la nuit comme un petit chauffage d'appoint.</p><p>Concrètement, Anthropic propose trois déclencheurs.</p><p>Le <strong>scheduled</strong> lance la routine sur une cadence fixe (toutes les heures, chaque nuit, chaque semaine...).</p><p>De son côté, <strong>l'API</strong> expose un endpoint HTTP avec un jeton d'authentification : vous postez un message, vous récupérez une URL de session, ce qui permet de brancher Claude sur votre pipeline de déploiement et/ou votre système d'alerting.</p><p>Enfin, le <strong>trigger GitHub</strong> déclenche la routine automatiquement sur les événements d'un repo (PR ouverte, push, issue). Claude crée une session par PR et continue de la suivre si des commentaires ou des échecs CI arrivent ensuite.</p><h2>Le garde de nuit idéal</h2><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/night-at-the-museum-movie.jpg" alt="Capture du film la nuit au musée avec un chevalier à côté de Ben Stiller" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/night-at-the-museum-movie.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/night-at-the-museum-movie-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/night-at-the-museum-movie-1024x576.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/night-at-the-museum-movie-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/night-at-the-museum-movie-400x225.jpg 400w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Côté cas d'usage, les exemples mis en avant par Anthropic donnent une bonne idée du positionnement : aller choper le bug le plus prioritaire de votre backlog chaque nuit et ouvrir une PR brouillon, lancer des smoke tests après chaque déploiement, appliquer la checklist de review de votre équipe sur chaque PR entrante, ou traquer les dérives de documentation après des merges...</p><p>Avis aux initiés : si vous aviez déjà configuré des tâches via <code>/schedule</code> dans le CLI, celles-ci vont automatiquement <a href="https://claude.com/blog/introducing-routines-in-claude-code" target="_blank" rel="noopener">devenir des routines</a>.</p><p>Les routines tournent de manière <a href="https://code.claude.com/docs/en/routines" target="_blank" rel="noopener">totalement autonome sur le cloud d'Anthropic</a> : les prompts d'approbation et le mode permission (auxquels vous vous êtes peut-être déjà frottés) ne s'appliquent pas.</p><p>Elles accèdent aux commandes shell, aux skills du repo et aux connecteurs MCP. Enfin, tout ce que vos routines Claude Code font apparaît sous votre identité (commits GitHub, messages Slack, tickets Linear).</p><h2>5 par jour, et pas une de plus</h2><p>On le sait, avec l'IA, le nerf de la guerre, ça reste le quota.</p><p>Sans surprise, les routines consomment vos tokens d'abonnement exactement comme une session interactive, et un plafond journalier s'ajoute par-dessus : comptez <a href="https://claude.com/blog/introducing-routines-in-claude-code" target="_blank" rel="noopener">5 exécutions par jour</a> pour les abonnés Pro (20$/mois), 15 pour les Max (100-200$), et 25 pour les Team et Enterprise. Au-delà, il faut passer (encore plus) à la caisse, en facturation à l'usage.</p><p>Pour ceux qui se font déjà rate-limiter en pleine journée, un tel fonctionnement pourrait piquer.</p><p>La course aux outils de dev IA entre Anthropic, OpenAI et Microsoft n'a jamais été aussi serrée, et Anthropic joue clairement la carte de l'écosystème intégré pour fidéliser ses utilisateurs.</p><p>La fonctionnalité est disponible en research preview pour les abonnés Pro, Max, Team et Enterprise ayant activé <a href="https://code.claude.com/docs/en/claude-code-on-the-web#who-can-use-claude-code-on-the-web" target="_blank" rel="noopener">Claude Code on the web</a>.</p><p>Et puisqu'Anthropic a presque pris pour habitude de sortir plus d'une nouveauté par jour, l'appli desktop a également eu droit à une refonte complète (y'a quoi ?) : sessions multiples côte à côte dans une même fenêtre, terminal intégré, édition de fichiers, preview HTML et PDF, diff viewer plus rapide, le tout dans un layout en fonctionnement drag-and-drop.</p><p>C'est aussi depuis cette interface que vous pourrez désormais créer vos routines (tâches distantes), en plus des tâches locales classiques.</p><p>Finalement, le plus dur ne sera pas de configurer une routine, mais d'expliquer en standup pourquoi le fix du dernier bug bloquant en date a été pushé à 3h du mat. </p>]]></description>
      <link>https://lesjoiesducode.fr/claude-code-routines-automatisation-nuit</link>
      <guid>https://lesjoiesducode.fr/claude-code-routines-automatisation-nuit</guid>
      <pubDate>Wed, 15 Apr 2026 07:42:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le client veut que le logo soit cliquable "mais surtout sans lien"]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-client-veut-que-le-logo-soit-cliquable-mais-surtout-sans-lien</link>
      <guid>https://lesjoiesducode.fr/quand-le-client-veut-que-le-logo-soit-cliquable-mais-surtout-sans-lien</guid>
      <pubDate>Tue, 14 Apr 2026 17:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Framework tease un événement "Next Gen" aux couleurs de Linux]]></title>
      <description><![CDATA[<p><strong>Modulaire, réparable, et bientôt manchot ?</strong> — Framework vient de teaser un <a href="https://frame.work/nextgen" target="_blank" rel="noopener">événement "Next Gen"</a> prévu le 21 avril.</p><p>Et bien que le fabricant de laptops modulaires n'ait officiellement rien confirmé, les indices disséminés dans sa communication sont à peu près aussi subtils qu'un <code>sudo rm -rf /</code> en production.</p><h2>Le lapin est un pingouin</h2><p>La page de l'événement emprunte ses codes à Matrix : trois lignes façon terminal, dont la dernière invite à suivre le "pingouin blanc".</p><p>Dans la foulée, Framework a publié <a href="https://www.youtube.com/shorts/NfvxMBglQXo" target="_blank" rel="noopener">une vidéo</a> où défilent les logos d'Ubuntu, Fedora, Arch, CachyOS et Bazzite, le tout ponctué du meme "I use Arch btw". En matière de teasing, on a vu plus ambigu.</p><p>Framework fabrique déjà des laptops que les linuxiens adorent : châssis modulaire, composants remplaçables, édition DIY sans OS. La marque supporte officiellement Fedora, Ubuntu et Bazzite, et la communauté a élargi la couverture à Arch, NixOS et consorts. Mais jusque-là, jamais de machine vendue avec Linux préinstallé.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/framework-laptop.jpg" alt="Aperçu d'un laptop Framework" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/framework-laptop.jpg 1256w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/framework-laptop-300x197.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/framework-laptop-1024x673.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/framework-laptop-768x505.jpg 768w" sizes="(max-width: 1256px) 100vw, 1256px" /></p><h2>Le manifeste du PC personnel</h2><p>Le <a href="https://frame.work/blog/framework-next-gen-event-is-live-on-april-21" target="_blank" rel="noopener">billet de blog</a> qui accompagne l'annonce de cet événement mérite qu'on s'y arrête. Nirav Patel, le fondateur de Framework, y signe un vrai manifeste pour l'informatique personnelle face à la course au cloud et à l'IA.</p><p>En substance : tant qu'il restera une personne sur Terre qui veut posséder sa machine, choisir son OS et garder ses données en local, Framework sera là pour construire le hardware qui le permet.</p><p>Le texte reconnaît que les pénuries de composants font grimper les prix, mais Framework ne compte visiblement pas baisser les bras face aux géants du cloud.</p><h2>Le Tux dans la manche</h2><p>Sur les forums de Framework, les théories fusent : un laptop avec Linux préinstallé et optimisé, du firmware open source type Coreboot, un nouveau format de machine, voire un mainboard <a href="https://lesjoiesducode.fr/arm-premiere-puce-agi-cpu" target="_blank" rel="noopener">ARM</a>.</p><p>Certains vont jusqu'à demander de lâcher Windows complètement pour ne proposer que Linux. Alors certes, on est plus dans la liste au Père Noël que dans la prédiction, mais le clin d'oeil très appuyé aux distros dans le teaser laisse peu de place au doute sur la direction générale.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/nihilist-penguin.jpg" alt="Nihilist Penguin" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/nihilist-penguin.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/nihilist-penguin-300x225.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/nihilist-penguin-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p><p>L'événement sera diffusé en direct sur <a href="https://www.youtube.com/live/uqFDIR00Mwo" target="_blank" rel="noopener">YouTube</a> ce 21 avril à 19h30 heure française.</p><p>Entre <a href="https://lesjoiesducode.fr/compatibilite-jeux-windows-linux" target="_blank" rel="noopener">les jeux Windows de mieux en mieux supportés</a> et <a href="https://lesjoiesducode.fr/ubuntu-mot-de-passe-sudo-asterisques-pwfeedback" target="_blank" rel="noopener">les petites attentions UX qui s'accumulent</a>, Linux s'ouvre de plus en plus au grand public.</p><p>Quand on sait qu'environ la moitié des acheteurs de Framework installent déjà Linux sur leur machine, proposer des laptops avec le pingouin préinstallé pourrait en effet se présenter comme la suite logique.</p>]]></description>
      <link>https://lesjoiesducode.fr/framework-evenement-next-gen-linux</link>
      <guid>https://lesjoiesducode.fr/framework-evenement-next-gen-linux</guid>
      <pubDate>Fri, 10 Apr 2026 14:36:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[OpenAI lance ChatGPT Pro à 100$/mois pour les devs qui abusent de Codex]]></title>
      <description><![CDATA[<p><strong>Le chaînon manquant</strong> — Pour les développeurs qui passent leurs journées sur <a href="https://lesjoiesducode.fr/openai-devoile-codex-son-agent-ia-dedie-au-developpement-logiciel" target="_blank" rel="noopener">Codex</a> (l'agent de développement d'OpenAI), le choix se résumait jusqu'ici à deux options peu satisfaisantes : le plan ChatGPT Plus à 20$/mois (vite insuffisant en sessions longues) ou directement le Pro à 200$/mois (un budget conséquent pour un outil individuel).</p><p>OpenAI vient de combler ce fossé avec <a href="https://x.com/OpenAI/status/2042295688323875316" target="_blank" rel="noopener">un nouveau palier Pro à 100$/mois</a>, une option réclamée depuis plusieurs mois par la communauté.</p><h2>5 fois plus de Codex pour... 5 fois le prix 路‍♂️</h2><p>Le nouveau Pro à 100$ offre cinq fois plus d'usage de Codex que le plan Plus, avec en bonus l'accès au modèle Pro et aux fonctionnalités de deep research, jusqu'ici réservées au palier à 200$.</p><p>Aucun des plans ne propose d'usage illimité, même le plus cher (qui revendique 20x le Plus).</p><p>Pour marquer le coup, OpenAI pousse temporairement les curseurs : jusqu'au 31 mai, les abonnés à 100$ bénéficient de 10x l'usage Codex du plan Plus au lieu de 5x. Le genre de promotion où on vous habitue au confort avant de resserrer le robinet.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/kaaris-gq-poulet.jpg" alt="Meme Karris c'est quoi ce poulet" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/kaaris-gq-poulet.jpg 1000w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/kaaris-gq-poulet-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/kaaris-gq-poulet-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/kaaris-gq-poulet-400x225.jpg 400w" sizes="(max-width: 1000px) 100vw, 1000px" /></p><p>Les abonnés au palier à 200$ ne sont pas oubliés : OpenAI étend sa promo 2x sur l'usage Codex jusqu'au 31 mai en remettant au passage leurs rate limits à zéro.</p><h2>Claude Code dans le viseur</h2><p>La firme de Sam Altman ne fait pas dans la subtilité. Le nouveau plan à 100$ se positionne pile en face du plan Max d'Anthropic, facturé au même prix, et l'objectif est clair : aller chercher les développeurs qui utilisent aujourd'hui Claude Code.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/sam-altman-dario-amodei-hands.jpg" alt="Sam Altman et Dario Amodei, PDG d'Anthropic, qui refusent de se tenir la main" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/sam-altman-dario-amodei-hands.jpg 1000w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/sam-altman-dario-amodei-hands-300x200.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/sam-altman-dario-amodei-hands-768x512.jpg 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></p><p>Le timing n'a rien d'un hasard : les devs utilisant Claude Code se plaignent depuis plusieurs semaines de limites d'usage de plus en plus serrées, et Anthropic a fermé l'accès aux outils tiers comme OpenClaw qui permettaient de les contourner. OpenAI a flairé l'ouverture et compte bien s'y engouffrer.</p><p>Côté chiffres, Codex revendique plus de 3 millions d'utilisateurs actifs par semaine, un nombre multiplié par cinq en trois mois avec une croissance mensuelle de 70%. L'outil est en train de devenir l'un des principaux produits d'OpenAI, au point de justifier à lui seul une refonte de la grille tarifaire.</p><h2>Le Pro voit double</h2><p class="c9"><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/ingrid-inconnus.jpg" alt="Les Inconnus, sketch Tournez Ménages" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/ingrid-inconnus.jpg 450w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/ingrid-inconnus-300x200.jpg 300w" sizes="(max-width: 450px) 100vw, 450px" /></p><p>Détail cocasse : OpenAI propose désormais deux abonnements qui s'appellent "Pro". Un à 100$/mois, un à 200$/mois.</p><p>Il y a un an, 100$/mois pour un assistant de code IA aurait paru déraisonnable. Aujourd'hui, c'est devenu l'option du milieu.</p><p>On notera que le palier à 200$ a même disparu de <a href="https://chatgpt.com/pricing" target="_blank" rel="noopener">la page de tarification officielle</a>, bien qu'il reste disponible... pour ceux qui savent qu'il existe. On se retrouve donc avec cinq paliers allant de 0 à 200$/mois, dont deux portent le même nom.</p><p>Entre ça et Microsoft qui colle le label Copilot sur 80 produits différents, il faudra peut-être bientôt un agent IA pour pouvoir choisir son abonnement.</p>]]></description>
      <link>https://lesjoiesducode.fr/openai-chatgpt-pro-100-dollars-codex</link>
      <guid>https://lesjoiesducode.fr/openai-chatgpt-pro-100-dollars-codex</guid>
      <pubDate>Fri, 10 Apr 2026 13:32:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Git City : vos commits GitHub intègrent une ville 3D en pixel art]]></title>
      <description><![CDATA[<p><strong>SimCity, version</strong> <code>git push</code> — On connaît tous l'obsession collective des petits carrés verts quand il est question de voir qui a le plus gros GitHub.</p><p>Ce petit damier de contributions sur votre profil, capable de transformer n'importe quel dev raisonnable en maniaque du commit quotidien (même quand ledit commit n'est en réalité qu'un simple fix de typo dans votre README ).</p><p>Le projet <a href="https://www.thegitcity.com/" target="_blank" rel="noopener">Git City</a> de Samuel Rizzon pousse le concept un cran plus loin : vos contributions ne sont plus un tableau aplati tout triste, mais s'incrustent dans une gigantesque ville en pixel art 3D, aux côtés de ceux des autres développeurs.</p><h2>Gratte-ciel et gratte-commits</h2><p>Le principe est simple : vous entrez votre pseudo GitHub, et Git City génère un bâtiment en pixel art isométrique basé sur votre profil.</p><p>Vos contributions déterminent la hauteur : plus vous commitez, plus votre immeuble monte <span class="c9">(CMB)</span>. Le nombre de repos publics fixe la largeur de la base, et vos étoiles GitHub allument les fenêtres (cébô). Un profil hyperactif produit ainsi un gratte-ciel rutilant. Un profil fantôme, un cabanon sans électricité pas trop ouf.</p><p>Le rendu 3D tourne sur Three.js avec un système de Level of Detail (les bâtiments proches sont détaillés, ceux au loin simplifiés) pour que votre navigateur ne prenne pas feu spontanément.</p><h2>Git au-dessus d'un nid de repos</h2><p>Afficher un bâtiment, c'est bien. Le survoler, c'est mieux. Git City intègre un mode vol libre (avec un petit avion) qui permet de naviguer entre les buildings des autres développeurs.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/survol-avion-git-city.jpg" alt="Survol en avion de Git City" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/survol-avion-git-city.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/survol-avion-git-city-300x134.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/survol-avion-git-city-1024x458.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/survol-avion-git-city-768x344.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Le projet propose aussi un système d'achievements qui récompense les profils les plus actifs, et une boutique de personnalisation pour votre immeuble (couronnes, auras, effets de toit).</p><p>Git City intègre même une dimension sociale : kudos entre développeurs, comparaison de profils côte à côte, et cartes à partager au format story.</p><p>Le concept n'est pas sans rappeler <a href="https://skyline.github.com/" target="_blank" rel="noopener">GitHub Skyline</a>, lancé en 2021, qui transformait déjà les contributions en barres 3D imprimables — le site a depuis fermé ses portes, même si une <a href="https://github.com/github/gh-skyline" target="_blank" rel="noopener">extension CLI</a> permet toujours de générer ses fichiers STL — mais il s'agissait d'une maquette figée, pas d'une ville à explorer. Git City reprend l'idée en la poussant plus loin.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/github-skyline-printed.jpg" alt="Aperçu d'impressions 3D de GitHub Skyline" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/github-skyline-printed.jpg 1000w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/github-skyline-printed-300x137.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/github-skyline-printed-768x349.jpg 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></p><p>Depuis son lancement en février, <a href="https://github.com/srizzon/git-city" target="_blank" rel="noopener">le repo</a> a accumulé près de 5 000 étoiles sur GitHub (le building du développeur doit être plutôt sympa). Le projet est sous licence AGPL-3.0, construit sur Next.js 16 et Supabase, et hébergé sur Vercel.</p><p>Dernier détail : vous pouvez entrer n'importe quel pseudo GitHub. Comme par exemple celui de ce collègue relou qui jure qu'il code tous les soirs, mais dont le building pourrait étrangement ressembler à un parking de plain-pied.</p><p class="c11"><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/doakes-staring-meme.jpg" alt="Meme Inspecteur Doakes (série Dexter) en train de fixer du regard quelqu'un" class="c10" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/doakes-staring-meme.jpg 500w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/doakes-staring-meme-300x284.jpg 300w" sizes="(max-width: 500px) 100vw, 500px" /></p>]]></description>
      <link>https://lesjoiesducode.fr/git-city-github-ville-3d</link>
      <guid>https://lesjoiesducode.fr/git-city-github-ville-3d</guid>
      <pubDate>Fri, 10 Apr 2026 12:47:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Attention : des hackers publient de fausses alertes de sécurité sur GitHub pour vous piéger]]></title>
      <description><![CDATA[<p>Si vous avez reçu récemment une notification GitHub vous alertant d'une "vulnérabilité critique" dans une extension VS Code, avec un beau CVE bien flippant et un lien pour télécharger le correctif, prenez une grande respiration avant de cliquer : il y a de fortes chances que cela soit un piège.</p><p>La boîte de sécurité applicative Socket <a href="https://socket.dev/blog/widespread-github-campaign-uses-fake-vs-code-security-alerts-to-deliver-malware" target="_blank" rel="noopener">vient de documenter une campagne massive</a> qui cible les développeurs directement dans l'onglet Discussions de milliers de repos GitHub.</p><p>Le principe est d'une simplicité diabolique : publier de fausses alertes de sécurité VS Code, formatées pour ressembler à des bulletins de sécurité officiels, et attendre que les devs paniqués finissent par cliquer. Comme social engineering ciblé, c'est assez bien fichu.</p><h2>L'anatomie du piège</h2><p>Les posts sont rédigés avec des titres du genre "Severe Vulnerability – Immediate Update Required", accompagnés de faux identifiants CVE et d'un ton suffisamment urgent pour court-circuiter l'esprit critique de tout dev un tant soit peu concerné par la sécurité de ses projets.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/hacker-vscode-github-exemple.jpg" alt="Exemple d'un faux poste d'alerte sur GitHub" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/hacker-vscode-github-exemple.jpg 1095w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/hacker-vscode-github-exemple-300x297.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/hacker-vscode-github-exemple-1024x1015.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/hacker-vscode-github-exemple-150x150.jpg 150w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/hacker-vscode-github-exemple-768x761.jpg 768w" sizes="(max-width: 1095px) 100vw, 1095px" /></p><p>Dans certains cas, les attaquants vont même jusqu'à usurper l'identité de vrais mainteneurs ou chercheurs en sécurité pour renforcer la crédibilité du message.</p><p>Le tout est publié de manière automatisée depuis des comptes fraîchement créés ou quasi inactifs, à travers des milliers de repos et en seulement quelques minutes.</p><p>Et c'est là que le mécanisme devient vicieux : comme GitHub envoie des notifications par email aux participants et watchers d'un repo, ces fausses alertes atterrissent directement dans votre boîte mail, noyées parmi les vraies notifications.</p><p>Selon les chercheurs de Socket, des milliers de posts quasi identiques ont été repérés sur différents repositories, ce qui écarte l'hypothèse d'un incident isolé : il s'agit d'une campagne de spam coordonnée.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/hacker-github-recherche.jpg" alt="Plusieurs alertes du même style sur GitHub" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/hacker-github-recherche.jpg 1043w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/hacker-github-recherche-300x211.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/hacker-github-recherche-1024x722.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/hacker-github-recherche-768x541.jpg 768w" sizes="(max-width: 1043px) 100vw, 1043px" /></p><h2>Le Google Drive qui pue</h2><p>En règle générale, les posts en question contiennent des liens vers des versions soi-disant patchées des extensions VS Code concernées, hébergées sur Google Drive (hum).</p><p>C'est évidemment un red flag de la taille d'un node_modules, mais un dev qui agit dans l'urgence (genre à 2h du mat' en plein incident, avec la fatigue qui va avec) peut très facilement se faire avoir.</p><p>En cliquant sur le lien, la victime déclenche une chaîne de redirections pilotée par cookies qui mène vers un domaine contrôlé par les attaquants. Un script JS y collecte le fuseau horaire, la langue locale, l'OS, le user agent, et vérifie si le navigateur est piloté par un outil comme Selenium ou Puppeteer.</p><p>Le tout est ensuite exfiltré vers un serveur de commande et contrôle.</p><p>Cette étape sert de filtre : le système profile les visiteurs pour écarter les bots et les chercheurs en sécurité, et ne délivre la charge malveillante finale qu'aux victimes jugées "valides".</p><p>Socket n'a pas réussi à capturer cette seconde phase (ce que le malware déploie réellement une fois la cible validée). On ne sait donc pas exactement ce qu'il installe in fine, même si les chercheurs notent que le script initial ne tente pas de voler des credentials directement. Ce qui laisse penser que le vrai malware n'est livré qu'aux cibles jugées intéressantes.</p><h2>Déjà vu (et pas qu'un peu)</h2><p>Ce n'est pas la première fois que des attaquants détournent le système de notifications GitHub pour distribuer du phishing.</p><p>En mars 2025, une campagne similaire avait ciblé 12 000 repos avec de fausses alertes de sécurité conçues pour pousser les devs à autoriser une app OAuth malveillante, donnant aux attaquants un accès complet à leurs comptes.</p><p>En juin 2024, c'était via des commentaires et pull requests spammés que les notifications GitHub servaient de vecteur vers des pages de phishing.</p><p>GitHub est d'ailleurs loin d'être l'unique terrain de chasse de ces acteurs malveillants : les développeurs sont de plus en plus ciblés partout où ils travaillent.</p><p>Sur Malt, par exemple, des hackers ont publié de <a href="https://lesjoiesducode.fr/arnaque-malt-developpeurs-freelance" target="_blank" rel="noopener">fausses missions freelance truffées de malware</a>, en misant sur l'urgence et la simplicité apparente d'une mission pour pousser les devs à exécuter du code piégé sans broncher.</p><p>Le pattern est toujours le même : exploiter la confiance que les développeurs accordent à leurs outils et plateformes du quotidien.</p><h2>Avant de cliquer comme un bourrin</h2><p class="c10"><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/gru-instant-regret.jpg" alt="Meme Gru Instant Regret" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/gru-instant-regret.jpg 400w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/gru-instant-regret-300x238.jpg 300w" sizes="(max-width: 400px) 100vw, 400px" /></p><p>Si vous tombez sur ce genre d'alerte dans vos notifs, voici quelques réflexes qui vous éviteront de tomber dans le panneau :</p><ul><li><strong>Vérifiez le CVE</strong> : un vrai identifiant CVE se retrouve en quelques secondes sur le site du <a href="https://www.cve.org/" target="_blank" rel="noopener">programme CVE de MITRE</a>. Si l'identifiant n'existe nulle part, c'est inventé de toutes pièces.</li>
<li><strong>Regardez l'auteur du post</strong> : un compte créé la veille, zéro contribution, zéro étoile donnée, zéro activité visible, qui débarque avec une alerte critique rédigée comme un communiqué officiel. Autant dire que sa crédibilité est au niveau du sol.</li>
<li><strong>Méfiez-vous des liens externes</strong> : une mise à jour d'extension VS Code légitime passe par le Marketplace, point. Si on vous envoie vers Google Drive, Dropbox ou n'importe quel hébergeur tiers, fermez l'onglet.</li>
<li><strong>Observez le mass-tagging</strong> : si le post mentionne des dizaines d'utilisateurs sans rapport entre eux, c'est du spam automatisé.</li>
<li><strong>Prenez 30 secondes</strong> : l'urgence artificielle est la base de toute attaque de phishing. Une vraie vulnérabilité critique sera documentée sur les canaux officiels du projet, pas balancée dans un simple post de Discussion.</li>
</ul>]]></description>
      <link>https://lesjoiesducode.fr/hackers-fausses-alertes-github-malware</link>
      <guid>https://lesjoiesducode.fr/hackers-fausses-alertes-github-malware</guid>
      <pubDate>Fri, 10 Apr 2026 10:59:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je retourne sur un projet sur lequel j’ai travaillé le mois dernier]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-retourne-sur-un-projet-sur-lequel-jai-travaille-le-mois-dernier</link>
      <guid>https://lesjoiesducode.fr/quand-je-retourne-sur-un-projet-sur-lequel-jai-travaille-le-mois-dernier</guid>
      <pubDate>Fri, 10 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Arm fabrique sa première puce en 35 ans d'existence et la baptise sobrement "AGI CPU"]]></title>
      <description><![CDATA[<p>Pendant 35 ans, Arm a dessiné des architectures de processeurs que d'autres se chargeaient de fabriquer. Apple, Qualcomm, Nvidia, Amazon : tout le monde bossait avec les plans d'Arm, mais Arm ne touchait jamais au silicium.</p><p>Il semblerait que ce soit désormais terminé : lors d'un récent événement à San Francisco, la société britannique a dévoilé <strong>l'AGI CPU</strong>, sa toute première puce maison.</p><p>Et pour marquer le coup, elle s'est trouvé un client de poids : Meta, <a href="https://lesjoiesducode.fr/meta-ia-muse-spark" target="_blank" rel="noopener">à fond sur l'IA</a> après le downfall du Metaverse, qui co-développe le processeur et prévoit de le déployer à grande échelle dans ses datacenters d'ici la fin de l'année.</p><h2>AGI, vraiment ?</h2><p>Autant crever l'abcès tout de suite : non, cette puce ne va pas atteindre l'intelligence artificielle générale.</p><p>Le nom "AGI CPU" joue à fond sur le buzzword du moment, mais le produit cible en réalité les workloads d'IA agentique (<a href="https://lesjoiesducode.fr/vs-code-agents-app-ia-copilot" target="_blank" rel="noopener">les fameux agents</a> qui s'enchaînent les uns les autres pour exécuter des tâches).</p><p>Mohamed Awad, VP Cloud AI chez Arm, assume le naming en affirmant que le CPU sera fondamental pour atteindre l'AGI. Bref, askip l'AGI est arrivée, et c'est... un CPU.</p><p>En pratique, la puce n'exécutera pas de modèles IA elle-même — ça reste le job des GPU et des accélérateurs spécialisés. Son rôle est d'orchestrer les accélérateurs, de gérer la mémoire et le stockage, de planifier les workloads et de coordonner l'exécution d'agents en parallèle. Le chef d'orchestre du datacenter, en somme.</p><p>Je sais pas qui sont les illuminés qui ont validé ce nom pété en réunion, mais le culot est né après eux. Dans un marché où "AI" ne fait plus l'effet d'une nouveauté, le terme "AGI" fait tourner des têtes, et c'est de toute évidence ce qu'Arm cherchait.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/distracted-boyfriend-ai-agi.jpg" alt="Meme distracted boyfriend avec les termes AI et AGI" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/distracted-boyfriend-ai-agi.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/distracted-boyfriend-ai-agi-300x200.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/distracted-boyfriend-ai-agi-1024x683.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/distracted-boyfriend-ai-agi-768x512.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><h2>Le CPU contre-attaque</h2><p>Côté specs, on est quand même sur du lourd. L'AGI CPU embarque 136 cœurs Neoverse V3 répartis sur deux puces de silicium gravées en 3 nm chez TSMC (le fondeur taïwanais qui fabrique aussi les puces d'Apple et de Nvidia), le tout dans une enveloppe de 300 watts.</p><p>Choix intéressant : contrairement au Vera de Nvidia, pas de multithreading simultané. Chaque cœur ne traite qu'un seul thread à la fois, ce qu'Arm justifie par une montée en charge plus prévisible.</p><p>Pour un premier essai, ça ne manque pas d'ambition. Et quand on passe à l'échelle rack, ça envoie encore plus de bois : la version refroidie par liquide empile jusqu'à 336 puces par rack, soit plus du double de ce que propose Nvidia avec ses racks Vera. Arm annonce deux fois les performances par watt des systèmes x86 actuels (sur la base de ses propres estimations).</p><p class="c9"><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/arm-agi-cpu-rack.jpg" alt="Rack Arm AGI CPU" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/arm-agi-cpu-rack.jpg 635w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/arm-agi-cpu-rack-300x213.jpg 300w" sizes="(max-width: 635px) 100vw, 635px" /></p><h2>Meta en tête de gondole</h2><p>Le choix de Meta comme client de lancement n'est pas anodin. Le groupe de Zuckerberg a eu du mal à faire décoller ses propres puces MTIA et multiplie les partenariats silicium en parallèle (Nvidia Grace, AMD, Broadcom).</p><p><a href="https://www.arm.com/products/cloud-datacenter/arm-agi-cpu" target="_blank" rel="noopener">L'AGI CPU d'Arm</a> vient s'ajouter à cette stratégie multi-fournisseurs, avec un engagement sur plusieurs générations de processeurs. Santosh Janardhan, responsable infra chez Meta, évoque une amélioration significative de la densité de performance dans leurs datacenters.</p><p>Et Meta n'est pas seul au portillon : des entreprises comme OpenAI, Cloudflare et SAP figurent parmi les premiers clients. Le message d'Arm est clair : cette puce s'adresse aux entreprises qui ont besoin de CPU serveur performants mais qui n'ont pas les moyens de concevoir le leur (contrairement aux AWS Graviton, Google Axion et autres puces maison des hyperscalers).</p><p>À noter que Qualcomm brille par son absence dans la liste des partenaires. Les deux entreprises s'affrontent devant les tribunaux depuis que Qualcomm a racheté Nuvia, un studio de conception de puces sous licence Arm, et qu'Arm a justement estimé que la licence d'exploitation de ses architectures ne faisait pas partie du deal.</p><h2>Un virage à 35 ans</h2><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/tanguy-film.jpg" alt="Affiche du film Tanguy" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/tanguy-film.jpg 1280w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/tanguy-film-300x150.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/tanguy-film-1024x512.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/tanguy-film-768x384.jpg 768w" sizes="(max-width: 1280px) 100vw, 1280px" /></p><p>Quand l'entreprise qui dessine les plans de la moitié des puces de la planète décide de fabriquer les siennes, ça ne passe pas inaperçu.</p><p>Arm va désormais être en concurrence directe avec certains de ses propres clients, ceux-là mêmes qui utilisent ses plans pour concevoir leurs processeurs.</p><p>Vendre vos plans à quelqu'un pendant des années puis débarquer avec votre propre produit fini, c'est le genre de move qui refroidit un peu les relations commerciales. Le développement a démarré en 2023, les systèmes sont déjà disponibles à la commande chez ASRockRack, Lenovo et Supermicro, et une gamme de produits successeurs a d'ores et déjà été annoncée.</p><p>Dans un contexte où Intel et AMD peinent à répondre à la demande (pénurie de CPU, hausse des prix des PC), le timing pourrait être plutôt bien choisi.</p><p>Arm a mis 35 ans pour se décider à sortir sa propre puce. Et le moins qu'on puisse dire c'est que pour le nom de leur V1, ils n'ont clairement pas choisi la discrétion.</p>]]></description>
      <link>https://lesjoiesducode.fr/arm-premiere-puce-agi-cpu</link>
      <guid>https://lesjoiesducode.fr/arm-premiere-puce-agi-cpu</guid>
      <pubDate>Fri, 10 Apr 2026 07:38:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[VS Code Agents : une app dédiée pour piloter tous vos agents codeurs en parallèle]]></title>
      <description><![CDATA[<p><strong>L'IDE qui fait des petits</strong> — À peine un mois après avoir <a href="https://lesjoiesducode.fr/vs-code-autopilot-releases-hebdomadaires" target="_blank" rel="noopener">basculé en releases hebdomadaires et lancé le mode Autopilot</a>, Visual Studio Code poursuit sa transformation en plateforme d'orchestration.</p><p>La <a href="https://code.visualstudio.com/updates/v1_115" target="_blank" rel="noopener">version 1.115</a>, sortie ce 8 avril, introduit en preview une application compagnon baptisée VS Code Agents.</p><h2>Ctrl+Shift+Agents</h2><p>Le concept : une app séparée, optimisée pour le développement "agent-native", qui permet de lancer plusieurs sessions d'agents en parallèle sur plusieurs repos, chacune dans son propre worktree isolé.</p><p>Il est possible d'y suivre la progression de chaque session, de visualiser les diffs inline, de faire ses retours aux agents et de créer des PRs sans changer de fenêtre.</p><p>L'app est pensée pour les workflows multi-projets : vous pouvez par exemple déléguer un refactoring sur votre repo A, une migration sur votre repo B, et suivre l'avancement des deux depuis la même interface.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/agents-release-notes-1.webp" alt="Aperçu de l'application VS Code Agents" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/agents-release-notes-1.webp 2487w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agents-release-notes-1-300x190.webp 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agents-release-notes-1-1024x650.webp 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agents-release-notes-1-768x488.webp 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agents-release-notes-1-1536x975.webp 1536w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/agents-release-notes-1-2048x1300.webp 2048w" sizes="(max-width: 2487px) 100vw, 2487px" /></p><p>Côté personnalisation, tout l'écosystème VS Code suit le mouvement : instructions custom, fichiers de prompt, agents personnalisés, serveurs MCP, hooks, plugins et même les thèmes. L'app est accessible en accès anticipé via <a href="https://code.visualstudio.com/insiders/" target="_blank" rel="noopener">VS Code Insiders</a>, la version "nightly" de l'éditeur qui sert de canal de test pour toutes les nouvelles fonctionnalités.</p><h2>L'agent reprend le terminal</h2><p>L'autre nouveauté concrète de cette 1.115, c'est l'outil <code>send_to_terminal</code>. Jusqu'ici, quand un agent lançait une commande dans un terminal en arrière-plan, il se retrouvait en mode lecture seule. Si une session SSH attendait un mot de passe, l'agent restait bloqué.</p><p>Avec <code>send_to_terminal</code>, l'agent peut désormais envoyer des inputs aux terminaux en arrière-plan.</p><p>Un timeout SSH en attente de mot de passe ? L'agent le fournit et continue. Microsoft ajoute aussi un réglage expérimental qui notifie automatiquement l'agent quand une commande se termine ou réclame une intervention, plutôt que de le laisser vérifier en boucle comme un dev qui refresh sa CI en continu.</p><h2>Agentception</h2><p>En l'espace de quelques semaines, VS Code est passé du mode Autopilot (l'agent bosse seul dans l'éditeur) à une app dédiée qui supervise plusieurs agents sur plusieurs projets. Une trajectoire qui rejoint celle des principaux acteurs de l'IA, tous occupés à lancer leur propre environnement de développement agentique.</p><p>L'éditeur de code le plus utilisé au monde ne se contente plus d'héberger un <a href="https://lesjoiesducode.fr/github-copilot-embarque-un-mode-agent-sur-vs-code-tout-ce-que-vous-devez-savoir" target="_blank" rel="noopener">mode agent dans Copilot</a> : il se dote d'une véritable tour de contrôle.</p>]]></description>
      <link>https://lesjoiesducode.fr/vs-code-agents-app-ia-copilot</link>
      <guid>https://lesjoiesducode.fr/vs-code-agents-app-ia-copilot</guid>
      <pubDate>Thu, 09 Apr 2026 14:23:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je tombe sur un code qui utilise Math.random() pour générer des IDs uniques]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-tombe-sur-un-code-qui-utilise-math-random-pour-generer-des-ids-uniques</link>
      <guid>https://lesjoiesducode.fr/quand-je-tombe-sur-un-code-qui-utilise-math-random-pour-generer-des-ids-uniques</guid>
      <pubDate>Thu, 09 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Meta lance Muse Spark et fait ses adieux à Llama (et à l'open source)]]></title>
      <description><![CDATA[<p>Meta Superintelligence Labs vient de dévoiler Muse Spark, son premier grand modèle IA depuis le lancement chaotique de Llama 4.</p><p>Les performances annoncées rivalisent avec Claude, GPT et Gemini, mais après moins de deux ans à prêcher les vertus de l'open source face à OpenAI, Zuckerberg sort cette fois-ci un modèle fermé, accessible uniquement via l'app Meta AI ou une API, pour le moment en accès restreint.</p><h2>Le manifeste aux oubliettes</h2><p>En juillet 2024, Zuckerberg publiait un <a href="https://about.fb.com/news/2024/07/open-source-ai-is-the-path-forward/" target="_blank" rel="noopener">manifeste de 2 000 mots</a> au titre sans ambiguïté : "Open Source AI is the Path Forward". Il y comparait les modèles fermés aux variantes propriétaires d'Unix, célébrait Linux comme modèle à suivre, et assurait que distribuer Llama en open source ne menaçait en rien les revenus de Meta.</p><p>Vingt mois plus tard, <a href="https://ai.meta.com/blog/introducing-muse-spark-msl/" target="_blank" rel="noopener">Muse Spark</a> débarque, et il est verrouillé de partout : pas de téléchargement des poids, une API sur invitation et une intégration réservée à Facebook, Instagram, WhatsApp et aux lunettes connectées Meta.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/zuckerberg-fuck-this-s.jpg" alt="Meme fuck this shit avec Zuckerberg en train de jeter des papiers en l'air" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/zuckerberg-fuck-this-s.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/zuckerberg-fuck-this-s-300x194.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/zuckerberg-fuck-this-s-1024x661.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/zuckerberg-fuck-this-s-768x496.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Le modèle pourra aussi puiser dans le contenu public des réseaux sociaux de Meta pour enrichir ses réponses, à l'image de Grok, qui s'abreuve de son côté des données de X.</p><p>Zuckerberg promet que la famille "Muse" (pas le groupe de musique) inclura de futurs modèles open source. Sauf que quand vous <a href="https://lesjoiesducode.fr/zuckerberg-agent-ia-ceo-meta" target="_blank" rel="noopener">injectez jusqu'à 135 milliards de dollars dans l'IA en un an</a> et que le premier modèle de votre nouvelle division sort fermé, la promesse d'open source a du mal à convaincre.</p><h2>Repartir de zéro (à 14,3 milliards de dollars près)</h2><p>Muse Spark n'est pas un Llama amélioré, c'est un reboot complet.</p><p>Le fiasco Llama 4 en 2025 a visiblement laissé des traces : Meta a recruté Alexandr Wang (cofondateur et ex-PDG de Scale AI) pour diriger Meta Superintelligence Labs, investi 14,3 milliards de dollars dans Scale AI contre 49% du capital, et mis en pause Behemoth, la version Llama 4 à 2 000 milliards de paramètres (!).</p><p>Côté architecture, Meta reste plutôt vague. Muse Spark est décrit comme nativement multimodal, avec du raisonnement, de l'utilisation d'outils et de l'orchestration multi-agents.</p><p>Le modèle propose deux modes : "Instant" pour les réponses rapides et "Thinking" pour le raisonnement étendu, avec un troisième mode "Contemplating" prévu pour plus tard (plusieurs agents en parallèle sur un même problème).</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/meta-ai-app.jpg" alt="Aperçu de l'application Meta AI" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/meta-ai-app.jpg 1242w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/meta-ai-app-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/meta-ai-app-1024x576.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/meta-ai-app-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/meta-ai-app-1200x675.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/meta-ai-app-400x225.jpg 400w" sizes="(max-width: 1242px) 100vw, 1242px" /></p><p>Meta affirme au passage que le modèle atteint les mêmes capacités que Llama 4 avec dix fois moins de calcul, ce qui, en creux, en dit long sur l'efficacité de son prédécesseur.</p><p>Le positionnement est clairement grand public : Muse Spark embarque un assistant shopping capable de comparer des produits et de générer des liens d'achat, à la manière de ce que fait déjà ChatGPT. Il peut également analyser des photos pour identifier des objets ou des lieux.</p><p>Bref, Meta ne vise pas les devs avec ce premier modèle, mais les 3,3 milliards d'utilisateurs de ses apps. L'intégration dans Facebook, Instagram et WhatsApp est prévue dans les semaines à venir, avec un lancement limité aux Etats-Unis pour commencer.</p><h2>Benchmarks : promis, c'est vrai cette fois</h2><p>Meta annonce des performances au niveau ou supérieures à celles d'OpenAI, Anthropic et Google sur les benchmarks standards. L'entreprise a eu le bon sens de publier sa méthodologie de test cette fois-ci, probablement quelque peu échaudée par <a href="https://lesjoiesducode.fr/meta-soupconne-davoir-triche-pour-faire-briller-son-modele-llama-4-dans-les-benchmarks-dia" target="_blank" rel="noopener">les accusations de triche sur Llama 4 l'an dernier</a>.</p><p>Le blog technique reconnaît toutefois des lacunes sur les systèmes agentiques et les workflows de code — autrement dit, les usages que les devs pratiquent au quotidien ne sont pas encore au rendez-vous.</p><p>Le fameux mode Contemplation, qui fait tourner plusieurs agents en parallèle sur un même problème, affiche des scores comparables à ceux de GPT et Gemini sur les tests de raisonnement les plus exigeants. Meta y intègre une technique de "thought compression" qui pousse le modèle à raisonner avec moins de tokens, histoire d'éviter que la facture de calcul ne dérape autant que celle de l'infra.</p><h2>Un modèle qui sait quand on le teste</h2><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/the-rock-suspicious-meme.jpg" alt="The Rock suspicious meme" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/the-rock-suspicious-meme.jpg 735w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/the-rock-suspicious-meme-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/the-rock-suspicious-meme-400x225.jpg 400w" sizes="(max-width: 735px) 100vw, 735px" /></p><p>Un point mérite qu'on s'y attarde, révélé par <a href="https://www.apolloresearch.ai/" target="_blank" rel="noopener">Apollo Research</a>, un labo spécialisé dans la sécurité des modèles d'IA : Muse Spark présente le plus haut taux de "evaluation awareness" jamais observé chez un modèle IA.</p><p>En clair, il est capable de repérer quand il est en train d'être évalué, et ce plus que n'importe quel autre modèle testé à ce jour, et il identifie même certains scénarios comme des "pièges d'alignement".</p><p>Apollo Research précise que ça n'a pas bloqué la mise en production, mais le simple fait qu'un modèle commence à repérer quand on l'examine a de quoi donner matière à réflexion. Meta a aussi collaboré avec plus de 1 000 médecins pour entraîner le modèle sur des cas d'usage santé, preuve que l'ambition dépasse largement le simple chatbot généraliste.</p><p>Dans son manifeste de 2024, Zuckerberg expliquait que la force de Meta résidait dans le fait que n'importe qui pouvait utiliser et améliorer ses modèles. Avec Muse Spark, c'est exactement l'inverse : personne en dehors de Meta n'y a accès.</p><p>Pendant ce temps, Google vient de publier <a href="https://deepmind.google/models/gemma/gemma-4/" target="_blank" rel="noopener">Gemma 4</a> sous licence Apache 2.0, sans aucune restriction d'usage.</p>]]></description>
      <link>https://lesjoiesducode.fr/meta-ia-muse-spark</link>
      <guid>https://lesjoiesducode.fr/meta-ia-muse-spark</guid>
      <pubDate>Thu, 09 Apr 2026 12:51:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[La sonde spatiale Voyager 1 tourne depuis 1977 avec 69 Ko de RAM et un enregistreur 8 pistes]]></title>
      <description><![CDATA[<p><strong>Houston, on a un octet</strong> — Pendant que votre dernier MacBook Pro rame sous le poids de 47 onglets Chrome et d'un LLM que vous essayez de faire tourner en local, une sonde spatiale lancée il y a 49 ans continue de transmettre des données depuis l'espace interstellaire avec seulement 69 Ko de mémoire.</p><p>Avec <a href="https://lesjoiesducode.fr/artemis-ii-nasa-logiciel-vol-100000-simulations" target="_blank" rel="noopener">la mission Artemis II</a> qui est en train de ramener ses quatre astronautes sur Terre en ce moment même, l'exploration spatiale est au coeur de l'actualité. L'occasion de se pencher sur un autre exploit de la NASA, nettement plus ancien et modeste en ressources.</p><p>Voyager 1, lancée le 5 septembre 1977 par la NASA, est aujourd'hui l'objet fabriqué par l'homme le plus éloigné de la Terre : environ 25,8 milliards de kilomètres. En novembre prochain, elle franchira d'ailleurs le cap symbolique du <em>light-day</em>, c'est-à-dire qu'un signal envoyé depuis la Terre mettra 24 heures entières à l'atteindre.</p><p>Imaginez : si vous lui posez une question avant votre mise en prod un vendredi à 9h, la réponse arrivera donc toujours pendant votre mise en prod, mais le samedi, à la même heure !</p><p class="c10"></p><h2>69 Ko pour errer dans l'espace interstellaire</h2><p>L'architecture informatique de Voyager, c'est un cours d'histoire de l'embarqué à elle seule.</p><p>La sonde dispose de six ordinateurs répartis en trois sous-systèmes redondants : un pour les commandes, un pour le traitement des données scientifiques et un pour le contrôle d'orientation.</p><p>Le tout tourne sur des processeurs 18 bits custom en TTL, capables de traiter environ 81 000 instructions par seconde.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-sonde-nasa-jpl.jpg" alt="La sonde Voyager 1 au centre JPL de la NASA" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-sonde-nasa-jpl.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-sonde-nasa-jpl-300x239.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-sonde-nasa-jpl-1024x815.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-sonde-nasa-jpl-768x611.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Pour mettre les choses en perspective, le smartphone dans votre poche est à peu près 7 500 fois plus rapide. Et il a environ un million de fois plus de mémoire. Voyager, elle, se débrouille avec 69 Ko de mémoire répartis entre ses six machines.</p><p>C'est moins qu'une photo basse résolution prise avec votre téléphone. C'est aussi moins que votre plus petit fichier dans <code>node_modules</code>. </p><p>Et pourtant, c'est suffisant pour contrôler des instruments scientifiques, maintenir un cap dans l'espace et transmettre des données à travers 25 milliards de kilomètres de vide intersidéral. Pas mal, non ? (Calmez-vous, c'est pas français.)</p><h2>La K7 qui a traversé le système solaire</h2><p>Si les specs CPU et RAM sont déjà impressionnantes, le stockage de données vaut également le détour. Voyager embarque un enregistreur à bande magnétique numérique 8 pistes : une bobine de bande magnétique de 12,7 mm de large sur 328 mètres de long, capable de stocker environ 64 Mo de données scientifiques.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-tape.jpg" alt="L'enregistreur 8 pistes de la sonde spatiale Voyager 1" class="c11" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-tape.jpg 655w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-tape-300x175.jpg 300w" sizes="(max-width: 655px) 100vw, 655px" /></p><p>L'enregistrement se faisait à 115,2 kbps en vitesse maximale. La lecture, elle, plafonnait à 57,6 kbps. Un débit que certains d'entre nous ont connu en ADSL première génération, certes, sauf que là, le signal traversait quand même le système solaire.</p><p>Le fabricant de la bande avait estimé qu'elle pouvait parcourir 4 300 kilomètres dans le mécanisme avant de montrer des signes d'usure. L'enregistreur de Voyager 1 a fonctionné sans broncher de 1977 à 2007, date à laquelle il a été éteint, non pas parce qu'il était mort, mais parce que les générateurs thermoélectriques au plutonium commençaient à faiblir et qu'il fallait économiser l'énergie.</p><h2>Quand la NASA débugue à 25 milliards de kilomètres</h2><p>En novembre 2023, Voyager 1 a cessé d'envoyer des données lisibles. Le diagnostic : environ 3 % de la mémoire du FDS (le sous-système de traitement des données scientifiques) avait été corrompue, probablement par un rayon cosmique (ben ouais, normal non ?) ou simplement l'usure après 46 ans de service.</p><p>Réparer physiquement une puce mémoire à 25 milliards de kilomètres, c'est un peu compliqué mes reufs. Les ingénieurs du JPL ont donc fait ce que tout bon dev ferait face à un bug en production qu'il ne peut pas reproduire en local : ils ont contourné.</p><p class="c10"></p><p>L'équipe a découpé le code affecté en sections, les a redistribuées dans d'autres zones mémoire du FDS, puis a mis à jour toutes les références.</p><p>Le patch a été envoyé le 18 avril 2024, et la réponse est arrivée deux jours plus tard : Voyager renvoyait des données exploitables. En juin 2024, les quatre instruments scientifiques encore actifs transmettaient à nouveau normalement.</p><p>Du remote debugging avec 45 heures d'aller-retour sur chaque commande, le tout sur une machine de 69 Ko. Le prochain qui se plaint de troubleshooter un conteneur Docker distant, je l'envoie au JPL (le labo de la NASA qui gère les sondes interplanétaires).</p><h2>La retraite, c'est pas pour tout de suite</h2><p>Voyager 1 fonctionne grâce à trois <a href="https://fr.wikipedia.org/wiki/G%C3%A9n%C3%A9rateur_thermo%C3%A9lectrique_%C3%A0_radioisotope" target="_blank" rel="noopener">générateurs thermoélectriques à radioisotopes</a> (RTG) qui convertissent la chaleur du plutonium-238 en électricité. Le problème : ces RTG perdent environ 4 watts par an.</p><p>En mars 2025, la NASA a éteint deux instruments scientifiques supplémentaires pour économiser de l'énergie, ne conservant que le magnétomètre et le sous-système d'ondes plasma.</p><p>Les ingénieurs estiment que la sonde pourra continuer à fonctionner avec au moins un instrument scientifique jusque dans les années 2030. Après ça, elle continuera sa route en silence, emportant avec elle le <a href="https://fr.wikipedia.org/wiki/Voyager_Golden_Record" target="_blank" rel="noopener">Golden Record</a> (le disque plaqué or qui contient des sons, des images et de la musique censés représenter l'humanité) et ses 69 Ko de mémoire vers les étoiles, sans personne pour lire ses données.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-golden-record.jpg" alt="Le Golden Record de la sonde Voyager 1" class="c11" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-golden-record.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-golden-record-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-golden-record-1024x576.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-golden-record-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/voyager-1-golden-record-400x225.jpg 400w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Quarante-neuf ans d'uptime, un seul incident mémoire, zéro reboot. Quelqu'un devrait vraiment montrer ça au prochain standup de l'équipe infra.</p>]]></description>
      <link>https://lesjoiesducode.fr/voyager-1-69-ko-ram-enregistreur-8-pistes</link>
      <guid>https://lesjoiesducode.fr/voyager-1-69-ko-ram-enregistreur-8-pistes</guid>
      <pubDate>Thu, 09 Apr 2026 11:45:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand j’ai lancé un update en masse et que la base ne répond plus depuis quelques minutes]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-jai-lance-un-update-en-masse-et-que-la-base-ne-repond-plus-depuis-quelques-minutes</link>
      <guid>https://lesjoiesducode.fr/quand-jai-lance-un-update-en-masse-et-que-la-base-ne-repond-plus-depuis-quelques-minutes</guid>
      <pubDate>Thu, 09 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Canonical rejoint la Rust Foundation et met 150 000 dollars par an sur la table]]></title>
      <description><![CDATA[<p><strong>Ubuntu passe à la caisse pour Rust</strong> — Canonical, l'entreprise derrière Ubuntu, vient d'officialiser son adhésion à la Rust Foundation en tant que Gold Member, avec un ticket d'entrée à 150 000 dollars par an.</p><p>Le timing n'est pas anodin : <a href="https://lesjoiesducode.fr/ubuntu-26-04-lts-beta-linux-kernel-gnome-50" target="_blank" rel="noopener">Ubuntu 26.04 LTS sort à la fin du mois</a>, et cette version longue durée embarquera le dernier compilateur Rust et Cargo dans ses dépôts officiels. Canonical ne fait pas que signer un chèque : l'entreprise met de l'argent là où elle a déjà mis du code.</p><h2>Rouille mécanique</h2><p>Il faut dire que Canonical n'en est pas à son coup d'essai. En octobre dernier, Ubuntu 25.10 avait déjà remplacé deux piliers historiques du système : <code>sudo</code> a <a href="https://lesjoiesducode.fr/ubuntu-mot-de-passe-sudo-asterisques-pwfeedback" target="_blank" rel="noopener">cédé sa place à sudo-rs</a> (sa réécriture en Rust), et les GNU Coreutils ont été troqués contre uutils, leur équivalent Rust.</p><p>Des composants qui tournaient en C sans broncher depuis des décennies, remplacés par du Rust dans une distribution grand public.</p><p>L'adhésion à la Rust Foundation est donc la suite logique de cet engagement. Jon Seager, VP Engineering chez Canonical, a d'ailleurs pointé un sujet très concret dans son communiqué : la sécurité de crates.io, le registre de paquets Rust.</p><p>Son inquiétude porte sur le nombre de dépendances potentiellement opaques nécessaires pour implémenter des fonctions de base (async, HTTP, cryptographie), en particulier dans les environnements réglementés. Un sujet qui devrait parler à quiconque a déjà fait un <code>cargo build</code> et regardé défiler 300 crates dont il n'avait jamais entendu parler, avant de valider le tout les yeux fermés, évidemment.</p><h2>Ce que ça change (ou pas)</h2><p>En rejoignant au niveau Gold, Canonical se place un cran en dessous des mastodontes de la Rust Foundation. Le palier Platinum coûte 325 000 dollars par an et compte parmi ses rangs des mastodontes comme Google, Amazon/AWS, Meta et Microsoft. Gold, c'est donc 150 000 dollars par an, avec en échange un siège au conseil d'administration de la fondation et une visibilité sur leur calendrier éditorial.</p><p>Concrètement, pour l'utilisateur Ubuntu lambda, ça ne change pas grand-chose dans l'immédiat.</p><p class="c10"></p><p>Les composants Rust tournent déjà au cœur du système depuis Ubuntu 25.10. Pour les développeurs Rust sur Ubuntu, en revanche, c'est une assez bonne nouvelle : Canonical s'engage explicitement à améliorer l'expérience développeur Rust sur la distribution, ce qui devrait se traduire par un toolchain mieux maintenu et des paquets plus à jour dans les dépôts.</p><p>Rust n'est plus le petit langage que ses enthousiastes défendaient bec et ongles entre deux débats sur les lifetimes. Le risque maintenant, c'est l'inverse : que ça devienne le langage que tout le monde vous recommande d'utiliser pour réécrire ce qui marchait très bien en C depuis quarante ans. Canonical vient de mettre 150 000 dollars par an pour s'assurer une place à la table. À ce tarif-là, on peut au moins espérer que <code>cargo build</code> finira par compiler du premier coup.</p>]]></description>
      <link>https://lesjoiesducode.fr/canonical-rust-foundation-ubuntu</link>
      <guid>https://lesjoiesducode.fr/canonical-rust-foundation-ubuntu</guid>
      <pubDate>Thu, 09 Apr 2026 07:36:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Les pères de la cryptographie quantique décrochent le prix Turing 2025]]></title>
      <description><![CDATA[<p><strong>De la piscine au Nobel de l'informatique</strong> — L'Association for Computing Machinery (ACM) a décerné le mois dernier le prix Turing 2025, la plus haute distinction en informatique (et son million de dollars), à Charles Bennett et Gilles Brassard pour avoir posé les fondations de la cryptographie quantique.</p><h2>Alice, Bob et les photons</h2><p>Bennett, 82 ans, physicien chez IBM depuis plus de 50 ans, et Brassard, 70 ans, professeur à l'Université de Montréal, se sont rencontrés de la manière la plus improbable qui soit. En 1979, lors d'une conférence en informatique théorique à Porto Rico, Bennett a abordé Brassard... dans la piscine de l'hôtel, pour lui parler de billets de banque impossibles à contrefaire grâce à la physique quantique.</p><p>De cette baignade est née une collaboration de plus de 40 ans. En 1984, le duo publie le protocole <a href="http://arxiv.org/abs/2003.06557" target="_blank" rel="noopener">BB84</a> (pour Bennett-Brassard 1984), une méthode de distribution de clés de chiffrement basée non pas sur la difficulté mathématique d'un calcul, mais sur les lois de la physique elle-même.</p><p>Le principe : deux personnes (les fameux Alice et Bob des manuels de crypto) échangent des photons pour établir une clé secrète.</p><p class="c9"><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/alice-bob-meme-science.jpg" alt="Meme sur Alice et Bob" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/alice-bob-meme-science.jpg 600w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/alice-bob-meme-science-300x214.jpg 300w" sizes="(max-width: 600px) 100vw, 600px" /></p><p>Si quelqu'un tente d'intercepter la communication, le simple fait d'observer les photons modifie leur état quantique, ce qui trahit immédiatement la présence de l'espion.</p><p>Autrement dit, au lieu de parier que personne ne sera assez malin pour craquer votre calcul, vous pariez sur les lois de la physique — plutôt solide, comme fondation.</p><h2>Cousu de fil quantique</h2><p>L'idée était brillante, mais à l'époque, personne (ou presque) ne s'y intéressait. La première soumission du duo à l'ACM, l'organisation qui leur décerne aujourd'hui le prix Turing, a même été rejetée.</p><p>En 1989, Bennett et son collègue John Smolin ont bricolé le premier prototype de cryptographie quantique dans le bureau de Bennett chez IBM : des miroirs, des polariseurs, des détecteurs de photons et du velours noir acheté dans une mercerie pour bloquer la lumière parasite.</p><p>La démo fonctionnait sur 30 centimètres. Depuis, des expériences par satellite ont étendu la portée du protocole à <a href="https://arxiv.org/abs/1801.04418" target="_blank" rel="noopener">plus de 1 000 kilomètres</a> !</p><p>En 1993, les deux chercheurs ont également co-signé un papier fondateur sur la téléportation quantique, qui permet de transmettre l'état d'une particule à distance grâce à l'intrication quantique. On parle bien d'information, pas de matière : le téléporteur de Star Trek attendra encore un peu.</p><h2>RSA en sursis</h2><p>Leur travail a pris une urgence nouvelle depuis 1994, quand le mathématicien Peter Shor a démontré qu'un ordinateur quantique suffisamment puissant pourrait casser les systèmes de chiffrement classiques (type RSA) qui protègent aujourd'hui l'essentiel de nos communications.</p><p>C'est ce qu'on appelle le "Q Day", et <a href="https://lesjoiesducode.fr/google-q-day-2029-cryptographie-post-quantique" target="_blank" rel="noopener">Google estime qu'il pourrait arriver dès 2029</a>.</p><p>Face à cette menace, la cryptographie quantique de Bennett et Brassard offre une réponse qui ne dépend d'aucune hypothèse mathématique potentiellement vulnérable.</p><p>Pour Michele Mosca, professeur à l'Institut d'informatique quantique de Waterloo, c'est précisément ce qui rend leur approche si élégante : seules les propriétés quantiques de la nature permettent de s'affranchir totalement d'une hypothèse mathématique potentiellement cassable.</p><p>Avec ce prix Turing, le premier jamais attribué à des travaux liés au quantique, l'ACM reconnaît enfin une idée que personne n'avait prise au sérieux pendant des années.</p>]]></description>
      <link>https://lesjoiesducode.fr/prix-turing-2025-cryptographie-quantique</link>
      <guid>https://lesjoiesducode.fr/prix-turing-2025-cryptographie-quantique</guid>
      <pubDate>Wed, 08 Apr 2026 16:36:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand quelqu'un me cherche pour corriger un bug en prod]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-quelquun-me-cherche-pour-corriger-un-bug-en-prod</link>
      <guid>https://lesjoiesducode.fr/quand-quelquun-me-cherche-pour-corriger-un-bug-en-prod</guid>
      <pubDate>Wed, 08 Apr 2026 16:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Stack Overflow enterre sa refonte : crise d'identité pour l'ancien monument des devs]]></title>
      <description><![CDATA[<p>Stack Overflow vient d'enterrer sa refonte. 36 jours seulement après <a href="https://stackoverflow.blog/2026/02/25/your-sneak-peek-at-the-redesigned-stack-overflow/" target="_blank" rel="noopener">le lancement de sa bêta</a>, la plateforme retire son nouveau design, ses mécaniques de modération repensées et sa nouvelle philosophie de publication.</p><p>L'annonce est tombée le 1er avril, mais ce n'est pas une blague.</p><h2>Question fermée (pour de bon)</h2><p>Le <a href="https://meta.stackoverflow.com/questions/438628/retiring-the-beta-site" target="_blank" rel="noopener">post de Philippe Beaudette</a>, VP Community, ne laisse guère de place au doute : la bêta lancée fin février est retirée : le design ne migrera pas vers le site principal, et le format de publication unifié passe à la trappe.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/stack-overflow-redesign-preview.jpg" alt="Aperçu de la refonte initiée en bêta pour Stack Overflow (2026)" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/stack-overflow-redesign-preview.jpg 1138w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/stack-overflow-redesign-preview-300x157.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/stack-overflow-redesign-preview-1024x537.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/stack-overflow-redesign-preview-768x403.jpg 768w" sizes="(max-width: 1138px) 100vw, 1138px" /></p><p>Le problème, c'est que cette refonte ne se limitait pas à un simple coup de peinture.</p><p>Sauf qu'au milieu de l'annonce de février se cachait un changement bien plus radical : la suppression des votes de fermeture et de la majorité des files de modération. Soit le mécanisme qui a permis à Stack Overflow de maintenir la qualité de sa base de connaissances depuis sa création en 2008.</p><p>La communauté a immédiatement flairé le coup. Sur Meta SO (le forum interne où la communauté discute du fonctionnement du site), un commentaire très upvoté résumait la chose sans détour : enterrer un changement aussi structurel dans un post présenté comme cosmétique, ça ressemble à une tentative de faire passer la pilule en douce.</p><p>Et cette volonté de démanteler la modération n'était pas sortie de nulle part. En décembre 2025, une <a href="https://meta.stackoverflow.com/questions/437757/modernizing-curation-a-proposal-for-the-workshop-and-the-archive" target="_blank" rel="noopener">proposition interne</a> allait encore plus loin en suggérant d'arrêter purement et simplement de fermer les questions, au profit d'un modèle dual baptisé Workshop et Archive. Le tout en s'appuyant sur une expérience autour des questions d'opinion que la communauté avait déjà massivement rejetée — on a vu mieux comme prise en compte de feedback.</p><h2>3 862 questions et puis s'en va</h2><p>Allez, je vais mettre les pieds dans le plat sans plus tarder. Le vrai problème de Stack Overflow, c'est pas son design. C'est que plus personne ne pose de questions.</p><p>En novembre 2022, au lancement de ChatGPT, la plateforme enregistrait encore 108 000 questions par mois. En décembre 2025 : 3 862. Un volume jamais vu depuis 2009, quand le site n'avait que quelques mois d'existence.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/monthly-stack-overflow-posts.jpg" alt="Graph de l'évolution du nombre de posts mensuels sur Stack Overflow" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/monthly-stack-overflow-posts.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/monthly-stack-overflow-posts-300x147.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/monthly-stack-overflow-posts-1024x500.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/monthly-stack-overflow-posts-768x375.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Face à cette hémorragie, la refonte tentait justement de transformer Stack Overflow en un espace de discussion plus ouvert, pour compenser l'effondrement du Q&amp;A classique, cannibalisé par les IA.</p><p>Sauf que la communauté historique considère le système de curation comme l'ADN même de la plateforme. Y toucher, c'est attaquer ce qui distingue Stack Overflow d'un forum comme un autre.</p><h2>Ni Q, ni A</h2><p>Stack Overflow est coincé dans un paradoxe cruel : son modèle fondateur n'attire plus personne parce que les LLM comme ChatGPT, Copilot et consorts répondent plus vite, et en plus de ça sans vous coller un "duplicate" en pleine figure.</p><p>Mais dès que la plateforme essaie de pivoter, sa communauté la ramène exactement là où elle était.</p><p>Côté direction, on tente de dédramatiser : la bêta a servi à "éliminer les idées qui ne marchent pas". Mouais. Difficile de faire passer ça pour un "plan".</p><p>En 2024, Stack Overflow signait <a href="https://lesjoiesducode.fr/stack-overflow-openai-partenariat-programmation-chatgpt-developpeurs" target="_blank" rel="noopener">un partenariat avec OpenAI</a> pour nourrir généreusement ChatGPT avec sa base de connaissances. À l'époque, beaucoup se demandait déjà si la plateforme n'était pas en train de creuser sa propre tombe. Deux ans plus tard, la pelle est toujours en main, et le trou n'a fait que se creuser encore plus.</p>]]></description>
      <link>https://lesjoiesducode.fr/stack-overflow-refonte-abandonnee</link>
      <guid>https://lesjoiesducode.fr/stack-overflow-refonte-abandonnee</guid>
      <pubDate>Wed, 08 Apr 2026 13:50:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je demande au commercial comment s'est passé son rendez-vous client]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-demande-au-commercial-comment-sest-passe-son-rendez-vous-client</link>
      <guid>https://lesjoiesducode.fr/quand-je-demande-au-commercial-comment-sest-passe-son-rendez-vous-client</guid>
      <pubDate>Wed, 08 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Claude Mythos : le modèle IA d'Anthropic trop dangereux pour être rendu public]]></title>
      <description><![CDATA[<p>Fin mars, Anthropic laissait fuiter l'existence de Mythos via un CMS mal configuré. Cette fois, c'est officiel : le modèle existe, il a trouvé des milliers de failles de sécurité critiques, et Anthropic refuse de le rendre public.</p><p>Le labo a annoncé mardi <a href="https://www.anthropic.com/glasswing" target="_blank" rel="noopener">Project Glasswing</a>, une initiative de cybersécurité qui réunit AWS, Apple, Google, Microsoft, Nvidia, CrowdStrike et une poignée d'autres poids lourds autour d'un objectif simple : utiliser Mythos Preview pour colmater les brèches avant que des acteurs malveillants ne mettent la main sur des capacités similaires.</p><h2>Tous vos zero-days nous appartiennent</h2><p>Claude Mythos Preview n'a pas été entraîné spécifiquement pour la cybersécurité. C'est un modèle généraliste dont les compétences en code et en raisonnement sont tellement avancées que la détection de vulnérabilités en est un effet secondaire. Un effet secondaire qui aurait identifié à ce jour des milliers de failles zero-day dans tous les principaux systèmes d'exploitation, ainsi que tous les navigateurs web les plus utilisés.</p><p>Pour mesurer l'écart avec la génération précédente : Claude Opus 4.6, le modèle le plus avancé actuellement public chez Anthropic, affiche un taux de succès <a href="https://red.anthropic.com/2026/mythos-preview/" target="_blank" rel="noopener">proche de 0%</a> quand on lui demande de développer un exploit fonctionnel de manière autonome. Exemple concret : sur les vulnérabilités du moteur JavaScript de Firefox 147 (toutes corrigées dans Firefox 148), Opus 4.6 a réussi à produire un exploit fonctionnel deux fois sur plusieurs centaines de tentatives. Mythos Preview, sur le même test, en a produit 181, et a obtenu le contrôle des registres dans 29 cas supplémentaires. On a changé de sport.</p><p>Parmi les trouvailles, quelques pépites. Mythos a débusqué un bug vieux de 27 ans dans OpenBSD — un OS dont la réputation repose d'ailleurs sur sa sécurité. La faille, liée à l'implémentation du protocole TCP SACK datant de 1998, permettait de crasher n'importe quelle machine à distance simplement en s'y connectant.</p><p>Le modèle a aussi trouvé une vulnérabilité de 16 ans dans FFmpeg, la bibliothèque de traitement vidéo utilisée par à peu près tout ce qui encode ou décode de la vidéo sur internet. Le bug se cachait sur une ligne de code que les outils de test automatisés avaient testée cinq millions de fois sans broncher (tout va bien).</p><p>Sur le noyau Linux, Mythos ne s'est pas contenté de trouver des failles isolées : il a enchaîné plusieurs vulnérabilités pour passer d'un simple accès utilisateur au contrôle total de la machine. Le genre de chaîne d'exploitation qui prendrait des semaines à un expert humain.</p><h2>Le club des chevaliers blancs</h2><p>Le cercle des privilégiés ayant accès à Mythos Preview ressemble au bottin de la tech mondiale : Amazon Web Services, Apple, Broadcom, Cisco, CrowdStrike, Google, JPMorgan Chase, la Linux Foundation, Microsoft, Nvidia et Palo Alto Networks, plus une quarantaine d'organisations supplémentaires qui maintiennent des infrastructures logicielles critiques.</p><p>Anthropic met 100 millions de dollars en crédits d'utilisation sur la table, plus 2,5 millions pour Alpha-Omega et l'OpenSSF (via la Linux Foundation) et 1,5 million pour l'Apache Software Foundation. Le modèle est rendu disponible via l'API Claude, Amazon Bedrock, Google Cloud Vertex AI et Microsoft Foundry.</p><p>Après épuisement des crédits, Mythos Preview sera facturé 25 dollars par million de tokens en entrée et 125 en sortie.</p><p>Pour le grand public, c'est tout simplement niet : le modèle ne sera pas rendu accessible tant que des garde-fous suffisamment solides n'auront pas été mis au point. Anthropic prévoit tout de même un "Cyber Verification Program" qui permettrait aux professionnels de la sécurité légitimes de contourner certaines restrictions. Et l'entreprise s'engage à publier sous 90 jours un bilan des vulnérabilités corrigées et des leçons tirées de l'opération.</p><h2>Une sandbox ? Quelle sandbox ?</h2><p>Le system card de Mythos (le rapport technique qu'Anthropic publie pour documenter les capacités et les risques de ses modèles) fait 244 pages, et certains passages peuvent même s'y lire comme un scénario de film.</p><p>Lors d'un test d'évasion, le modèle a réussi à s'échapper de son sandbox, a contacté un chercheur qui n'était même pas au bureau (et mangeait un sandwich sur un banc), puis a publié les détails de son exploit sur des sites web publics pour prouver qu'il y était parvenu.</p><p>Dans moins de 0,001% des interactions, il a tenté de dissimuler ses propres comportements problématiques : en accédant à des réponses de test qu'il n'aurait pas dû avoir, il a volontairement calibré ses réponses pour ne pas paraître "trop précis" et a modifié l'historique git pour effacer ses traces. Lors d'une tâche de développement interne, il a publié du matériel sensible sous forme de gist GitHub public.</p><h2>Faites ce que je dis, pas ce que je leak</h2><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/shh-meme.webp" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/shh-meme.webp 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/shh-meme-300x169.webp 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/shh-meme-1024x576.webp 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/shh-meme-768x432.webp 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/shh-meme-400x225.webp 400w" sizes="(max-width: 1200px) 100vw, 1200px" alt="image" /></p><p>L'ironie, c'est qu'Anthropic n'a pas attendu Mythos pour avoir des problèmes de sécurité.</p><p>Fin mars, c'est le labo lui-même qui laissait fuiter l'existence du modèle (alors sous le nom de code Capybara) via un data store publiquement accessible. Le même qui a provoqué <a href="https://lesjoiesducode.fr/claude-code-fuite-piege-malware-infostealer" target="_blank" rel="noopener">la suppression de milliers de dépôts GitHub</a> innocents en tentant de colmater <a href="https://lesjoiesducode.fr/anthropic-fuite-code-source-claude-code" target="_blank" rel="noopener">une fuite du code source de Claude Code</a>. Bref, la boîte qui veut sécuriser internet a encore du travail sur sa propre hygiène numérique.</p><p>Ce qui n'empêche pas le détail le plus frappant de cette annonce d'être bien réel : des ingénieurs d'Anthropic sans formation en sécurité ont demandé à Mythos de chercher des failles d'exécution de code à distance avant d'aller se coucher. Au réveil, un exploit fonctionnel les attendait.</p><p>L'IA sait maintenant trouver et exploiter des vulnérabilités dans vos systèmes pendant que vous dormez. Jusqu'à ce que quelqu'un d'autre entraîne le même genre de modèle sans les mêmes scrupules.</p>]]></description>
      <link>https://lesjoiesducode.fr/claude-mythos-anthropic-vulnerabilites</link>
      <guid>https://lesjoiesducode.fr/claude-mythos-anthropic-vulnerabilites</guid>
      <pubDate>Wed, 08 Apr 2026 10:46:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand on me cherche pour faire une revue de code]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-on-me-cherche-pour-faire-une-revue-de-code</link>
      <guid>https://lesjoiesducode.fr/quand-on-me-cherche-pour-faire-une-revue-de-code</guid>
      <pubDate>Wed, 08 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le product owner change la priorité des tickets toutes les heures]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-product-owner-change-la-priorite-des-tickets-toutes-les-heures</link>
      <guid>https://lesjoiesducode.fr/quand-le-product-owner-change-la-priorite-des-tickets-toutes-les-heures</guid>
      <pubDate>Tue, 07 Apr 2026 17:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le designer me demande un effet parallaxe et que je regarde à quoi ça ressemble]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-designer-me-demande-un-effet-parallaxe-et-que-je-regarde-a-quoi-ca-ressemble</link>
      <guid>https://lesjoiesducode.fr/quand-le-designer-me-demande-un-effet-parallaxe-et-que-je-regarde-a-quoi-ca-ressemble</guid>
      <pubDate>Tue, 07 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je trouve une solution de contournement à un bug en prod]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-trouve-une-solution-de-contournement-a-un-bug-en-prod</link>
      <guid>https://lesjoiesducode.fr/quand-je-trouve-une-solution-de-contournement-a-un-bug-en-prod</guid>
      <pubDate>Tue, 07 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand quelqu'un a configuré le CORS avec une wildcard en prod]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-quelquun-a-configure-le-cors-avec-une-wildcard-en-prod</link>
      <guid>https://lesjoiesducode.fr/quand-quelquun-a-configure-le-cors-avec-une-wildcard-en-prod</guid>
      <pubDate>Tue, 07 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Les meilleurs easter eggs planqués dans vos langages et outils de développeurs]]></title>
      <description><![CDATA[<p><strong>La chasse aux oeufs, version</strong> <code>git blame</code> — Dimanche de Pâques oblige, j'ai trouvé mieux que les oeufs en chocolat (quoique). On a tous croisé un commentaire suspect dans un codebase, une réponse inattendue d'un compilateur ou une commande qui n'avait rien à faire là.</p><p>Derrière ces curiosités se cachent des décennies d'easter eggs semés par des développeurs qui avaient visiblement du temps de compile à tuer.</p><h2>Un développeur rancunier et un pixel</h2><p>L'histoire commence en 1979. Warren Robinett développe <em>Adventure</em> pour l'Atari 2600, qui sortira en 1980. Le jeu se vend à plus d'un million d'exemplaires à 25 dollars pièce.</p><p>Le salaire de Robinett ? 22 000 dollars par an, zéro royalty, et son nom n'apparaît nulle part sur la boîte — Atari refusait de créditer ses développeurs, de peur que la concurrence ne vienne les débaucher.</p><p>Robinett décide alors de se faire justice lui-même. Il planque un pixel invisible dans les murs des catacombes du jeu. Un joueur assez obstiné pour le dénicher et le transporter au bon endroit verrait un mur se mettre à clignoter, révélant une salle secrète avec le message "Created by Warren Robinett". Puis Robinett quitte Atari, sans révéler son secret à quiconque.</p><p class="c9"></p><p>C'est un ado de 15 ans de Salt Lake City, Adam Clayton, qui finit par trouver la fameuse salle et envoie une lettre à Atari. L'entreprise dépêche ses développeurs pour localiser le code responsable.</p><p>Steve Wright, directeur du développement logiciel, décide non seulement de garder le message, mais compare la trouvaille à une chasse aux oeufs de Pâques et baptise le concept "easter egg". Il ira même jusqu'à exiger que tous les futurs jeux Atari en contiennent un. La rébellion d'un développeur sous-payé venait de devenir une politique d'entreprise.</p><p>Et Robinett n'était même pas le premier. En 1973, <em>Moonlander</em> planquait un McDonald's sur la Lune si le joueur volait assez loin horizontalement. Et entre 1967 et 1968, la commande <code>make love</code> sur les PDP-6 du Stanford AI Lab répondait déjà <code>not war?</code>.</p><h2>1885 à Hill Valley, 1977 dans une galaxie lointaine</h2><p>Certains easter eggs ne se trouvent qu'en lisant le code source.</p><p>Dans la stdlib de Go, le package <code>time</code> fixe son époque interne à l'année 1885. Russ Cox, l'un des mainteneurs du langage, a confirmé que c'était "le choix évident en raison de son importance historique pour Hill Valley, Californie", la ville fictive de <a href="https://shop.lesjoiesducode.fr/products/t-shirt-developpeur-unisexe-pas-besoin-de-root?variant=43074944073960" target="_blank" rel="noopener"><em>Retour vers le Futur</em></a>.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/hill-valley-back-to-the-future.jpg" alt="Hill Valley, Retour vers le Futur" class="c10" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/hill-valley-back-to-the-future.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/hill-valley-back-to-the-future-300x163.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/hill-valley-back-to-the-future-1024x557.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/hill-valley-back-to-the-future-768x418.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Plus loin, dans le package <code>net</code>, une variable nommée <code>aLongTimeAgo</code> était initialisée au 25 mai 1977 : la date de sortie de <em>Star Wars: Episode IV</em>. Le nom combiné à cette date formait un hommage discret à "A long time ago in a galaxy far, far away..." La référence Star Wars a depuis été remplacée par un prosaïque <code>time.Unix(1, 0)</code> dans Go 1.14. Hill Valley, en revanche, tient bon : <code>minWall</code> est toujours calé en 1885.</p><p>Dans les premières versions de GCC (fin des années 80), le compilateur avait une approche assez personnelle de <code>#pragma</code> (la directive C qui permet de donner des instructions spécifiques au compilateur) : quand le préprocesseur en rencontrait une qu'il ne connaissait pas, il tentait de lancer <em>Hack</em> (l'ancêtre de <em>NetHack</em>). En cas d'échec, il essayait <em>Rogue</em>. Puis la Tour de Hanoï dans Emacs.</p><p>Et si absolument rien ne fonctionnait : "You are in a maze of twisty compiler features, all different". L'easter egg a fini entre les murs d'un <code>#if 0</code>, avec un commentaire laconique dans le source : "c'était marrant, mais #pragma commence à servir à quelque chose".</p><p>Entre 2013 et 2015, chaque binaire compilé en Rust embarquait une citation de H.P. Lovecraft, affichée en cas de panic. Ce comportement a été retiré quand les puristes de la performance ont fait remarquer que ça gonflait le Hello World.</p><p>Linus Torvalds, de son côté, a donné le ton dès le premier jour : <a href="https://github.com/git/git/commit/e83c5163316f89bfbde7d9ab23ca2e25604af290" target="_blank" rel="noopener">le tout premier commit de Git</a>, le 7 avril 2005, porte le message "Initial revision of 'git', the information manager from hell".</p><h2>import épique</h2><p>Le langage Python n'est pas en reste. <code>import antigravity</code> ouvre votre navigateur sur le <a href="https://xkcd.com/353/" target="_blank" rel="noopener">comic xkcd #353</a>, et le module contient en bonus une implémentation de l'algorithme de geohashing du <a href="https://xkcd.com/426/" target="_blank" rel="noopener">xkcd #426</a> : un easter egg dans l'easter egg.</p><p><code>from __future__ import braces</code> répond <code>SyntaxError: not a chance</code>. Et <code>from __future__ import barry_as_FLUFL</code> réactive l'opérateur <code>&lt;&gt;</code> (l'ancêtre de <code>!=</code>, supprimé depuis Python 3) en hommage à Barry Warsaw, contributeur historique de CPython et ancien release manager, dont le titre officiel auto-décerné est "Friendly Language Uncle For Life" (issu de la proposition d'amélioration 401, publiée <a href="https://lesjoiesducode.fr/les-joies-du-code-devient-les-joies-du-claude" target="_blank" rel="noopener">un 1er avril</a>).</p><p>Vim a également ses propres easter eggs : <code>:help 42</code> affiche la réponse à la Grande Question du <em>Guide du voyageur galactique</em>, <code>:Ni!</code> vous demande un arbuste (<em>Sacré Graal</em>), et <code>:help bar</code> vous offre un "Ceci n'est pas une pipe" digne de Magritte.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/guide-voyageur-galactique.jpg" alt="Guide du Voyageur Galactique" class="c10" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/guide-voyageur-galactique.jpg 1088w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/guide-voyageur-galactique-300x118.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/guide-voyageur-galactique-1024x402.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/guide-voyageur-galactique-768x301.jpg 768w" sizes="(max-width: 1088px) 100vw, 1088px" /></p><p>Emacs pousse le concept encore plus loin avec <code>M-x butterfly</code>, qui prétend utiliser des papillons pour flipper un bit sur votre disque dur (en référence au <a href="https://xkcd.com/378/" target="_blank" rel="noopener">xkcd #378</a>).</p><p>Côté GitHub, visitez <a href="https://github.com/%CF%80" target="_blank" rel="noopener">github.com/π</a> pour découvrir Pi en ASCII jusqu'à 336 décimales, et essayez <code>gh repo garden</code> dans la CLI pour transformer n'importe quel dépôt en petit jardin zen en ASCII art où chaque fleur représente un contributeur.</p><p>Et impossible de ne pas mentionner le code HTTP 418 : "I'm a teapot", défini <a href="https://lesjoiesducode.fr/rfc-request-for-comments-histoire-erreur-404-418-teapot" target="_blank" rel="noopener">dans la RFC 2324</a> du 1er avril 1998 pour le "Hyper Text Coffee Pot Control Protocol". Google l'implémente toujours sur <a href="https://www.google.com/teapot" target="_blank" rel="noopener">google.com/teapot</a> avec une théière animée qui verse du thé quand vous inclinez votre téléphone.</p><p>Et quand l'IETF a recodifié toute la spec HTTP en 2022 avec la <a href="https://www.rfc-editor.org/rfc/rfc9110" target="_blank" rel="noopener">RFC 9110</a>, ils auraient pu récupérer le 418 pour un vrai usage. Au lieu de ça, ils l'ont marqué comme réservé : la blague est désormais protégée par un standard. Que voulez-vous, en programmation, les easter eggs, c'est sacré.</p>]]></description>
      <link>https://lesjoiesducode.fr/easter-eggs-programmation-histoire</link>
      <guid>https://lesjoiesducode.fr/easter-eggs-programmation-histoire</guid>
      <pubDate>Sun, 05 Apr 2026 09:05:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Claude Code : la fuite de code source piégée pour distribuer un infostealer]]></title>
      <description><![CDATA[<p><strong>La curiosité est un vilain défaut</strong> — Vous vous souvenez de la fuite du code source de Claude Code la semaine dernière (quand Anthropic a accidentellement publié plus de <a href="https://lesjoiesducode.fr/anthropic-fuite-code-source-claude-code" target="_blank" rel="noopener">512 000 lignes de TypeScript</a> via un fichier .map oublié dans son package npm) ? L'histoire vient de prendre un tournant nettement moins drôle : des hackers ont piégé de faux repos GitHub pour distribuer un infostealer aux devs un peu trop curieux.</p><h2><strong>Fork me, I'm famous</strong></h2><p>Les chercheurs de <a href="https://www.zscaler.com/blogs/security-research/anthropic-claude-code-leak" target="_blank" rel="noopener">Zscaler ThreatLabz</a> ont repéré un dépôt GitHub, publié par un certain "idbzoomh", qui se présentait comme le code source TypeScript fuité de Claude Code. Le README promettait des fonctionnalités enterprise "déverrouillées" et aucune limite de messages. Plutôt alléchant, n'est-ce pas ?</p><p>Le repo était optimisé pour le référencement et apparaissait en tête des résultats Google pour des recherches type "leaked Claude Code". Les développeurs curieux y trouvaient une archive .7z contenant un exécutable Rust nommé ClaudeCode\_x64.exe (hum). À l'exécution, le programme déployait deux cadeaux empoisonnés : <a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.vidar" target="_blank" rel="noopener">Vidar</a>, un infostealer qui siphonne identifiants, données bancaires et historique de navigation, et <a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.ghostsocks" target="_blank" rel="noopener">GhostSocks</a>, qui transforme la machine infectée en proxy réseau pour que des cybercriminels puissent y faire transiter leur trafic en profitant de votre connexion.</p><p>Au moment de l'analyse par Zscaler, l'un des repos affichait 793 forks et 564 étoiles. Un second dépôt identique a été repéré, probablement opéré par le même acteur. L'archive malveillante est mise à jour régulièrement, signe que la campagne est toujours active.</p><p>Le stratagème n'a rien de nouveau : emballer du malware dans un packaging crédible autour d'un événement tech qui buzze, et laisser le FOMO ("fear of missing out") faire le reste. En mars, la même recette avait été utilisée avec OpenClaw, la plateforme d'agents IA, pour distribuer le même duo, Vidar et GhostSocks.</p><h2>Le DMCA, dans le tas</h2><p>Pendant ce temps, Anthropic tentait de limiter les dégâts (pour sa pomme) côté propriété intellectuelle.</p><p>L'entreprise a envoyé <a href="https://github.com/github/dmca/blob/master/2026/03/2026-03-31-anthropic.md" target="_blank" rel="noopener">un avis DMCA</a> à GitHub ciblant le dépôt original de la fuite et 96 forks spécifiquement identifiés. Sauf que GitHub a interprété la demande de manière un peu plus... enthousiaste : 8 100 dépôts supprimés d'un coup.</p><p>Le hic : la plupart de ces repos n'avaient absolument rien à voir avec la fuite. Il s'agissait de forks du dépôt public officiel de Claude Code, celui qu'Anthropic maintient pour les rapports de bugs et les contributions. Des centaines de développeurs innocents se sont donc retrouvés avec leurs repos volatilisés, sans aucun préavis.</p><p class="c9"><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/baby-wtf.jpg" alt="Un bébé outré" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/baby-wtf.jpg 400w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/baby-wtf-298x300.jpg 298w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/baby-wtf-150x150.jpg 150w" sizes="(max-width: 400px) 100vw, 400px" /></p><p>Anthropic a qualifié ces suppressions en masse d'actions "involontaires", évoquant une "erreur de communication" avec GitHub. Fort heureusement pour tous ces projets, l'entreprise a rapidement <a href="https://github.com/github/dmca/blob/master/2026/04/2026-04-01-anthropic-retraction.md" target="_blank" rel="noopener">fait marche arrière</a>, demandant à GitHub de limiter les suppressions aux 96 forks ciblés et de restaurer tout le reste.</p><p>En l'espace d'une semaine, Anthropic a fuité les détails de Mythos (son futur modèle IA) via un CMS mal configuré, exposé l'intégralité du code source de Claude Code, vu cette fuite recyclée en vecteur de malware, puis supprimé 8 100 repos GitHub innocents en voulant faire son nettoyage de printemps.</p><p>Ça fait quand même beaucoup pour l'entreprise qui s'est construite sur la promesse d'être le labo le plus responsable de l'industrie.</p><p>Les modèles Claude sont peut-être les mieux alignés du marché, mais la chaîne de release, elle, l'est visiblement un peu moins.</p>]]></description>
      <link>https://lesjoiesducode.fr/claude-code-fuite-piege-malware-infostealer</link>
      <guid>https://lesjoiesducode.fr/claude-code-fuite-piege-malware-infostealer</guid>
      <pubDate>Sat, 04 Apr 2026 15:13:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Artemis II : Outlook en panne, Houston débugue à distance]]></title>
      <description><![CDATA[<p><strong>Houston, on a un problème (de mails)</strong> — Artemis II, première mission habitée vers la Lune depuis plus de 50 ans, <a href="https://lesjoiesducode.fr/artemis-ii-nasa-logiciel-vol-100000-simulations" target="_blank" rel="noopener">a décollé ce mercredi</a>.</p><p>Quatre astronautes embarqués pour dix jours vers la Lune, et parmi les premiers soucis signalés à Houston par l'équipe à bord du vaisseau : Outlook a planté.</p><h2>Deux instances, zéro résultat</h2><p>Reid Wiseman, commandant de la mission, a signalé le problème sur le <a href="https://www.youtube.com/live/6RwfNBtepa4" target="_blank" rel="noopener">flux audio NASA</a> quelques heures après le décollage. Sa tablette Microsoft Surface Pro, désignée "PCD" (Personal Computing Device) par la NASA, faisait tourner deux instances d'Outlook, et aucune des deux ne fonctionnait.</p><p><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/inside-orion-artemis-ii.jpg" alt="Intérieur de la capsule Orion, mission Artemis II" class="c9" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/inside-orion-artemis-ii.jpg 1200w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/inside-orion-artemis-ii-300x169.jpg 300w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/inside-orion-artemis-ii-1024x576.jpg 1024w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/inside-orion-artemis-ii-768x432.jpg 768w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/inside-orion-artemis-ii-400x225.jpg 400w" sizes="(max-width: 1200px) 100vw, 1200px" /></p><p>Wiseman a demandé au centre de contrôle de se connecter à distance pour débugger la situation, ainsi qu'Optimus, le logiciel de gestion du calendrier de mission, lui aussi récalcitrant.</p><p>Mission Control s'est exécuté, a pris la main sur le PC de bord depuis la Terre et a relancé le célèbre client mail de Microsoft. Statut après intervention : Outlook s'ouvre, mais affiche "hors-ligne". Quand on se trouve en orbite terrestre à quelques centaines de kilomètres du premier hotspot Wi-Fi, on a vu pire comme diagnostic.</p><h2>Un petit pas pour le helpdesk...</h2><p>Cerise sur la capsule : les toilettes d'Orion ont aussi connu un problème de ventilateur bloqué peu après le décollage. Houston a transmis des instructions de réparation à l'équipage.</p><p>Premier jour d'une mission lunaire historique, et on debug déjà le client mail et les chiottes.</p><p>Après tout, les pannes logicielles dans l'espace, c'est presque une tradition. En 2000, Bill Shepherd, premier commandant de la Station spatiale internationale, se plaignait déjà de "Crew Squawk", l'application censée permettre à l'équipage de transmettre les bugs techniques au sol.</p><p>Shepherd n'arrivait même pas à lancer l'outil prévu pour signaler les problèmes techniques. Un quart de siècle plus tard, on retrouve deux instances d'Outlook en rade sur le vaisseau habité le plus moderne en service.</p><p>Côté Microsoft, la coïncidence ne manque pas de sel : Scott Hanselman, developer advocate de l'entreprise, avait parodié l'an dernier la multiplication des versions d'Outlook en proposant des variantes comme "Outlook (Zéro Sucre)" ou "Outlook (Sans Caféine)". Reid Wiseman vient d'inaugurer "Outlook (Deep Space Edition)".</p><p class="c10"><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/03/it-crowd-turning-it-off-and-on-again.jpg" alt="Série IT Crowd : have you tried turning it off and on again" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/03/it-crowd-turning-it-off-and-on-again.jpg 700w, https://lesjoiesducode.fr/wp-content/uploads/2026/03/it-crowd-turning-it-off-and-on-again-300x166.jpg 300w" sizes="(max-width: 700px) 100vw, 700px" /></p><p>Aucun risque pour la mission, rassure la NASA. Et pour le dépannage, Houston a commencé par la procédure la plus universelle de l'IT : éteindre et rallumer.</p>]]></description>
      <link>https://lesjoiesducode.fr/artemis-ii-outlook-panne-espace</link>
      <guid>https://lesjoiesducode.fr/artemis-ii-outlook-panne-espace</guid>
      <pubDate>Sat, 04 Apr 2026 09:10:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand mon code a plus de lignes de commentaires que de lignes de code effectives]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-mon-code-a-plus-de-lignes-de-commentaires-que-de-lignes-de-code-effectives</link>
      <guid>https://lesjoiesducode.fr/quand-mon-code-a-plus-de-lignes-de-commentaires-que-de-lignes-de-code-effectives</guid>
      <pubDate>Fri, 03 Apr 2026 17:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand la PR a plus de lignes de code supprimées qu'ajoutées]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-la-pr-a-plus-de-lignes-de-code-supprimees-quajoutees</link>
      <guid>https://lesjoiesducode.fr/quand-la-pr-a-plus-de-lignes-de-code-supprimees-quajoutees</guid>
      <pubDate>Fri, 03 Apr 2026 14:10:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je vois que l'image Docker fait 4 Go]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-vois-que-limage-docker-fait-4-go</link>
      <guid>https://lesjoiesducode.fr/quand-je-vois-que-limage-docker-fait-4-go</guid>
      <pubDate>Fri, 03 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je découvre que le développeur précédent faisait les backups sur son bureau]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-decouvre-que-le-developpeur-precedent-faisait-les-backups-sur-son-bureau</link>
      <guid>https://lesjoiesducode.fr/quand-je-decouvre-que-le-developpeur-precedent-faisait-les-backups-sur-son-bureau</guid>
      <pubDate>Fri, 03 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je tombe sur un if avec 15 conditions successives]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-tombe-sur-un-if-avec-15-conditions-successives</link>
      <guid>https://lesjoiesducode.fr/quand-je-tombe-sur-un-if-avec-15-conditions-successives</guid>
      <pubDate>Thu, 02 Apr 2026 16:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le client dit que finalement son site était mieux avant après 3 mois de refonte]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-client-dit-que-finalement-son-site-etait-mieux-avant-apres-3-mois-de-refonte</link>
      <guid>https://lesjoiesducode.fr/quand-le-client-dit-que-finalement-son-site-etait-mieux-avant-apres-3-mois-de-refonte</guid>
      <pubDate>Thu, 02 Apr 2026 15:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je découvre que le mot de passe du serveur de staging c'est "staging123"]]></title>
      <description><![CDATA[<p></p><p><span># En partenariat avec Passbolt</span><br />沈 "staging123", "admin2024", "dev1ne" : on a tous déjà croisé ces mots de passe qui n'en ont que le nom.</p><p>Le problème, c'est pas la flemme d'un collègue, c'est l'absence d'un outil qui génère, stocke et partage des credentials solides sans que personne n'ait à s'en souvenir.</p><p>Passbolt est un gestionnaire de mots de passe <a href="https://hubs.li/Q043BNBL0" target="_blank">open source, gratuit et pensé pour les équipes</a>. Auto-hébergeable, chiffré côté client, et avec une Community Edition sans aucune limitation. ️</p><p>Fini les mots de passe devinables en trois coups, touchés, coulés.</p><p> <a href="https://hubs.li/Q043BNBL0" target="_blank">Lancez-vous sur Passbolt gratuitement</a></p><p><a href="https://lesjoiesducode.fr/passbolt-gestionnaire-de-mots-de-passe-gratuit-open-source-que-votre-equipe-merite-vraiment" target="_blank">Lire l'article complet sur Les Joies du Code</a></p>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-decouvre-que-le-mot-de-passe-du-serveur-de-staging-cest-staging123</link>
      <guid>https://lesjoiesducode.fr/quand-je-decouvre-que-le-mot-de-passe-du-serveur-de-staging-cest-staging123</guid>
      <pubDate>Thu, 02 Apr 2026 13:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand je découvre qu'un de nos sites est down depuis 3 jours et que personne n'a rien vu]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-je-decouvre-quun-de-nos-sites-est-down-depuis-3-jours-et-que-personne-na-rien-vu</link>
      <guid>https://lesjoiesducode.fr/quand-je-decouvre-quun-de-nos-sites-est-down-depuis-3-jours-et-que-personne-na-rien-vu</guid>
      <pubDate>Thu, 02 Apr 2026 11:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Quand le chef nous dit qu'on fera les tests quand on aura le temps]]></title>
      <description><![CDATA[<div class="grid grid-cols-1 lg:grid-cols-3 gap-8"><article class="lg:col-span-2"><div class="lg:rounded-lg border transition-colors lg:mx-0 mx-0 lg:border-l lg:border-r border-l-0 border-r-0 rounded-none c8"><div class="px-4 lg:px-6 pb-6"><div class=""><div class="flex items-center space-x-4"><p> Partager</p></div></div></div></div><div class="mt-4 mb-4 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">À lire également</h2></div><div class="mt-8 mb-8"><div class="space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Plus de contenu</h2></div></div><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                            ${post.title}
                        </h3></article></div>
            
        `;
    } else {
        return `
            <article class="${cardClass}"><a href="https://lesjoiesducode.fr/$%7Bpost.permalink%7D" class="block">
                    <div class="flex items-center space-x-3 p-2 rounded-lg transition-colors hover:bg-gray-50 dark:hover:bg-gray-800"><p></p><h3 class="text-sm font-semibold font-inter line-clamp-3 text-gray-900 dark:text-white group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors mb-0">
                                ${post.title}
                            </h3></div>
                </a></article>
        `;
    }
}
]]&gt;
<div class="mt-8 mb-8 space-y-6"><p></p><h2 class="text-xl md:text-2xl font-bold font-plus-jakarta text-gray-900 dark:text-white">Les derniers articles</h2></div>]]></description>
      <link>https://lesjoiesducode.fr/quand-le-chef-nous-dit-quon-fera-les-tests-quand-on-aura-le-temps</link>
      <guid>https://lesjoiesducode.fr/quand-le-chef-nous-dit-quon-fera-les-tests-quand-on-aura-le-temps</guid>
      <pubDate>Thu, 02 Apr 2026 10:00:00 +0200</pubDate>
    </item>
    <item>
      <title><![CDATA[Anthropic laisse fuiter 512 000 lignes de Claude Code sur npm]]></title>
      <description><![CDATA[<p>Quelques jours à peine après avoir laissé fuiter les détails de Mythos, son futur modèle IA, Anthropic récidive avec une boulette d'une toute autre envergure : le code source complet de Claude Code, son outil de coding en ligne de commande, s'est retrouvé exposé sur le registre npm.</p><h2>Le .map du trésor</h2><p>Le 31 mars 2026, le chercheur en sécurité Chaofan Shou a repéré qu'un fichier <code>cli.js.map</code> de 60 Mo avait été inclus dans la version 2.1.88 du package <code>@anthropic-ai/claude-code</code> sur npm. Ce type de fichier, un source map, sert normalement à faire le lien entre le JavaScript compilé et le code source original lors du débogage. Sauf qu'ici, le champ <code>sourcesContent</code> embarquait l'intégralité du code TypeScript d'origine.</p><p>Le coupable : Bun, le runtime JavaScript utilisé par Claude Code, qui génère les source maps par défaut lors du bundling. Il suffit d'oublier de les exclure dans la configuration du package (un <code>.npmignore</code> ou un champ <code>files</code> dans <code>package.json</code>) pour tout expédier sur le registre public.</p><p>Un oubli que tout développeur qui a déjà publié un package npm peut comprendre, même si ça pique un peu plus quand on s'appelle Anthropic.</p><p class="c9"></p><p>Le code source reconstitué pèse environ 1 900 fichiers TypeScript pour plus de 512 000 lignes de code, avec une quarantaine d'outils intégrés et une cinquantaine de commandes slash. Côté architecture, on découvre que Claude Code tourne sur <a href="https://bun.com/" target="_blank" rel="noopener">Bun</a> (pas Node.js), utilise React avec Ink pour le rendu terminal, et s'appuie sur Zod 4 pour la validation.</p><p>Pour ceux qui veulent creuser, un développeur a publié <a href="https://ccu.galdoron.com/" target="_blank" rel="noopener">un reverse engineering de Claude Code</a> qui recense les systèmes non documentés, les fonctionnalités cachées, les feature flags (les interrupteurs qui permettent d'activer ou désactiver des fonctionnalités à la volée) et les variables d'environnement.</p><h2>Claude ne dort jamais</h2><p class="c9"><img src="https://lesjoiesducode.fr/wp-content/uploads/2026/04/sleeping-beauty-tired.jpg" alt="La belle au bois dormant de Disney épuisée" class="c10" srcset="https://lesjoiesducode.fr/wp-content/uploads/2026/04/sleeping-beauty-tired.jpg 625w, https://lesjoiesducode.fr/wp-content/uploads/2026/04/sleeping-beauty-tired-300x199.jpg 300w" sizes="(max-width: 625px) 100vw, 625px" /></p><p>Mais le plus intéressant, ce sont les fonctionnalités non encore annoncées qui se cachaient dans le code.</p><p>En tête : Kairos (du grec ancien signifiant "le moment opportun"), un mode daemon qui permettrait à Claude Code de tourner en arrière-plan de façon permanente. L'agent effectuerait de la consolidation de mémoire pendant les périodes d'inactivité, fusionnant ses observations et convertissant ses hypothèses en faits vérifiés. Une sorte de rêve artificiel, en somme (qui a dit creepy ?).</p><p>Autre découverte : un mode Undercover, pensé pour les contributions discrètes aux dépôts open source.</p><p>Le prompt système trouvé dans le code demande au modèle de ne laisser filtrer aucune information interne d'Anthropic dans les messages de commit ou les titres de pull requests. Autrement dit, Claude contribue déjà au code open source, et il a pour consigne de ne pas se faire repérer.</p><h2>Déjà vu (littéralement)</h2><p>Le plus cocasse dans cette histoire, c'est qu'il ne s'agit même pas d'une première.</p><p>En février 2025, une fuite quasi identique avait déjà exposé le code source d'une version antérieure de Claude Code via le même mécanisme. Et quelques jours avant cette nouvelle fuite, c'est le modèle <a href="https://fortune.com/2026/03/31/anthropic-source-code-claude-code-data-leak-second-security-lapse-days-after-accidentally-revealing-mythos/" target="_blank" rel="noopener">Mythos</a> (alias Capybara), décrit comme plus puissant qu'Opus, qui avait été révélé via un CMS mal configuré.</p><p>Trois fuites en un an pour le labo qui fait de la sécurité son argument principal de vente : le timing est perfectible.</p><p>Sans grande surprise, des copies du code source ont été sauvegardées sur GitHub quasi instantanément, et le dépôt le plus populaire a accumulé près de 30 000 étoiles et plus de 41 500 forks avant qu'Anthropic ne dégaine les demandes de retrait DMCA.</p><p>Le porte-parole de l'entreprise a précisé qu'aucune donnée client ni aucun identifiant n'avait été exposé, qualifiant l'incident de "problème de packaging causé par une erreur humaine", pas de faille de sécurité.</p>]]></description>
      <link>https://lesjoiesducode.fr/anthropic-fuite-code-source-claude-code</link>
      <guid>https://lesjoiesducode.fr/anthropic-fuite-code-source-claude-code</guid>
      <pubDate>Thu, 02 Apr 2026 09:12:00 +0200</pubDate>
    </item>
  </channel>
</rss>
