Ce billet de Pascal Martin aborde la réalité du développement logiciel, où les développeurs passent souvent plus de temps à maintenir ou modifier du code existant qu’à en écrire de nouveau. L’auteur souligne que, même au sein d’une équipe, la connaissance approfondie d’un projet est rarement partagée par tous ses membres, chacun intervenant principalement sur des parties spécifiques. Il évoque aussi l’absence historique de pratiques comme les revues de code ou les tests automatisés, qui auraient pu faciliter cette maîtrise collective.
Martin illustre son propos par son expérience personnelle, où il a souvent dû intervenir sur des bases de code inconnues, que ce soit en SSII ou en tant qu’éditeur de logiciels. Il note que même les projets développés from scratch reposent souvent sur des composants partagés, et que l’ajout de nouveaux développeurs ne garantit pas une connaissance exhaustive du code.
Enfin, il remet en question l’idée reçue selon laquelle une équipe connaît parfaitement son propre projet, rappelant que les absences, les départs ou le simple passage du temps rendent cette maîtrise illusoire. Il interroge ainsi les pratiques de passation de connaissances et de documentation au sein des équipes.
L’auteur présente la création d’un serveur MCP (Model Context Protocol) intégré à une application Symfony, permettant à une IA comme Claude d’interagir avec un tableau de bord interne de suivi de projets. Ce serveur, sécurisé par OAuth des deux côtés (client et serveur), utilise l’authentification Google Workspace pour restreindre l’accès aux membres de l’organisation. Les outils MCP, définis comme des classes invocables avec des attributs dédiés, exposent des fonctionnalités comme la liste des projets ou des alertes de sécurité, avec des paramètres typés et des schémas JSON générés automatiquement à partir des signatures PHP.
L’implémentation repose sur le bundle MCP de Symfony AI, configuré via YAML pour définir les transports (stdio pour le développement, HTTP pour la production) et les instructions destinées à l’IA. Chaque outil, comme list-projects, est conçu comme un service Symfony minimaliste, exploitant l’injection de dépendances et des annotations pour décrire ses capacités. Les paramètres, contraints par des attributs comme #[Schema], permettent une interaction structurée avec les données du tableau de bord.
Cette approche illustre une intégration fluide entre Symfony et les protocoles modernes d’IA, offrant une alternative sécurisée aux requêtes manuelles tout en exploitant les mécanismes existants de l’application. L’auteur souligne la réutilisation des bonnes pratiques Symfony (services, configuration, typage) pour un serveur MCP fonctionnel et maintenable.
L’auteur explique avoir migré son blog de WordPress vers EmDash après 12 ans d’utilisation, citant des raisons de maintenance et de sécurité. EmDash, un CMS inspiré de WordPress mais plus léger, permet d’importer facilement le contenu existant, y compris les images, tout en offrant une interface d’administration similaire.
Le nouveau système repose sur Cloudflare Workers, une plateforme serverless qui limite les risques de sécurité grâce à un runtime restreint. L’auteur souligne les avantages de cette solution, comme l’utilisation de services intégrés (D1, R2, KV) et une consommation de ressources optimisée, idéale pour un site à faible trafic.
EmDash adopte une approche plus sécurisée que WordPress en limitant les capacités des plugins, qui s’exécutent dans des environnements isolés. L’auteur souligne que la plupart des fonctionnalités nécessaires sont déjà intégrées ou facilement développables, réduisant ainsi le besoin de dépendre de modules externes.
L’article explique que la commande git rebase -i est souvent redoutée par les développeurs, alors qu’elle est en réalité simple et utile pour réorganiser, modifier ou supprimer des commits. L’auteur illustre son fonctionnement avec un exemple concret où il combine des commits et en supprime un autre, montrant que les changements restent maîtrisables grâce à des commandes comme pick, reword, squash ou drop.
L’auteur insiste sur la sécurité de cette opération, soulignant qu’il est possible d’annuler un rebase à tout moment avec git rebase --abort et que les anciens commits ne sont pas effacés, mais simplement remplacés par de nouveaux. Le reflog de Git permet même de restaurer l’état précédent en cas d’erreur, rendant le processus réversible et sans risque majeur.
Enfin, l’article défend l’importance d’un historique Git propre, considéré comme un indicateur de professionnalisme, et encourage les développeurs à surmonter leurs craintes pour tirer pleinement parti de cette fonctionnalité.
L’article explique comment gérer la concurrence sur le web avec l’API Web Locks, en s’appuyant sur un cas concret chez OLX : le téléchargement de gros fichiers (jusqu’à 20 Go). Pour permettre à l’utilisateur de continuer à naviguer tout en uploadant, OLX a mis en place un système de reprise des téléchargements, mais cela a posé un problème de synchronisation lorsque plusieurs onglets tentent de reprendre le même téléchargement simultanément, entraînant des doublons coûteux.
L’auteur, ingénieur frontend chez OLX, compare les verrous (locks) à la gestion d’une cuisine professionnelle, où plusieurs tâches doivent être coordonnées pour éviter les conflits. Il souligne que, contrairement aux applications multithreads en Java, le développement web moderne (avec React, Web Workers, etc.) doit désormais intégrer des mécanismes de synchronisation pour éviter des situations chaotiques, comme des téléchargements dupliqués ou des coûts inutiles.
La solution proposée repose sur l’API Web Locks, qui permet de réserver une ressource partagée (comme un téléchargement) pour un seul onglet à la fois. L’article introduit d’abord le concept de verrou, essentiel pour éviter les incohérences dans les systèmes concurrents, avant de détailler son implémentation pratique pour résoudre le problème de reprise des uploads chez OLX.
Travels est une bibliothèque JavaScript légère et agnostique des frameworks, conçue pour implémenter des fonctionnalités d'annulation (undo) et de rétablissement (redo) optimisées pour les états volumineux et les mises à jour fréquentes. Contrairement aux solutions classiques qui copient l'intégralité de l'état à chaque modification, Travels stocke uniquement les différences (JSON Patch selon la RFC 6902), réduisant ainsi considérablement l'empreinte mémoire et facilitant la persistance des historiques.
Compatible avec React, Vue, Zustand ou JavaScript vanilla, cette solution cible les applications interactives comme les éditeurs de texte ou les outils de dessin. Elle propose des modes avancés (journal contrôlé, mode mutable ou archivage) pour s'adapter à différents besoins, tout en garantissant une gestion efficace des historiques longs et des mises à jour mineures.
Le projet, maintenu sous licence MIT, inclut des benchmarks, des exemples et une documentation détaillée pour faciliter son intégration. Il s'appuie sur Mutative, un moteur de patch JSON performant, et vise à équilibrer performance, scalabilité et simplicité d'utilisation.
Gridstack.js est une bibliothèque TypeScript moderne et sans dépendances externes, conçue pour créer rapidement des tableaux de bord interactifs et réactifs. Elle permet de concevoir des interfaces avec des éléments déplaçables, redimensionnables et adaptés aux mobiles, tout en offrant des fonctionnalités avancées comme la gestion de grilles imbriquées ou le déplacement d'éléments entre plusieurs grilles.
Compatible avec divers frameworks (Angular, React, Vue, etc.), Gridstack.js simplifie l'intégration grâce à des wrappers dédiés et des exemples prêts à l'emploi. Son utilisation se résume à quelques lignes de code, comme l'installation via npm et l'initialisation d'une grille avec des widgets personnalisables.
Le projet, open source et maintenu activement, bénéficie d'une communauté active et est utilisé par de nombreuses entreprises. Une version de démonstration interactive est disponible sur le site pour en tester les capacités.
Le site LifeDev.net présente six principes de slow productivity pour contrer la culture du hustle en 2026, une approche axée sur la durabilité plutôt que sur l’épuisement. L’idée centrale est de privilégier la qualité et la concentration sur le long terme, en opposition à l’illusion de la productivité mesurée par l’activité visible. Les données montrent que la culture du grind mène à des taux élevés de burnout et à une stagnation de la productivité réelle, malgré l’augmentation des heures travaillées.
Parmi les six principes proposés, deux se distinguent : limiter le nombre de tâches en cours pour éviter la surcharge cognitive et travailler à un rythme naturel, en planifiant par cycles plutôt que dans l’urgence permanente. L’article souligne que la productivité durable repose sur la protection de l’attention, la définition claire des objectifs et la réduction des distractions, notamment technologiques.
Enfin, la slow productivity n’est pas une forme de paresse, mais une stratégie pour produire un travail significatif sans sacrifier sa santé ou son équilibre. Les principes s’appliquent aussi bien aux individus qu’aux équipes, avec des résultats visibles sur plusieurs mois ou années plutôt que sur des critères immédiats. L’auteur répond aux objections courantes, comme le risque de confusion avec l’équilibre vie pro-vie perso, en insistant sur leur approche pragmatique et sans dogmatisme.
L’article explique comment sécuriser les secrets Kubernetes en utilisant OVHcloud Secret Manager (un service managé compatible HashiCorp Vault KV v2) couplé à External Secrets Operator (ESO), une solution automatisée pour synchroniser les secrets entre le gestionnaire externe et le cluster. L’auteur souligne les avantages de cette approche, notamment la simplicité de déploiement et la réduction des coûts (environ 0,03 € par secret/mois), tout en évitant les pratiques risquées comme le stockage direct dans Git ou les Secrets Kubernetes non protégés.
Le tutoriel détaille les étapes techniques : installation de la CLI OVHcloud, configuration d’un compte de service IAM avec des droits minimaux, puis déploiement d’ESO via Helm. L’opérateur permet de synchroniser automatiquement les secrets depuis OVHcloud Secret Manager vers Kubernetes, avec un chiffrement au repos et une gestion centralisée des accès via des tokens IAM. L’auteur compare cette solution à des alternatives comme OpenBao, jugées plus complexes à maintenir pour des clusters légers.
Enfin, l’article aborde la question budgétaire, précisant que le coût reste très faible pour un usage modéré, et propose une méthode pour regrouper plusieurs valeurs sous un même secret afin d’optimiser la facturation. La démarche est présentée comme une alternative efficace aux solutions auto-hébergées, idéale pour les environnements éphémères ou les équipes cherchant à simplifier leur gestion des secrets.
L’auteur, Derek Mwale, explique qu’il conçoit désormais des logiciels en anticipant leur maintenance sur dix ans, ce qui influence ses choix techniques : structure des dossiers, nommage des variables, documentation ou encore conception des API. Cette approche vise à faciliter la compréhension du code par son "moi futur", souvent moins familier avec le contexte initial, et à éviter les solutions trop complexes ou abstraites qui deviennent rapidement incompréhensibles.
Il compare le logiciel à un jardin plutôt qu’à un bâtiment, soulignant que sans entretien, il se dégrade avec le temps (dépendances obsolètes, changements de frameworks, etc.). Pour lui, la lisibilité n’est pas un simple bonus mais une fonctionnalité essentielle, car un code trop astucieux ou obscur devient un fardeau pour les développeurs futurs, voire pour lui-même quelques mois plus tard.
Enfin, il met en garde contre le "code trop malin", qui peut sembler élégant à court terme mais se transforme en dette technique. Il privilégie des solutions simples et claires, car elles résistent mieux à l’épreuve du temps, contrairement aux abstractions génériques ou aux fonctionnalités superflues.
L’article de Jérémy Decool souligne que l’utilisation de l’IA pour rédiger des documents persuasifs, comme des présentations ou des visions stratégiques, affaiblit leur impact. Bien que l’IA excelle pour des tâches techniques ou factuelles, elle produit des textes désincarnés, dépourvus de la personnalité et des convictions qui rendent un message convaincant. L’auteur insiste sur l’importance de l’authenticité et du style personnel pour transmettre une vision et mobiliser une équipe.
L’article explique comment détecter les régressions visuelles dans une CI en utilisant Playwright et Docker. L’idée principale est d’intégrer des tests de capture d’écran pour comparer l’apparence actuelle d’une page avec une référence, afin d’éviter des modifications CSS non détectées avant la mise en production. Playwright propose l’assertion toHaveScreenshot() qui compare les images et échoue si la différence dépasse un seuil configuré.
La mise en œuvre repose sur des tests simples couvrant les pages clés du site, mais nécessite un environnement déterministe pour éviter les faux positifs. L’équipe a dû éliminer les sources de variation, comme les images en lazy loading ou les polices web, en attendant que la page soit visuellement stable avant de capturer l’écran. Un helper stabilize() est utilisé pour attendre la fin du chargement des ressources et des polices.
Enfin, la solution est intégrée dans une CI via Docker pour garantir un rendu cohérent entre les machines, et les images de différence sont postées directement dans les commentaires des pull requests pour faciliter le diagnostic des régressions.
Chez Elao, l’article souligne le manque de collaboration entre designers et développeurs, souvent dû à des formations cloisonnées et à des outils incompatibles. Les designers, formés pour l’expérience utilisateur, négligent parfois la dimension technique des maquettes, tandis que les développeurs peinent à interpréter les livrables visuels. Pour y remédier, l’entreprise a intégré Storybook comme référence partagée, facilitant la communication et réduisant les itérations de correction. Cette approche vise à aligner les processus et à accélérer le développement des projets.
L’article aborde les défis concrets de la souveraineté numérique en Europe, illustrés par l’expérience d’un développeur cherchant à éviter les services américains. Malgré l’utilisation d’infrastructures européennes (Hetzner, Scaleway, Bunny.net), des dépendances critiques comme Let’s Encrypt (bloqué en Iran et Russie) ou Stripe (paiements) persistent, souvent par manque d’alternatives équivalentes. Les compromis économiques, notamment pour les services comme les emails transactionnels ou marketing, révèlent un écart de coût significatif entre les solutions européennes (0,25 €/1 000 emails chez Scaleway) et américaines (jusqu’à 0,10 €), rendant la transition difficile sans sacrifier la rentabilité.
L’auteur souligne l’absence d’alternatives européennes performantes pour des services essentiels, comme les solutions de paiement ou les plateformes d’emails marketing, malgré l’émergence de nouveaux acteurs (Creem.io, Paddle, Mollie). Le choix de renoncer à la souveraineté pour des raisons économiques est évoqué comme une réalité immédiate, bien qu’une solution à long terme (comme la création d’un opérateur email open source) soit envisagée. L’article met en lumière les limites actuelles des infrastructures européennes face à la domination des acteurs américains, même dans une démarche volontariste.
L’auteur, développeur de Writizzy, explore les dilemmes liés à l’ouverture du code de son produit, malgré son attachement à l’open source et ses avantages (contribution à l’écosystème, transparence, visibilité accrue). Il souligne que l’open source peut servir de levier marketing et favoriser une distribution plus large, comme en témoignent des plateformes comme Ghost, WordPress ou GitLab, où des acteurs économiques profitent de l’écosystème sans toujours contribuer en retour.
Cependant, il craint que Writizzy, s’il devient open source, ne subisse une exploitation commerciale disproportionnée par des tiers, captant une partie des revenus générés sans participer à la maintenance ou à l’amélioration du projet. Cette crainte s’appuie sur des exemples comme Substack ou Beehiiv, dont les modèles économiques reposent sur des logiciels non open source, tandis que Ghost, open source, génère une économie parallèle estimée entre 15 et 25 millions de dollars, dont une partie échappe à l’éditeur.
Face à ce dilemme entre éthique et viabilité économique, l’auteur envisage deux options : adopter une licence restrictive limitant l’usage commercial ou accepter cette dynamique sans garantie de retour sur investissement. Il souligne que Ghost, en tant qu’organisation sans actionnaires, peut se permettre cette approche, mais que pour un projet personnel, la question reste ouverte.
Scott H. Young aborde l’impact ambivalent de l’IA sur l’apprentissage, soulignant à la fois ses risques (dépendance, substitution du travail personnel) et ses opportunités (tutorat personnalisé, accès à des explications). Il s’appuie sur une analyse de Carl Hendrick, qui compare l’automatisation à l’IA, mettant en garde contre une surdépendance nuisible aux compétences fondamentales, comme le montrent les erreurs des pilotes face à l’autopilote.
L’auteur rejette les solutions simplistes, comme accepter aveuglément l’IA ou l’interdire, et propose une approche nuancée : l’IA doit être un outil complémentaire, comme une calculatrice ou Wikipédia, sans remplacer l’effort d’apprentissage. Il souligne que son utilité varie selon le niveau de maîtrise, bénéficiant davantage aux experts qu’aux débutants.
Enfin, Young s’interroge sur la quantité optimale d’IA à intégrer dans l’apprentissage, suggérant qu’un usage minimal pourrait aussi être contre-productif. Il défend l’idée que l’IA doit servir à renforcer les compétences, et non à les contourner, tout en reconnaissant la nécessité d’adapter les méthodes éducatives à cette nouvelle réalité.
Symfony 8.2 introduit une fonctionnalité permettant de générer des URLs signées à usage unique grâce à un jeton d'état intégré dans le HMAC via le paramètre version. Contrairement aux versions précédentes où les liens signés pouvaient être réutilisés jusqu'à expiration, cette méthode les rend invalides après leur premier usage sans nécessiter de stockage côté serveur. Le mécanisme repose sur la concaténation discrète de ce jeton à l'URI avant le calcul de la signature, garantissant une invalidation automatique lorsque la valeur du jeton évolue (par exemple, un hash de mot de passe après une réinitialisation).
Cette approche se distingue des solutions alternatives comme login_link ou des implémentations maison, en offrant une sécurité renforcée contre les réutilisations frauduleuses tout en simplifiant la gestion des liens temporaires. Cependant, son efficacité dépend entièrement de la capacité à faire varier le jeton de manière fiable après chaque utilisation, ce qui peut poser des limites dans certains cas d'usage.
Le billet du Google Testing Blog présente le concept de prefactoring, une méthode de refactoring préparatoire visant à simplifier l’intégration de nouvelles fonctionnalités dans un code existant. L’idée centrale, inspirée de Kent Beck, consiste à restructurer le codebase avant d’ajouter une fonctionnalité, plutôt que de le faire en aval ou de forcer l’intégration directement. Cette approche permet d’éviter les complications en cascade et de rendre le code plus adaptable.
Le prefactoring offre plusieurs avantages : il facilite l’implémentation des nouvelles fonctionnalités en les intégrant naturellement, accélère les revues de code en séparant les modifications structurelles des changements fonctionnels, et réduit les risques de bugs en isolant les nettoyages des logiques métiers. De plus, il permet des retours arrière plus sûrs grâce à des changements plus petits et ciblés.
L’article illustre cette pratique avec un exemple concret : l’extraction d’une fonction d’affichage de nom pour éliminer une duplication, avant d’ajouter le support d’un prénom intermédiaire. Cette méthode peut aussi s’appliquer en cours de revue si un nettoyage est suggéré, à condition qu’il ne bloque pas la fonctionnalité principale.
L’auteur exprime son rejet de l’IA générative, principalement en raison de son impact écologique et éthique. Il souligne l’énorme consommation énergétique et hydrique des data centers, ainsi que l’extraction massive de terres rares pour les serveurs, aggravée par un renouvellement annuel des équipements. Il critique aussi l’usage massif de l’IA, même en phase d’inférence, qui multiplie ces problèmes malgré une consommation moindre par rapport à l’entraînement des modèles.
Il dénonce également les conditions de travail des personnes chargées d’étiqueter les données, souvent sous-payées dans des pays pauvres et exposées à des contenus traumatisants. L’auteur évoque aussi le pillage des données pour entraîner les IA, comparant le traitement judiciaire inégal entre les particuliers et les grandes entreprises, qui bénéficient d’une impunité relative malgré des pratiques similaires au piratage.
Enfin, il pointe du doigt l’aspect capitaliste de l’IA, avec des investissements colossaux et des valorisations boursières démesurées, reflétant une logique de profit au détriment des considérations sociales et environnementales.
Ce wiki personnel partage des astuces et tutoriels techniques axés principalement sur l’environnement GNU/Linux, couvrant des sujets variés comme la bureautique, l’administration système et le développement. L’auteur y propose des solutions concrètes, comme l’utilisation de Conky pour surveiller les ressources système ou des outils comme Redshift pour réduire la fatigue visuelle. Les sections dédiées aux clusters Kubernetes et aux conseils pratiques en informatique illustrent son expertise, notamment acquise via son activité de bénévole sur un forum.
Les contenus sont organisés par grandes thématiques, avec des guides détaillés comme le déploiement de clusters avec Talos Linux ou la récupération de données après une panne. L’auteur insiste sur le caractère expérimental de ses méthodes, invitant à une utilisation prudente et responsable des tutoriels fournis. Le ton reste pragmatique, reflétant une approche basée sur l’expérience terrain.
Le site sert aussi de vitrine pour ses réflexions personnelles, avec une section dédiée à ses pages personnelles, tout en restant un espace collaboratif ouvert aux contributions externes. L’accent est mis sur la simplicité et l’efficacité, avec des outils comme VLC ou des scripts pour automatiser des tâches sous Linux.