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.
Dans ce billet de blog, l'auteur partage son expérience avec l'intelligence artificielle générative (GenAI) dans le développement logiciel, notamment à travers le projet PodSweeper. Il évoque l'utilisation croissante d'assistants IA pour automatiser des tâches répétitives et explorer des projets web complets, malgré des résultats mitigés en opérations (Ops). Bien qu'il reconnaisse les limites et les critiques des experts sur la qualité du code généré, il souligne les bénéfices concrets pour les non-experts comme lui. L'auteur teste également des outils spécialisés comme k8sgpt et HolmesGPT, tout en restant prudent sur les promesses de la GenAI. Un retour d'expérience nuancé sur les apports et les défis de l'IA dans le développement logiciel.
Ce billet de blog explique le concept d'Impedance Mismatch, un problème courant dans les systèmes informatiques où la modélisation legacy entrave l'expérience omnicanale et les API. L'auteur illustre ce problème à travers l'exemple de Martin, un utilisateur bloqué dans une application mobile car un champ obligatoire (l'année de construction) manque. Le système legacy refuse d'enregistrer le contrat sans cette information, créant une rupture dans le parcours utilisateur. La solution proposée est architecturale : la réification du processus, qui consiste à adapter le modèle de données aux besoins spécifiques de chaque contexte d'utilisation, plutôt que d'exposer un modèle canonique universel. L'article souligne l'importance de prendre en compte l'usage et le contexte dans la modélisation moderne, comme le préconise le Domain-Driven Design (DDD), pour éviter les couplages forts et la complexité inutile.
Ce tutoriel explique comment configurer Caddy 2 avec un certificat SSL wildcard pour tous les sous-domaines d'un domaine, en utilisant le défi DNS avec OVH comme fournisseur DNS. Il couvre l'installation de Caddy via Docker, l'ajout du plugin OVH, la configuration du fichier Caddyfile, et l'obtention des identifiants nécessaires pour OVH. Le guide est détaillé et adapté pour ceux qui souhaitent migrer ou tester Caddy comme reverse proxy.
Cet article traite de l'importance de la propriété CSS z-index pour contrôler l'ordre d'affichage des éléments sur une page web. L'auteur, Amit Sheen, souligne les problèmes liés à l'utilisation de valeurs arbitraires et élevées de z-index, souvent appelées "magic numbers". Ces pratiques peuvent entraîner des conflits, des difficultés de maintenance et de débogage. L'article met en lumière l'importance d'une approche plus structurée pour éviter ces problèmes, bien qu'il ne traite pas directement des contextes d'empilement (stacking contexts).
Le blog de Genma propose un script bash pour nettoyer les paquets Snap désactivés sur Ubuntu. Le script, nommé RemoveOldSnap.sh, liste et supprime les anciennes révisions des paquets Snap inutilisés, permettant ainsi de libérer de l'espace disque. Le tutoriel inclut un exemple d'exécution et montre comment vérifier les paquets Snap restants après nettoyage. Une astuce utile pour optimiser l'utilisation de l'espace sur les systèmes Ubuntu.
Carrie Webster explore l'impact de l'IA sur le workflow des designers UX. Bien que l'IA puisse générer rapidement des wireframes, prototypes et même des design systems, l'auteure souligne que le rôle du designer UX va au-delà de la création d'interfaces. Elle met en avant la capacité des designers à naviguer dans l'ambiguïté, à défendre les intérêts humains dans des systèmes optimisés pour l'efficacité, et à résoudre des problèmes humains par une conception réfléchie. L'IA ne remplace pas ces compétences, mais les amplifie, permettant aux designers de passer de la création d'outputs à la direction d'intentions, un changement qui, selon elle, est excitant et enrichissant pour le domaine du UX.
Ben Balter, après treize années passées chez GitHub, partage les leçons apprises sur le travail à distance. Il souligne que GitHub a repensé les processus de travail en adoptant une approche "remote-first", asynchrone et inspirée des workflows open-source. L'entreprise utilisait ses propres outils (Issues, Pull Requests, Markdown) pour gérer non seulement le code, mais aussi les processus internes comme les politiques RH ou légales. Cette méthode favorisait la visibilité du travail et la collaboration asynchrone, éliminant les problèmes de versions et rendant les changements transparents. L'office physique à San Francisco servait davantage de hub que de siège obligatoire, reflétant la culture distribuée de l'entreprise.