L'auteur, Alexandre Daubois, partage son expérience après avoir rejoint les équipes principales de trois projets open-source majeurs : PHP, Symfony et FrankenPHP. Contrairement à ses attentes initiales, il découvre que ces projets ne fonctionnent pas selon des plans rigides et des roadmaps détaillés, mais plutôt par l'improvisation et l'adaptation aux besoins de la communauté. Il souligne que l'expertise ne signifie pas tout savoir, mais plutôt oser affronter l'inconnu. Il met également en lumière l'importance de lâcher prise et de ne pas être obsédé par le code parfait, une leçon qu'il a apprise en tant que réviseur de code.
Cet article explore les fonctionnalités avancées du composant EventDispatcher de Symfony, au-delà de son utilisation basique pour les notifications. Marcel Moll y partage des patterns qui peuvent transformer la structure d'une application, comme les événements stoppables, les priorités, les subscribers, et les points d'extension. Il aborde également les défis liés au traçage du code événementiel et quand il est approprié d'utiliser EventDispatcher. L'auteur partage son expérience et ses recommandations pour une utilisation efficace de cet outil puissant.
L'article explique comment éviter de réécrire des expressions régulières pour les routes dans Symfony. Il met en avant la classe Requirement de Symfony, qui contient des motifs pré-définis pour des paramètres de route courants comme les UUID, les slugs ASCII, et les formats de date. Plutôt que d'écrire manuellement des regex complexes, on peut simplement utiliser les constantes fournies par cette classe, ce qui simplifie et standardise le code. L'auteur encourage à utiliser ces outils intégrés pour gagner en efficacité et en clarté.
Ce partage explique comment optimiser les performances d'un site Symfony en minifiant le CSS et le JavaScript grâce au bundle SensioLabs Minify. La minification réduit la taille des fichiers en supprimant les espaces et commentaires inutiles, améliorant ainsi la vitesse de chargement. L'article détaille l'installation et la configuration du bundle, ainsi qu'une astuce pour désactiver la minification en mode développement tout en l'activant en mode production.
L'article explore l'utilisation de l'API Popover pour créer des infobulles (tooltips) en s'appuyant sur les fonctionnalités natives du navigateur plutôt que sur des bibliothèques JavaScript. L'auteur explique comment cette API simplifie la gestion des interactions clavier, de l'accessibilité et des événements, réduisant considérablement le code nécessaire. Il compare l'ancienne méthode utilisant des bibliothèques avec la nouvelle approche basée sur l'API Popover, soulignant les avantages en termes de simplicité et de robustesse. L'article note également que l'API est bien supportée par les navigateurs, bien que certaines fonctionnalités soient encore en développement.
L’article présente un patron appelé “Orchestrated UI” qui combine Symfony UX, Mercure et Temporal pour créer des interfaces utilisateur live pilotées par des workflows côté serveur sans gestion d’état complexe côté frontend, illustré par un exemple de commande de repas où chaque étape du processus est orchestrée par un workflow et poussée en temps réel au navigateur via Mercure afin de recharger dynamiquement les composants Symfony Live sans JavaScript sophistiqué ; l’intérêt principal est de simplifier la construction d’applications web interactives à états complexes tout en restant dans un seul codebase PHP, avec des exemples et une bibliothèque nommée StepKit disponibles pour tester cette approche.
Joppe De Cuyper explore l'idée d'un monde où l'IA génère du code sans intervention humaine, remettant en question l'importance des principes de "clean code". Il présente un projet Symfony sans code source, où seul un ensemble de spécifications et de tests sont maintenus. L'IA génère le code nécessaire à chaque build, le rendant obsolète après utilisation. Cette approche permet une amélioration continue du code grâce aux avancées de l'IA, sans héritage de code ancien. Le projet, illustré par une API de gestion de tâches, montre comment les spécifications détaillées peuvent remplacer le code source traditionnel.
Cet article explique comment utiliser MariaDB-Backup (Mariabackup) pour sauvegarder et restaurer des bases de données MariaDB ou MySQL de manière performante. Contrairement à mysqldump, qui effectue des sauvegardes logiques lentes, Mariabackup réalise des sauvegardes physiques "à chaud", plus rapides et adaptées aux environnements de production exigeants. Le tutoriel couvre l'installation, la création de sauvegardes, la restauration, les sauvegardes incrémentielles et les fonctions avancées. Il souligne aussi la différence entre sauvegardes logiques et physiques, ainsi que la compatibilité de Mariabackup avec les fonctionnalités spécifiques de MariaDB.
Ce tutoriel explique comment héberger une IA locale avec Ollama, un outil simplifiant le déploiement de modèles d'IA en local, et lui apprendre vos données via le RAG (Retrieval-Augmented Generation). L'auteur détaille l'installation d'Ollama sur une VM Linux, le téléchargement d'un modèle léger comme Gemma 3, et l'utilisation du RAG pour intégrer vos documents internes. Le processus est simplifié pour éviter les coûts élevés et la complexité des solutions cloud.
L'auteur explique avoir créé Bloggrify, un générateur de blog statique open source, pour plus de flexibilité après des expériences avec Wordpress, Joomla et Medium. Cependant, en 2026, il migre vers Writizzy, un autre de ses projets, pour plus de simplicité. Il aborde le dogfooding, les défis de l'open source, et la motivation à maintenir des projets peu utilisés. Bloggrify, bien que techniquement abouti, manque d'adoption, ce qui le démotive. Il partage ses réflexions sur l'avenir de ses projets, y compris Bloggrify, Writizzy et Hakanai.io.
Ce guide de SitePoint présente cinq modèles de prompts pour améliorer la qualité du code généré par les outils d'IA. Les problèmes courants comme les imports fantômes ou les erreurs d'architecture sont souvent dus à des prompts vagues. Les modèles proposés, tels que le "Context Priming" ou le "Constraint Injection", aident à structurer les demandes et à obtenir un code plus conforme aux conventions et aux besoins spécifiques. Chaque modèle est illustré par un exemple concret avant/après.
Scrapling est un framework de web scraping adaptatif qui gère tout, des requêtes simples aux crawls à grande échelle. Il apprend des changements de site web et relocalise automatiquement les éléments lorsque les pages sont mises à jour. Ses fetchers contournent les systèmes anti-bot comme Cloudflare Turnstile. Le framework de spider permet de réaliser des crawls concurrents, multi-sessions avec pause/reprise et rotation de proxy automatique, le tout en quelques lignes de Python. Il offre des crawls rapides avec des statistiques en temps réel et un streaming. Le projet est open source et disponible sur GitHub.
Oxfmt, un formateur de code compatible avec Prettier et développé en Rust, est désormais en version bêta. Plus rapide (30x plus que Prettier et 3x plus que Biome), il prend en charge plusieurs formats de fichiers, intègre le tri des imports et le support de Tailwind CSS, et offre une compatibilité totale avec Prettier. Utilisé par des projets comme Vue.js et Sentry, il est facile à installer et à migrer depuis Prettier.
La page cheat.sh/latency présente une infographie textuelle des temps de latence que tout programmeur devrait connaître, inspirée des "Latency Numbers Every Programmer Should Know" de Jeff Dean. Elle compare visuellement les temps de réponse de différentes opérations informatiques, allant de l'accès à la mémoire cache L1 (1ns) aux communications intercontinentales (jusqu'à 150ms). Un outil utile pour comprendre et visualiser les performances des systèmes informatiques.
Le projet "learn-claude-code" est un dépôt GitHub qui propose une série de 12 sessions progressives pour construire un agent d'IA similaire à Claude Code, en partant de zéro. Chaque session ajoute un mécanisme spécifique, avec pour objectif final de créer un agent autonome capable d'exécuter des tâches complexes. Le projet utilise un modèle de boucle minimal où l'utilisateur interagit avec un grand modèle de langage (LLM) qui peut exécuter des outils si nécessaire. Les sessions couvrent des concepts tels que l'ajout d'outils, la planification des tâches, la gestion de la mémoire, l'exécution en arrière-plan, la délégation de tâches à des agents collaborateurs, et plus encore. Le code est écrit en Python et est disponible sous licence MIT.
Cronboard est une application en ligne de commande pour gérer et planifier des tâches cron sur des serveurs locaux et distants. Elle permet d'ajouter, modifier, supprimer et visualiser l'état des tâches cron. Parmi ses fonctionnalités, on trouve l'autocomplétion des chemins, la validation des tâches, la gestion des connexions SSH, et la prise en charge des expressions spéciales comme @daily ou @yearly. Développé avec Textual, Python crontab, Paramiko et Cron descriptor, Cronboard est disponible via pip, Homebrew, uv ou AUR.
Ce billet de blog explore le concept de "Spec-Driven Development" (SDD) comme alternative à la méthode de "vibe coding" avec les outils d'IA de codage. L'auteur, travaillant dans l'ingénierie des paiements, explique que le SDD consiste à écrire une spécification structurée avant de laisser l'IA implémenter le code, contrairement à la méthode intuitive de "vibe coding" où l'on affine les prompts jusqu'à obtenir un résultat fonctionnel. L'article met en lumière les problèmes de perte de contexte et de dérive architecturale liés à l'utilisation excessive des prompts, surtout dans des systèmes critiques comme les paiements, où les failles de sécurité peuvent avoir des conséquences graves. Le SDD, avec des outils comme OpenSpec, permet de formaliser le processus de développement et d'éviter ces pièges.
La Specification Driven Development (SDD) est une approche de développement logiciel qui replace la spécification détaillée des exigences avant l’écriture du code comme artefact central du projet : cette spécification, souvent en texte structuré (ex. Markdown), décrit le comportement attendu du système et sert de source de vérité pour guider conception, implémentation et tests, contrastant avec les méthodes où les tests ou documents techniques viennent après le code ; historiquement issue d’une évolution des pratiques (TDD → BDD), elle vise à réduire les erreurs, ambiguïtés et malentendus entre parties prenantes en clarifiant l’intention dès le départ et en maintenant la documentation vivante et accessible dans le même dépôt que le code.
L'article explore la règle bien connue de ne pas déployer de nouvelles versions de logiciels le vendredi. L'auteur analyse les avantages et les inconvénients de cette pratique, en tenant compte du contexte métier, de la fréquence des releases et des pratiques techniques. Il souligne que cette règle peut être pertinente dans certains cas, comme pour les systèmes critiques ou les sites e-commerce, mais moins pour les systèmes où les risques et les menaces sont faibles. Il insiste également sur l'importance d'automatiser les processus de déploiement et de garantir la compatibilité descendante pour minimiser les risques. En conclusion, l'auteur suggère que la décision de déployer ou non le vendredi dépend largement du contexte spécifique de chaque organisation.
L'article décrit comment son travail en ingénierie logicielle a évolué avec l'utilisation d'outils d'IA comme Codex. Il explique que, bien qu'il n'écrive plus de code manuellement, il passe par des étapes rigoureuses de planification, de vérification et de test, en utilisant des agents pour générer des implémentations. Les tâches sont divisées en planification (25-35%), revue et tests (40-50%), et exécution par l'agent (15-25%). Les gains de productivité sont significatifs pour des tâches standard, mais les agents ont encore des limites dans des domaines comme les refactorisations architecturales complexes ou le débogage profond. Les contraintes actuelles incluent les limites de contexte et la dérive architecturale.