L'auteur a testé pendant quatre jours les 42 conseils de Boris Cherny, créateur de Claude Code, sur un projet réel. Il a notamment expérimenté la gestion de plusieurs sessions parallèles, chacune dédiée à une tâche spécifique (planification, implémentation, tests, etc.), ce qui a amélioré son efficacité. L'article détaille son expérience et les résultats obtenus, mettant en avant l'importance de la gestion du contexte et l'utilisation optimale de l'outil.
Cet article décrit la mise en place d'une architecture haute disponibilité pour un blog WordPress, utilisant Galera MariaDB et Redis Sentinel sur trois nœuds. L'auteur, inspiré par un article de Julien MOROT, partage son expérience et ses configurations pour déployer cette solution en laboratoire. Il utilise des conteneurs LXC Debian 12 et couvre l'installation et la configuration de HAProxy, Keepalived, et les bases de données, avec des détails sur les commandes et fichiers de configuration essentiels. L'objectif est de fournir une solution robuste pour héberger un blog WordPress avec une haute disponibilité.
Dolt est un système de gestion de base de données SQL qui intègre des fonctionnalités de contrôle de version similaires à Git. Il permet de fork, cloner, brancher, fusionner, pousser et tirer des bases de données comme des dépôts Git. Compatible avec MySQL, Dolt expose ses fonctionnalités via des tables, fonctions et procédures SQL. Il propose également une interface en ligne de commande similaire à Git pour importer des fichiers CSV, committer des modifications, les pousser vers un dépôt distant, ou fusionner les changements de collaborateurs. DoltHub est une plateforme pour partager des bases de données Dolt, avec des options d'auto-hébergement via DoltLab ou d'hébergement externe. Une version compatible PostgreSQL, Doltgres, est également disponible en version bêta.
Ce billet de blog met en garde contre l'utilisation de JWT (JSON Web Tokens) sans une date d'expiration (exp claim). Sans cette date, un JWT peut rester valide indéfiniment, transformant un token compromis en un accès permanent. L'auteur explique que les JWT ne sont pas chiffrés mais signés, et que leur structure comprend des claims comme l'identifiant utilisateur, les rôles et le timestamp d'émission. Il souligne que sans expiration, un token volé peut être utilisé longtemps après sa création, même si l'utilisateur a quitté l'organisation. La solution proposée est d'ajouter une date d'expiration pour limiter la validité des tokens, bien que cela nécessite de les renouveler périodiquement. L'auteur rappelle aussi que certains packages JWT ne vérifient pas automatiquement l'expiration.
Un quadtree est une structure de données arborescente utilisée pour organiser des données dans un espace bidimensionnel en le subdivisant récursivement en quatre quadrants, ce qui permet de localiser ou filtrer rapidement des éléments selon leur position. L’article propose une explication interactive qui part d’une recherche spatiale naïve puis montre comment la partition hiérarchique réduit le nombre de comparaisons en explorant seulement les zones pertinentes, avec des démonstrations visuelles pour des opérations comme la recherche de points, les requêtes par zone ou le plus proche voisin. Cette approche illustre comment les quadtrees améliorent l’efficacité d’algorithmes liés à la détection de collisions, à la compression d’images ou au traitement de données spatiales.
Le Model Context Protocol (MCP) est un standard visant à intégrer des outils et scripts existants directement dans les IDE pour les agents IA. Actuellement, ces agents comprennent le code mais ne peuvent pas exécuter des actions réelles, souvent situées en dehors de l'IDE. MCP propose une solution en exposant ces capacités (CLI, API, services internes) via un contrat structuré, permettant aux agents de les utiliser sans nécessiter de plugins spécifiques. Contrairement aux API REST classiques, MCP standardise les actions et permet une découverte dynamique des capacités, facilitant ainsi l'orchestration par les agents IA.
Kevin Murphy partage sa méthode pour lire et évaluer les demandes de pull request (PR). Il explique quand il préfère les examiner (au début ou à la fin de la journée, entre les réunions, etc.), ce qu'il cherche (le but de la PR, son état d'avancement), pourquoi il les examine (demande explicite, expertise, désir d'apprendre) et comment il adapte son approche en fonction de l'auteur. Son objectif est d'aider à faire avancer le travail vers la production, de partager des connaissances et de stimuler la réflexion.
Cet article explore les défis de la constance dans la poursuite des objectifs, soulignant que le problème n'est pas un manque de motivation ou de discipline, mais plutôt une approche mal conçue. L'auteur explique que la volonté, une ressource limitée, ne suffit pas pour maintenir la constance. Il met en avant les recherches de Timothy Pychyl sur la procrastination, qui montrent que celle-ci est liée à la régulation des émotions plutôt qu'à un manque de discipline. Ho propose une nouvelle perspective : la constance est un problème de conception systémique plutôt qu'un défaut de caractère. Il illustre cela avec l'exemple de Ling, une directrice marketing, dont les échecs répétés étaient dus à un manque de clarté dans la mise en œuvre de ses objectifs. L'article suggère que pour être constant, il faut concevoir des systèmes qui ne dépendent pas uniquement de la motivation ou de la volonté.
Gestion des dotfiles avec GNU Stow : Xavier Nayrac explique comment il a organisé ses fichiers de configuration (.dotfiles) et scripts utilisateur à l'aide de GNU Stow, un outil qui crée des liens symboliques pour répliquer une structure de fichiers. Il décrit son organisation en modules par fonctionnalité, l'installation de Stow, et des exemples d'utilisation avec des options comme --dotfiles, --simulate, et --target. Une solution simple et efficace pour gérer ses configurations sur plusieurs machines.
Cet article explore les possibilités offertes par la nouvelle fonctionnalité de personnalisation des éléments <select> dans les navigateurs modernes, en se concentrant sur les navigateurs basés sur Chromium. L'auteur, Patrick Brosset, présente plusieurs démonstrations créatives et amusantes utilisant cette fonctionnalité, comme une pile de dossiers personnalisés. Il explique les étapes et techniques utilisées pour créer ces démonstrations, en commençant par le code HTML de base et en passant par le CSS pour styliser les éléments. L'article souligne également la compatibilité avec les navigateurs non supportants, qui afficheront simplement des éléments <select> standards.
L'article propose une astuce pour visualiser des fichiers CSV dans le terminal de manière lisible. La commande column permet d'aligner les colonnes des fichiers CSV, rendant leur structure plus compréhensible. Cet outil, souvent déjà installé sur les distributions Linux, est léger, rapide et simple d'utilisation. Il supporte différents séparateurs (virgule, tabulation, point-virgule, etc.) et peut être combiné avec d'autres commandes comme less, grep, sort pour des fonctionnalités avancées. La syntaxe de base est column -t -s ',' fichier.csv.
L'article explique la méthode du TDD (Test-Driven Development) à travers un cycle en trois étapes : écrire un test qui échoue, écrire le code de production pour le faire passer, puis refactoriser le code. Cette pratique améliore la couverture de test, réduit les bugs et facilite la réutilisation du code. Un exemple concret est donné pour illustrer le processus, modifiant un algorithme de vote pour inclure l'option d'abstention. Pour approfondir, le blog recommande le livre "Test Driven Development: By Example" de Kent Beck.
L'article critique l'approche des outils d'analyse statique qui évaluent le couplage en comptant les dépendances, ce qui peut être trompeur. L'auteur propose une alternative : le modèle de couplage équilibré, qui évalue les dépendances en fonction de leur impact pratique. Ce modèle identifie quatre types de couplage, classés par poids croissant : le couplage contractuel (le plus léger), le couplage modèle, le couplage fonctionnel et le couplage intrusif (le plus lourd). L'idée est de se concentrer sur la nature des dépendances plutôt que sur leur nombre pour améliorer la conception logicielle.
Kitty Giraudel partage son expérience d'apprentissage de Rust sur une période de six mois, en tant qu'ingénieur JavaScript/TypeScript se lançant dans un système de production. Elle souligne la robustesse de Cargo, le système de build et de gestion de paquets de Rust, contrastant avec les complexités de l'écosystème JavaScript. Elle apprécie également la clarté des messages d'erreur de Rust, bien que les erreurs de compilation, notamment celles liées aux emprunts et à la durée de vie, aient été un défi initial. Son article offre un aperçu de son parcours, mettant en lumière les aspects qu'elle aime et ceux qu'elle n'aime pas, ainsi que ses réflexions sur l'adoption de Rust pour un projet backend.
Marcel Moll partage son expérience avec Symfony Messenger, soulignant des aspects non couverts par la documentation. Il aborde des problèmes rencontrés avec une application e-commerce sous forte charge, comme la gestion de la mémoire, les stratégies de réessai, et la configuration des transports. Il insiste sur l'importance de la version des classes de messages pour éviter les échecs de désérialisation, et recommande des bonnes pratiques pour les déploiements et la gestion des files d'attente. Un guide pratique pour les développeurs expérimentés avec Symfony.
Cet article explique comment sécuriser une connexion SSH en utilisant des clés publiques/privées, en désactivant l'authentification par mot de passe et en installant fail2ban. Il détaille les étapes pour générer une paire de clés (préférentiellement avec l'algorithme ed25519), les copier sur le serveur, ajuster les permissions et configurer PuTTY pour Windows. Une manipulation simple mais efficace pour protéger son serveur contre les attaques par force brute.
Ce billet explore les implications de l'augmentation de la vitesse de codage, notamment grâce à l'IA, sur le métier de développeur. L'auteur, un entrepreneur technique, partage son expérience personnelle où le gain de temps lui permet de se concentrer sur la stratégie et l'amélioration du produit plutôt que sur la simple production de code. Il souligne que l'impact varie selon les contextes, comme les grandes entreprises ou les freelances, et que le gain de temps n'est pas toujours évident, comme le montre une étude récente. L'idée centrale est de se demander à quoi sert ce temps gagné et comment il peut être utilisé pour améliorer la qualité du produit et la réflexion stratégique.
Ce billet de blog explore un problème subtil mais persistant dans les équipes d'ingénierie : la valorisation excessive de la complexité au détriment de la simplicité. L'auteur observe que les ingénieurs qui sur-ingénierisent leurs solutions sont souvent mieux récompensés et promus que ceux qui livrent des solutions simples et efficaces. Ce biais se manifeste dans les entretiens d'embauche, les évaluations de promotion et les revues de conception. La complexité est perçue comme plus intelligente et impressionnante, même si elle n'est pas nécessaire, tandis que la simplicité, bien que souvent plus efficace, est moins visible et moins valorisée. L'auteur appelle à une réévaluation de ces systèmes de récompense pour encourager la simplicité et éviter les pièges de la complexité inutile.
Ce billet de blog explore les limites des grands modèles de langage (LLM) en matière de génération de code correct, en se concentrant sur un exemple concret : une réécriture en Rust d'une base de données SQLite générée par un LLM. Bien que le code compilé semble fonctionner et passe les tests, il s'avère être environ 20 000 fois plus lent que l'original pour des opérations de base. L'auteur souligne que les LLM optimisent pour la plausibilité plutôt que pour la correction, et souligne l'importance de définir des critères d'acceptation clairs avant de générer du code. L'article inclut des benchmarks détaillés et une analyse du code pour illustrer ces problèmes, tout en reconnaissant les avantages des LLM pour accélérer le développement d'idées.
Ce billet de blog de Nx démystifie les monorepos, souvent confondus avec des monolithes. Il explique que les monorepos permettent de développer plusieurs projets dans un seul dépôt, avec des dépendances partagées, tout en maintenant une indépendance des équipes et une CI rapide grâce à des rebuilds et tests ciblés. L'article aborde des idées reçues comme la nécessité de releases simultanées, les risques de modifications non contrôlées par d'autres équipes, ou encore les problèmes de scalabilité et de compatibilité avec les outils d'IA. Il souligne que les monorepos, bien configurés, offrent une flexibilité accrue pour les déploiements et facilitent le partage de code et les refactorisations.