Marcel Moll discute de l'importance du code propre à l'ère de l'IA générative. Bien que l'IA soit efficace pour produire du code fonctionnel, elle ne remplace pas l'expertise humaine pour créer du code compréhensible et bien structuré. L'auteur souligne que l'IA ne comprend pas le domaine spécifique, les bonnes pratiques de développement ou les implications à long terme des choix architecturaux. Il met en garde contre l'accumulation de dette technique due à l'utilisation non critique de l'IA et insiste sur l'importance de vérifier et de comprendre le code généré avant de l'intégrer. Les principes de code propre restent essentiels, servant désormais de filtre plutôt que de simple guide.
Ce tutoriel explique comment réaliser du web scraping avec une commande Symfony Console, une approche propre et adaptée à la production. L'auteur, Marvelous Akpotu, souligne que le scraping est une tâche longue, susceptible d'échouer, souvent planifiée et automatisée, ce qui en fait une tâche idéale pour les commandes Symfony Console. L'article détaille les étapes pour scraper des données de pays, les parser avec DomCrawler, les trier et les afficher dans un tableau CLI propre. Les packages nécessaires sont symfony/http-client, symfony/dom-crawler et symfony/css-selector. L'auteur met en avant les avantages de cette méthode, comme la séparation des préoccupations, la planification par cron, l'architecture propre, la réutilisabilité et la facilité de refactorisation en jobs asynchrones. Des conseils pour le scraping en production sont également fournis, comme le respect des conditions d'utilisation et du fichier robots.txt, et l'ajout de délais entre les requêtes. Le code source complet est disponible sur GitHub.
L'article explore la disparition progressive des utilisateurs avancés, ceux qui comprenaient profondément les outils qu'ils utilisaient. L'auteur attribue cette évolution à deux décennies d'efforts des grandes entreprises technologiques pour transformer les utilisateurs en consommateurs passifs, éliminant ainsi la littératie technique. Les utilisateurs modernes, surtout ceux ayant grandi avec les smartphones, ont une compréhension limitée de l'informatique, ne connaissant souvent que l'interface des applications sans comprendre leur fonctionnement interne. Cette tendance affecte également les développeurs, qui dépendent de plus en plus des abstractions fournies par les frameworks, perdant ainsi des compétences techniques essentielles. L'auteur souligne que cette dépendance peut devenir problématique lorsque des problèmes complexes surviennent, nécessitant une compréhension plus approfondie des systèmes.
Richard Dern partage son expérience de mise en place d'IPv6 sur son réseau avec OPNsense et une Freebox Pop Fibre en mode bridge. Après des années d'échecs dus à une méconnaissance technique, il a utilisé ChatGPT pour configurer son système. L'objectif était d'assurer une double connectivité IPv4 et IPv6 pour ses clients LAN et ses serveurs. La configuration implique l'activation du Next Hop IPv6 sur la Freebox et la configuration de l'interface WAN d'OPNsense en mode SLAAC. ChatGPT a géré la configuration avec succès, en procédant à des sauvegardes et en exécutant des commandes sans interruption.
L'article présente PDM et uv, deux outils modernes pour la gestion de projets Python, offrant des avantages significatifs par rapport à pipenv et poetry. PDM gère les dépendances, les environnements virtuels et la publication de paquets sur PyPI, tandis que uv accélère l'installation des dépendances et optimise l'utilisation du disque grâce à des liens matériels. L'auteur explique comment installer et configurer ces outils, soulignant leur efficacité et leur simplicité d'utilisation, notamment pour les intégrations continues (CI/CD). Un résumé des avantages et des étapes d'installation est fourni, mettant en avant la supériorité de cette combinaison pour les développeurs Python.
Ce billet présente 10 prompts d'IA prêts à l'emploi pour accélérer la livraison de logiciels en éliminant les goulots d'étranglement courants. Il explique comment l'IA peut être utilisée pour améliorer les processus d'examen de code, de sécurité et de documentation, en fournissant des exemples concrets de prompts pour des tâches spécifiques comme la détection d'erreurs logiques, l'identification des changements cassants et l'analyse des résultats de scans de sécurité. L'objectif est d'aider les équipes à améliorer leur efficacité et à livrer des logiciels plus rapidement.
L'article présente le concept de "FinOps by Design", une approche proactive pour intégrer la gestion des coûts cloud dès la conception architecturale. Il souligne que les coûts sont souvent négligés jusqu'à la mise en production, entraînant des dépenses inutiles et des dépassements budgétaires. Le FinOps by Design propose d'anticiper et de modéliser les coûts dès les premières étapes, en les traitant comme une exigence non fonctionnelle majeure. Les principes clés incluent un design orienté usage, une scalabilité maîtrisée pour éviter le surdimensionnement, et une gouvernance FinOps intégrée dès l'Infrastructure as Code (IaC). L'article met en avant des outils comme Terraform combiné à InfraCost pour estimer les coûts avant le déploiement, soulignant l'importance d'une planification financière rigoureuse dès le début du cycle de vie applicatif.
L'auteur partage son expérience de gestion d'environnements de développement multi-OS (MacOS, Fedora, Ubuntu) avec des outils comme Zed, Neovim, et 1Password. Il explique comment il a résolu les défis de configuration et de synchronisation en utilisant chezmoi, un outil recommandé par un collègue, et mise pour automatiser l'installation et la gestion des outils de développement. Il détaille le processus d'installation et d'utilisation de ces outils, ainsi que leur intégration dans son workflow quotidien. L'article se conclut par une réflexion sur l'efficacité de cette combinaison pour gérer ses environnements de développement.
Lea Verou explique comment émuler les import maps externes, une solution pour gérer centralement les dépendances JavaScript, grâce à une astuce compatible avec les navigateurs modernes. En injectant dynamiquement une balise <script type="importmap"> via un script classique, il est possible de contourner les limitations actuelles des import maps. La méthode, déjà utilisée par JSPM v4, permet de résoudre les problèmes de URLs relatives et offre une solution simple et efficace pour une gestion centralisée des dépendances.
Ce billet met en lumière l'importance de définir des valeurs par défaut sûres pour les drapeaux (flags) dans les scripts et commandes. L'auteur, Zhe Lu, illustre comment une simple omission, comme oublier le drapeau --dry_run, peut entraîner des conséquences graves. Il recommande de choisir des valeurs par défaut qui minimisent les risques d'erreurs coûteuses, comme par défaut un mode "dry run" ou l'ajout de confirmations explicites. Il souligne également l'importance de rédiger des documentations avec des exemples sécurisés, en évitant les valeurs par défaut dangereuses. Enfin, il suggère de rendre obligatoires les drapeaux spécifiques à l'environnement pour éviter les mélanges de configurations.
Scott H. Young explore la loi de Parkinson, qui stipule que le travail s'étend pour remplir le temps disponible. Bien que cette loi ne soit pas empiriquement valable, elle capture une vérité humaine : le temps nécessaire pour accomplir une tâche peut s'étendre lorsque les contraintes temporelles sont assouplies. L'auteur lie ce phénomène à des observations en matière d'endurance physique, où le cerveau semble limiter la performance pour éviter des dommages corporels. Il se demande si des mécanismes similaires s'appliquent à la fatigue mentale, suggérant des liens entre l'épuisement physique et mental.
L'article explique comment utiliser SOPS (Secrets OPerationS) pour chiffrer et gérer des secrets dans des dépôts de code, seul ou en équipe. Il couvre l'installation de SOPS et de age (outil de chiffrement), la création de paires de clés, et trois cas d'usage : chiffrer des variables d’environnement, des secrets Kubernetes, et des secrets pour des flakes Nix. L'article détaille également l'installation manuelle de SOPS sur des distributions non supportées et fournit des commandes pour chiffrer un fichier texte.
Mitchell Hashimoto partage son parcours d'adoption de l'IA, en six étapes, depuis le scepticisme initial jusqu'à une intégration efficace dans son flux de travail. Il commence par abandonner l'utilisation directe des chatbots pour le codage, soulignant leur inefficacité pour des tâches complexes. Il recommande ensuite d'utiliser des agents, des modèles de langage capables d'interagir avec des outils externes. Hashimoto décrit son expérience avec Claude Code, où il a reproduit manuellement ses propres travaux pour améliorer ses compétences et comprendre les capacités de l'IA. Il insiste sur l'importance de diviser les tâches en étapes claires et actionnables pour maximiser l'efficacité. Son approche nuancée et mesurée offre une perspective équilibrée sur l'adoption de l'IA dans le développement logiciel.
Nirina Rabeson explore la question de l'utilisation de l'IA par les développeurs juniors. Initialement opposée à cette pratique, elle change d'avis après avoir observé des juniors utiliser efficacement des outils comme GitHub Copilot et ChatGPT. Elle souligne que son approche traditionnelle d'apprentissage par la pratique présente des limites, notamment en ne permettant d'apprendre que ce que le mentor connaît déjà. Elle conclut que l'IA pourrait être un atout pour les juniors, à condition qu'ils sachent bien implémenter les feedbacks et traiter la dette technique.
L’article recommande d’abandonner Kaniko et de ne pas se précipiter sur Docker BuildX pour la construction d’images de conteneurs en CI/CD, en proposant plutôt Buildah comme solution plus simple et plus robuste, car il permet de construire des images OCI sans dépendre d’un daemon Docker ni d’une configuration complexe souvent nécessaire avec Docker-in-Docker ou BuildX. L’auteur explique que Kaniko a été abandonné et que BuildX reste fortement lié à l’écosystème Docker et à son daemon, alors que Buildah, issu de l’écosystème Podman, fonctionne de manière plus légère et s’intègre facilement dans des pipelines CI pour construire et pousser des images, éventuellement même via une API sans Dockerfile.
Oskar Dudycz partage une leçon apprise à propos de la gestion des données, notamment des grands entiers (bigints) dans les environnements JavaScript/TypeScript. Il explique les défis de la sérialisation et de la désérialisation des données, en particulier avec JSON, qui ne supporte pas nativement les grands entiers ou les dates. Il décrit ses tentatives pour contourner ces limitations, y compris une approche "sneaky" qui a finalement causé des problèmes, soulignant l'importance de bien parser les données plutôt que de deviner leur type. Il conclut en recommandant une approche plus rigoureuse et moins "sneaky" pour éviter les erreurs.
L'auteur de ce blog, Patrice Ferlet, défend l'utilisation de Makefile face à la popularité croissante de Taskfile (GoTask). Il argue que Makefile est plus simple et accessible, même pour les débutants, et critique les arguments fallacieux souvent avancés pour promouvoir Taskfile. Il propose un exemple basique de Makefile et invite les lecteurs à comparer les deux outils de manière objective, tout en reconnaissant les avantages de GoTask. L'article est écrit sur un ton sarcastique et provocateur, mais avec l'intention de stimuler le débat et la réflexion.
L’auteur explique comment optimiser Doctrine ORM pour éviter non seulement le problème classique du N+1, où l’accès aux relations dans une boucle génère des dizaines voire centaines de requêtes, mais aussi le piège du produit cartésien qui survient lorsqu’on tente de tout charger en une seule requête avec de nombreux LEFT JOIN : bien que n’affichant qu’une requête dans le profiler, ce type de jointures multiplie les lignes SQL retournées (chaque combinaison de collections), ralentit la page et surcharge Doctrine lors de l’hydratation des objets. La solution proposée repose sur une hydratation en plusieurs étapes en chargeant d’abord les entités principales avec une relation, puis en « primeant » séparément les autres relations via des requêtes successives utilisant l’Identity Map de Doctrine, ce qui aboutit à quelques requêtes légères et prévisibles sans explosion des résultats.
L’article explique comment configurer Claude Code, un outil CLI d’IA pour améliorer la productivité sur des projets Symfony et PHP, en insistant sur le fait que la qualité des résultats dépend surtout du bon paramétrage plutôt que du modèle utilisé : il conseille l’intégration de Claude Code dans l’IDE (par exemple via un plugin PhpStorm), la création d’un fichier AGENTS.md décrivant les conventions et règles de codage du projet pour guider l’IA, et l’usage systématique d’une phase de planification (“plan mode”) avant de générer du code afin d’obtenir des résultats précis et cohérents, tout en donnant des exemples pratiques de configuration et bonnes pratiques pour Symfony.
Ce tutoriel explique comment construire une application Symfony capable de gérer un grand volume de documents (jusqu'à un milliard) en utilisant MongoDB. Dans cette deuxième partie, l'auteur montre comment configurer une application Symfony avec le Doctrine MongoDB ODM pour mapper les documents à des classes PHP, et utiliser Symfony UX pour créer une interface utilisateur moderne. Le tutoriel couvre la configuration initiale de l'application, la cartographie des documents, et la mise en place d'un tableau de bord pour afficher des informations générales, une liste de stations, et des détails spécifiques comme les prix des carburants et leur historique.