Quotidien Shaarli
Aujourd'hui - July 29, 2026
Domenic Denicola partage son environnement de développement agentique optimisé pour l’IA, conçu pour permettre une collaboration fluide avec des modèles avancés comme Claude Code. Son objectif principal est de pouvoir corriger des bugs en production directement depuis un smartphone, même en déplacement, tout en garantissant une continuité de travail entre différents appareils. Pour cela, il utilise une machine virtuelle Linux dédiée et toujours active, couplée à Tailscale pour un accès sécurisé et transparent, ainsi que des outils comme Portless et chezmoi pour centraliser les configurations et préserver l’état des projets.
Son approche repose sur une VM Linux, indispensable pour éviter les limitations des environnements Windows, souvent incompatibles avec les outils en ligne de commande utilisés par les agents. Il insiste sur la nécessité de préserver les sessions, l’état des fichiers et les configurations globales, tout en permettant le lancement de serveurs de développement accessibles uniquement en local ou via HTTPS. La gestion des permissions est simplifiée pour minimiser les interruptions, autorisant même des modes de fonctionnement autonomes pour des tâches parallèles.
L’article explique les React Server Components (RSC) dans Next.js, une technologie qui sépare clairement le rendu côté serveur et côté client. L’idée centrale est de privilégier des composants "mort" (statiques, sans JavaScript) pour le contenu comme les articles ou les pieds de page, et des composants "vivants" (interactifs) uniquement pour les éléments nécessitant une interaction utilisateur. Cette approche réduit la taille des bundles et améliore les performances, tout en simplifiant la gestion des données (accès direct à la base de données côté serveur).
L’auteur partage son expérience en production, soulignant trois pièges courants : l’ajout excessif de directives "use client" qui alourdit inutilement le code client, les waterfalls de requêtes asynchrones ralentissant le rendu, et l’activation accidentelle du rendu dynamique via des fonctions comme cookies(). Il recommande de limiter les composants clients aux fonctionnalités indispensables et d’isoler les parties dynamiques pour conserver un rendu statique optimisé.
Enfin, l’article conseille d’adopter les RSC dès un nouveau projet Next.js, tandis que pour une application existante, une migration progressive des routes les plus lourdes (en termes de contenu) est préférable. L’auteur illustre ces principes avec son propre site, où les pages d’articles sont entièrement statiques, tandis que des fonctionnalités comme un chat ou des formulaires restent interactives.
MapLibre GL JS est une bibliothèque TypeScript utilisant WebGL pour afficher des cartes interactives dans un navigateur à partir de tuiles vectorielles. Son apparence est définie par un document de style conforme à la spécification MapLibre Style, et elle s’intègre à l’écosystème MapLibre, incluant des versions pour Android et iOS.
La documentation propose un guide de démarrage rapide avec un exemple minimal en HTML et JavaScript, ainsi que des instructions pour l’installation via npm ou en utilisant des modules ES. Elle détaille aussi les sections principales, comme les objets de carte, les marqueurs, les sources de données et la gestion des événements.
L’outil prend en charge divers bundlers (Vite, webpack, etc.) et nécessite une configuration spécifique pour le worker WebGL. Des exemples de code et des ressources complémentaires sont disponibles pour faciliter l’intégration.
La veille technologique chez Kapt met en lumière l’importance pour les développeurs de s’appuyer sur des outils et bibliothèques existants plutôt que de réinventer systématiquement la roue. L’entreprise, spécialisée dans le développement logiciel, illustre cette approche avec un exemple concret : la restriction d’accès à certaines pages d’un site pour des utilisateurs spécifiques, en utilisant le framework Django. Plutôt que de coder manuellement chaque vérification, Kapt exploite des fonctionnalités intégrées ou des modules prêts à l’emploi pour gagner en efficacité et en fiabilité.
L’article souligne que cette stratégie permet de se concentrer sur des tâches à plus forte valeur ajoutée, tout en réduisant les risques d’erreurs. Cependant, il rappelle aussi que l’utilisation de ces "machins tout faits" nécessite une veille active pour identifier les solutions les plus adaptées et éviter les pièges liés à leur intégration ou maintenance. Une métaphore humoristique compare ces outils à des roues métaphoriques, facilitant le travail des développeurs sans pour autant remplacer leur expertise.
L’auteur documente son approche d’une "usine logicielle" intégrant l’IA pour automatiser la production de code, tout en maintenant un contrôle strict sur la qualité logicielle. L’idée centrale est que l’IA excelle dans la génération de code, mais que la qualité dépend aussi de l’intention produit, de la gestion des risques (valeur, utilisabilité, faisabilité, viabilité) et de la fiabilité. L’outillage repose sur un context engineering précis, où des fichiers structurés (CLAUDE.md, règles thématiques, contraintes long terme) fournissent le contexte nécessaire aux agents, optimisé pour éviter la surcharge de tokens et les erreurs.
L’usine logicielle est organisée en couches : contexte (fichiers de référence), compétences (skills déterministes), outils (MCP, GitNexus, mémoire persistante), garde-fous (hooks, tests d’architecture) et processus de production (quality gates bloquantes, tests multi-étages). L’auteur souligne l’importance de standardiser les procédures pour limiter les risques, comme les dépendances non souhaitées dans un futur open source, vérifiées par des tests automatisés.
Enfin, l’auteur reconnaît des défis persistants, comme la standardisation des règles, l’évitement des rabbit holes (dérives coûteuses) et la mise à jour continue des compétences. Bien que le code soit quasi 100 % généré, la responsabilité humaine reste centrale pour garantir que le logiciel répond aux besoins métiers et techniques, au-delà de la simple production de code.
L'article de Jay Freestone propose une approche pour éviter la duplication des règles métier entre frontend et backend en privilégiant le partage de politiques plutôt que de code. L'idée centrale est que les règles, comme la validation d'état d'une commande, doivent être centralisées côté serveur pour éviter des incohérences lorsque les deux parties évoluent indépendamment. Plutôt que de partager des fonctions ou des modules (risquant des divergences de versions ou de déploiement), l'auteur suggère de transmettre les décisions sous forme de données structurées, comme les actions autorisées ou les raisons de désactivation, permettant au frontend de s'adapter dynamiquement.
L'auteur illustre cette méthode avec un exemple concret : au lieu de dupliquer une fonction canCancelOrder en TypeScript à la fois dans l'API et l'interface, le backend renvoie un objet JSON contenant les actions possibles (allowedActions) et les motifs de désactivation (disabledReasons). Cette approche, inspirée des principes HATEOAS, simplifie la maintenance et garantit la cohérence des règles, tout en restant compatible avec des architectures polyglottes où le partage de code est complexe.