<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rétrogaming on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/r%C3%A9trogaming/</link><description>Recent content in Rétrogaming on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Fri, 13 Feb 2026 18:00:00 +0200</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/r%C3%A9trogaming/index.xml" rel="self" type="application/rss+xml"/><item><title>Touraine Tech 2026 - Récap du jour 2</title><link>https://blog.zwindler.fr/2026/02/13/recap-touraine-tech-2026-jour2/</link><pubDate>Fri, 13 Feb 2026 18:00:00 +0200</pubDate><guid>https://blog.zwindler.fr/2026/02/13/recap-touraine-tech-2026-jour2/</guid><description>&lt;img src="https://blog.zwindler.fr/2026/02/tnt26-entree2.webp" alt="Featured image of post Touraine Tech 2026 - Récap du jour 2" /&gt;&lt;h2 id="jour-2---cest-reparti-"&gt;Jour 2 - C&amp;rsquo;est reparti !
&lt;/h2&gt;&lt;p&gt;Me voici dans le train du retour et je prend un peu de temps pour mettre en forme mes notes de la journée. C&amp;rsquo;est parti pour le récap du jour 2 de Touraine Tech 2026 !&lt;/p&gt;
&lt;p&gt;Après une soirée speakers très sympa dans un bar à jeux, je me suis levé un poil trop tard et j&amp;rsquo;ai loupé la keynote&amp;hellip; Dommage 😅.&lt;/p&gt;
&lt;h2 id="lorsquun-simple-bug-réseau-vous-emmène-dans-les-entrailles-de-linux"&gt;Lorsqu&amp;rsquo;un simple bug réseau vous emmène dans les entrailles de Linux
&lt;/h2&gt;&lt;p&gt;Florian Forestier nous a raconté une histoire de debugging &lt;strong&gt;épique&lt;/strong&gt;.&lt;/p&gt;
&lt;img src="https://blog.zwindler.fr/2026/02/tnt26-kernel.avif"
alt="Talk debugging kernel Linux"
loading="lazy"
decoding="async"&gt;
&lt;p&gt;Le contexte : une équipe de 3 devs en mode &amp;ldquo;You build it, you run it&amp;rdquo;, avec une stack Golang/Svelte. Tout va bien, quand soudain arrive un manager qui dit &amp;ldquo;ça marche PAS&amp;rdquo;. La PKI est en panne, sur du hardware custom&amp;hellip; provenant de matériel reconditionné tchèque (pour la modique somme de 200k€ tout de même).&lt;/p&gt;
&lt;p&gt;Le matériel incriminé : des DL380 Gen 10 avec des cartes QLogic FastlinQ 45000. Il y en a 8, et aucune ne fonctionne.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;enquête commence :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les cartes sont visibles dans le BIOS ✓&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lspci&lt;/code&gt; les détecte ✓&lt;/li&gt;
&lt;li&gt;Mais &lt;code&gt;ip link&lt;/code&gt; ne les voit pas ✗&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dmesg&lt;/code&gt; affiche des erreurs sur les drivers &lt;code&gt;qed&lt;/code&gt;/&lt;code&gt;qede&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Testé avec Ubuntu, CentOS, Alpine Linux -&amp;gt; KO partout. Impossible d&amp;rsquo;avoir des drivers pour des kernels récents compatibles avec Proxmox.&lt;/p&gt;
&lt;p&gt;Après une semaine d&amp;rsquo;échecs collectifs, Florian a une &amp;ldquo;idée à la con&amp;rdquo; : installer une vieille Ubuntu 18.04. Moi ça me fait rire, parce que j&amp;rsquo;aurais commencé par là ! Quand on a du vieux matériel, on teste avec un OS contemporain du matériel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bingo !&lt;/strong&gt; Ça fonctionne.&lt;/p&gt;
&lt;p&gt;À partir de là, investigation par dichotomie : Debian 12 avec le kernel 4.15 de Ubuntu -&amp;gt; OK. Bug présent en 4.17, absent en 4.16, puis rechercher le commit dans les modifications sur les pilotes qed/qede.&lt;/p&gt;
&lt;p&gt;La solution : un code &amp;ldquo;non supporté&amp;rdquo; pas pris en compte dans une fonction ajoutée en 4.16. &lt;strong&gt;3 lignes de fix.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pour reverser le correctif dans le kernel Linux, il a fallu écrire sur la bonne mailing-list, avec ses 8 pages de règles. 3 semaines entre l&amp;rsquo;envoi du mail et le merge (habituellement 1-2 semaines).&lt;/p&gt;
&lt;p&gt;Un beau REX de debugging bas niveau ! J&amp;rsquo;étais vraiment content de l&amp;rsquo;avoir vu :).&lt;/p&gt;
&lt;h2 id="lampoule-qui-en-savait-trop--voyage-au-cœur-de-la-sécurité-des-objets-connectés"&gt;L&amp;rsquo;ampoule qui en savait trop : voyage au cœur de la sécurité des objets connectés
&lt;/h2&gt;&lt;p&gt;Paul Pinault nous a plongé dans le monde de la sécurité IoT.&lt;/p&gt;
&lt;img src="https://blog.zwindler.fr/2026/02/tnt26-iot.avif"
alt="Talk sécurité IoT"
loading="lazy"
decoding="async"&gt;
&lt;p&gt;Quelques chiffres pour poser le contexte : &lt;strong&gt;300 millions d&amp;rsquo;ampoules connectées&lt;/strong&gt; vendues chaque année, dont 60% en WiFi (vs Zigbee/ZWave). Et côté réglementation, ça bouge :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RED&lt;/strong&gt; (août 2025) : garantie sécurité cyber EN18031, mises à jour possibles et sécurisées, communications chiffrées, données personnelles nettoyées, plus de mots de passe par défaut&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cyber Resilience Act&lt;/strong&gt; (2026-2027) : SBOM obligatoire, MAJ pendant 10 ans minimum&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Paul a donc disséqué (à la DREMMEL 🤣) une ampoule connectée équipée d&amp;rsquo;un ESP32-U4WD, avec ses 2 oscillateurs RTC/horloge et son eFuse, pour voir s&amp;rsquo;il pouvait la compromettre.&lt;/p&gt;
&lt;p&gt;Les vecteurs d&amp;rsquo;attaque analysés :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Port série et JTAG&lt;/strong&gt; : désactivés post-usine&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pairing WiFi&lt;/strong&gt; : pas RED-compliant (HTTP car pas d&amp;rsquo;Internet au moment du pairing = pas de certificat, WiFi ouvert)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BLE Pin&lt;/strong&gt; : pas possible sur une ampoule&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BLE pairing&lt;/strong&gt; : la voie privilégiée&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Point rigolo : pour que les télécommandes soient CRA/RED compliant, l&amp;rsquo;ampoule doit aussi devenir une gateway BLE vers Internet (sinon, pas de mise à jour).&lt;/p&gt;
&lt;h2 id="au-secours--mes-images-pourrissent-mes-perfs"&gt;Au secours ! Mes images pourrissent mes perfs
&lt;/h2&gt;&lt;p&gt;Antoine Caron et Mathieu Mure nous ont parlé d&amp;rsquo;un sujet crucial pour les performances web : les images.&lt;/p&gt;
&lt;img src="https://blog.zwindler.fr/2026/02/tnt26-images.avif"
alt="Talk optimisation images web"
loading="lazy"
decoding="async"&gt;
&lt;p&gt;Un peu d&amp;rsquo;histoire&amp;hellip; En &lt;strong&gt;1992&lt;/strong&gt;, la toute première image est affichée sur le web : &lt;a class="link" href="https://www.letemps.ch/culture/musiques/y-trente-ans-web-souvrait-musique-geneve" target="_blank" rel="noopener"
&gt;les Cernettes (du CERN, évidemment)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Aujourd&amp;rsquo;hui, 99.9% des sites web ont au moins 1 image, et 68% des pages mobiles ont leur LCP (Largest Contentful Paint) lié à une image.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le royaume des formats&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Morts/vieillissants : BMP, GIF, JPEG, PNG&lt;/li&gt;
&lt;li&gt;Modernes : WebP, AVIF, SVG, JPEG XL&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Après une chouette explication de comment ça fonctionne &amp;ldquo;en théorie&amp;rdquo;, Antoine et Mathieu nous on montré qu&amp;rsquo;à compression égale, les formats récents prennent moins de place, mais surtout, affichent des artefacts visuels bien moindres dans les hauts niveaux de compression (notamment AVIF).&lt;/p&gt;
&lt;p&gt;Les bonnes pratiques présentées :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Taille adaptative&lt;/strong&gt; avec &lt;code&gt;srcset&lt;/code&gt; pour laisser le navigateur choisir la meilleure taille&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Balises &lt;code&gt;&amp;lt;picture&amp;gt;&lt;/code&gt;&lt;/strong&gt; avec plusieurs &lt;code&gt;&amp;lt;source&amp;gt;&lt;/code&gt; pour gérer différents formats&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;fetchpriority=&amp;quot;high&amp;quot;&lt;/code&gt;&lt;/strong&gt; au-dessus de la ligne de flottaison&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;loading=&amp;quot;lazy&amp;quot;&lt;/code&gt;&lt;/strong&gt; en dessous&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sharp&lt;/strong&gt; en JS pour le traitement côté serveur&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git LFS&lt;/strong&gt; pour éviter de commit des fichiers lourds&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache de build&lt;/strong&gt; pour éviter de reconstruire chaque image à chaque CI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bref, j&amp;rsquo;ai du boulot sur ce blog (je le savais&amp;hellip;).&lt;/p&gt;
&lt;h2 id="makers-de-père-en-fils"&gt;Makers de Père en Fils
&lt;/h2&gt;&lt;p&gt;Matthias et Sylvain Gougouzian nous ont présenté un talk bonbon sur leurs projets makers en famille.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2026/02/tnt26-makers.avif"
alt="Talk Makers de Père en Fils"
loading="lazy"
decoding="async"&gt;
Un duo pétillant, pour ne pas dire explosif 😂 ! Matthias (le fils) est super cash (pour rester poli), c&amp;rsquo;était très rigolo à voir.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;idée de Sylvain : initier ses enfants à l&amp;rsquo;électronique, comme nous à l&amp;rsquo;époque en cours de techno. Objectif : faire 1 à 2 projets par an ensemble.&lt;/p&gt;
&lt;p&gt;Après découverte de &lt;strong&gt;Scratch&lt;/strong&gt; (apprendre le code par blocs), &lt;strong&gt;Pyrates&lt;/strong&gt; (approfondir avec Python), &lt;strong&gt;Micro:Bit&lt;/strong&gt; (code visuel avec accéléromètres et boutons), &lt;strong&gt;TinkerCAD&lt;/strong&gt; (conception 3D de projets physiques), Sylvain s&amp;rsquo;est dit que c&amp;rsquo;était le moment de passer à un vrai projet DE ZERO. Recréer un équivalent &lt;a class="link" href="https://nabaztag.com/" target="_blank" rel="noopener"
&gt;du Nabaztag&lt;/a&gt; !&lt;/p&gt;
&lt;p&gt;Ils ont utilisé la méthode &lt;strong&gt;MoSCoW&lt;/strong&gt; pour prioriser :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Must have&lt;/strong&gt; : Météo (LEDs), Moteurs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Should have&lt;/strong&gt; : Écran, GreenIT&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Could have&lt;/strong&gt; : Micro, HP, Carte SD&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Won&amp;rsquo;t have&lt;/strong&gt; : Bourse, Traffic&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Choix techniques : ESP32/Raspberry Pico avec MicroPython.&lt;/p&gt;
&lt;p&gt;Le moment touchant du talk : apprendre à se dire les choses. Matthias n&amp;rsquo;osait plus parler à son père quand une tâche était trop grosse, par peur de décevoir. C&amp;rsquo;est un point qu&amp;rsquo;en tant que parent, on peut trop facilement oublier&amp;hellip;&lt;/p&gt;
&lt;p&gt;Une fois les problèmes de communication réglé, ils ont pu découper en étapes : PoC d&amp;rsquo;abord (NeoLED, écran, servomoteur, bouton, carte microSD), puis passage au MVP avec la forme physique sur TinkerCAD.&lt;/p&gt;
&lt;p&gt;Un bel exemple de transmission intergénérationnelle.&lt;/p&gt;
&lt;h2 id="another-world-une-belle-leçon-darchitecture-logicielle"&gt;Another World, une belle leçon d&amp;rsquo;architecture logicielle
&lt;/h2&gt;&lt;p&gt;Olivier Poncet nous a fait découvrir les entrailles d&amp;rsquo;un jeu cultissime (bon, moi je le connaissais pas 🫣) : Another World.&lt;/p&gt;
&lt;img src="https://blog.zwindler.fr/2026/02/tnt26-anotherworld.avif"
alt="Talk Another World"
loading="lazy"
decoding="async"&gt;
&lt;p&gt;Un talk que je voulais voir depuis longtemps, mais comme je savais que je le verrai à TNT26, j&amp;rsquo;avais décidé de ne pas regarder le replay !&lt;/p&gt;
&lt;p&gt;Another World, c&amp;rsquo;est un jeu vidéo d&amp;rsquo;aventure/action cinématique sorti en 1991, fait par &lt;strong&gt;une seule personne&lt;/strong&gt; (sauf la musique) : Eric Chahi, pionnier du jeu vidéo français des années 80-90.&lt;/p&gt;
&lt;p&gt;Les specs impressionnantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Exécutable de &lt;strong&gt;24 Ko&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Assets de 1.2 Mo (images et sons)&lt;/li&gt;
&lt;li&gt;Un moteur graphique polygonal 2D (pour les animations fluides et séquences cinématiques)&lt;/li&gt;
&lt;li&gt;Un moteur sonore 4 pistes PCM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Une machine virtuelle&lt;/strong&gt; pour tout gérer !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le matériel de l&amp;rsquo;époque : Amiga 500 avec 1 Mo de RAM et un HDD de 20 Mo, augmenté d&amp;rsquo;un Genlock (caméscope/magnétoscope) et d&amp;rsquo;un magnétophone. Eric Chahi a créé ses propres outils en GFA Basic. Il a utilisé la &lt;strong&gt;rotoscopie&lt;/strong&gt; : capturer une image vidéo, détourer les assets pour créer les animations. Toutes les peintures et graphismes sont faits à la main.&lt;/p&gt;
&lt;p&gt;Les données sont compressées avec l&amp;rsquo;algo &lt;strong&gt;ByteKiller&lt;/strong&gt;, répandu sur Amiga, économe en RAM.&lt;/p&gt;
&lt;p&gt;La VM est impressionnante agit comme une vrai machine : &lt;strong&gt;64 threads&lt;/strong&gt;, &lt;strong&gt;256 registres&lt;/strong&gt;, &lt;strong&gt;29 instructions / 200+ opcodes&lt;/strong&gt;. Olivier est rentré dans les détails de l&amp;rsquo;implémentation des opcodes et de leur conception.&lt;/p&gt;
&lt;p&gt;Le moteur vidéo utilise des framebuffers avec 4 pages (2 backgrounds + 2 fenêtres principales, 2 actives et 2 inactives). Les polygones sont hiérarchisés dans des &amp;ldquo;bounding boxes&amp;rdquo; pour gérer l&amp;rsquo;affichage et les collisions. Les backgrounds, trop complexes pour être calculés en temps réel, sont pré-dessinés et mis en &amp;ldquo;cache&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Difficile de tout retranscrire, Olivier nous a montré 1001 autres annecdotes sur les optimisations et autres astuces malines dans ce jeu. Olivier n&amp;rsquo;avait plus de temps pour nous montrer sa réimplémentation du jeu en C++ (qui fonctionne dans un navigateur avec WASM, si je ne dis pas de bêtises).&lt;/p&gt;
&lt;p&gt;Une vraie leçon d&amp;rsquo;ingénierie avec les contraintes de l&amp;rsquo;époque !&lt;/p&gt;
&lt;h2 id="communauté-et-remerciements"&gt;Communauté et remerciements
&lt;/h2&gt;&lt;p&gt;Comme toujours, le meilleur d&amp;rsquo;une conférence reste les rencontres.&lt;/p&gt;
&lt;p&gt;Je retiens surtout les longues (très longues) discussions avec Horacio et Yannick de Clever Cloud. J&amp;rsquo;ai aussi enfin pris le temps de papoter avec Estelle, Geoffrey, Julien (x3, décidément 🙃), Valentin, Stéphane (x2), Aurélie, Florian, Jérôme, et sûrement plein d&amp;rsquo;autres que j&amp;rsquo;ai oubliés dans le &amp;ldquo;blur&amp;rdquo; de la conférence.&lt;/p&gt;
&lt;img src="https://blog.zwindler.fr/2026/02/tnt26-foues.avif"
alt="Fouées tourangelles partagées lors de la conférence"
loading="lazy"
decoding="async"&gt;
&lt;p&gt;Un grand merci à l&amp;rsquo;équipe d&amp;rsquo;organisation de Touraine Tech pour cette édition 2026 réussie. Le passage sur 2 jours et le changement de lieu ont été de bonnes décisions. À l&amp;rsquo;année prochaine !&lt;/p&gt;</description></item></channel></rss>