Une astuce pour donner plusieurs adresses de push pour le même remote
L'article explore la théorie des deux facteurs de Frederick Herzberg pour motiver les salariés. Il distingue les facteurs d'hygiène (éviter l'insatisfaction : salaire, conditions de travail) des facteurs moteurs (générer la satisfaction : accomplissement, reconnaissance, autonomie). Herzberg identifie quatre profils d'employés selon leur niveau de satisfaction et d'engagement. L'objectif est de combiner de bonnes conditions de travail et un travail épanouissant pour maximiser la motivation et l'engagement des équipes.
Cet article de CSS-Tricks explore les fonctions trigonométriques inverses en CSS : asin(), acos(), atan() et atan2(), souvent considérées comme les fonctionnalités les moins aimées selon le State of CSS 2025. L'auteur, Juan Diego Rodríguez, explique comment ces fonctions permettent de retrouver un angle à partir d'une valeur trigonométrique, contrairement aux fonctions sin(), cos() et tan() qui font l'inverse. Il détaille leurs définitions, leurs domaines et plages de valeurs, ainsi que leurs applications pratiques, en mettant en avant l'utilité particulière de atan() et atan2() pour déterminer des angles dans divers contextes.
Dufs est un serveur de fichiers léger en Rust, offrant des fonctionnalités WebDAV pour un stockage "drive" simple et rapide à configurer, contrairement à des solutions comme Nginx. Il permet de gérer des fichiers via une interface web ou des applications compatibles WebDAV comme Enpass, Obsidian, ou Koreader. Le tutoriel explique comment l'utiliser avec Nomad pour une auto-hébergement, en sécurisant les identifiants avec Vault.
Ce journal explique comment créer un timelapse sur une longue période (3 semaines) en utilisant ffmpeg et bash. L'auteur décrit les étapes détaillées pour acquérir des images, les moyenner, générer des clips, les concaténer, accélérer la vidéo et ajouter du son. Les scripts fournis automatisent ces processus, facilitant ainsi la création de timelapses. Un partage utile pour ceux qui souhaitent automatiser la création de vidéos timelapse.
Un développeur junior partage son expérience d'apprentissage de React et Next.js avec l'aide de ChatGPT comme mentor. En utilisant des techniques de prompting efficaces, comme demander des explications "comme si j'avais 5 ans", il a pu surmonter les défis initiaux et développer une méthode d'apprentissage progressive. Cette approche lui a permis de comprendre les concepts fondamentaux et d'évoluer vers des questions plus complexes, facilitant ainsi sa transition vers Next.js.
Ce billet explique la différence fondamentale entre les Message Queues (files d'attente de messages) et les systèmes Pub/Sub (publication/abonnement), souvent confondus. Les Message Queues, comme RabbitMQ ou SQS, utilisent une structure FIFO où les messages sont traités une fois et supprimés, idéales pour des tâches uniques comme l'envoi d'emails ou des jobs CI/CD. Les systèmes Pub/Sub, comme Kafka, utilisent un log append-only où les messages restent disponibles pour être relus, parfaits pour l'analytics en temps réel ou le traitement d'événements. Choisir le mauvais outil peut entraîner des problèmes techniques majeurs. L'auteur détaille les cas d'usage et les avantages de chaque système.
Cet article explique les bases de l'authentification, notamment la différence entre identification et authentification, et l'importance de l'authentification multifacteur (MFA). Il détaille les trois méthodes principales d'authentification : quelque chose que vous connaissez (mot de passe), quelque chose que vous possédez (clé physique ou virtuelle), et quelque chose que vous êtes (biométrie). L'article se concentre ensuite sur l'utilisation des clés de sécurité FIDO2 sous Linux et Windows, en expliquant comment les détecter, les installer, les lier à un compte, et les tester avec des services comme sudo, LightDM, et SSH. Il offre également des instructions pour utiliser ces clés sous Windows. Pour finir, il souligne l'importance de la sécurité et de la protection des identités numériques.
Ce billet explore le concept de Carbon Aware Computing pour réduire l'empreinte carbone des sites web. L'auteur critique le greenwashing courant (badges verts, modes sombres) et propose une approche technique concrète. Il explique comment il utilise les données en temps réel de RTE (Réseau de Transport d'Électricité) pour adapter la consommation énergétique de son site. Un service Symfony, le CarbonAwareService, récupère ces données et gère les cas de défaillance via un mode dégradé. Selon l'intensité carbone du réseau, le site active des modes "Éco" ou "Critique", modifiant subtilement l'interface utilisateur pour informer et adapter la consommation.
L'auteur partage son expérience de migration de NSD à Knot DNS pour gérer ses certificats Let's Encrypt de manière plus efficace. Il explique les limites de NSD, notamment l'absence de gestion automatique des signatures RRSIG et le manque de support pour la RFC 2136 (Dynamic DNS). En adoptant Knot DNS, il résout ces problèmes et automatise la gestion des certificats, y compris les wildcards, grâce aux mises à jour dynamiques des zones DNS. Il détaille également son processus de configuration et de vérification, incluant l'utilisation d'Ansible pour gérer Knot DNS.
L'article explore la problématique des animations CSS redondantes dans les projets web. L'auteur souligne que les animations de base comme les fade-in, slide ou zoom sont souvent recréées de manière indépendante, entraînant une duplication inutile de code et une maintenance complexe. Il propose une solution pour standardiser ces animations en consolidant les @keyframes, transformant ainsi un système chaotique en un système clair et prévisible. Une lecture utile pour les développeurs front-end cherchant à optimiser leur code et leur flux de travail.
La page est une liste soigneusement sélectionnée de ressources mathématiques gratuites, couvrant divers domaines tels que les fondements des mathématiques, la théorie des nombres, l'algèbre, la géométrie, l'analyse, la probabilité, et bien plus encore. Elle inclut des plateformes d'apprentissage, des séries YouTube, des outils, des encyclopédies, des livres, des magazines, des blogs, et des informations sur les rencontres et conférences. Les ressources sont organisées par branches des mathématiques et certaines ressources payantes sont indiquées par une icône 💲.
JoliMediaBundle est un nouveau bundle Symfony développé par JoliCode pour la gestion des médias dans vos projets. Inspiré par une expérience personnelle avec une image de mauvaise qualité, ce bundle répond à des besoins récurrents comme l'upload, le stockage, l'organisation, la transformation, l'optimisation, la diffusion, la sélection et l'affichage des médias. Il offre des fonctionnalités telles que le glisser-déposer, la sélection multiple, le suivi de l'upload, et une gestion flexible du stockage (local ou cloud). Idéal pour les sites vitrines, les plateformes eCommerce ou les applications métier, JoliMediaBundle simplifie la gestion des contenus multimédias.
Excellent ! J'ai beaucoup ri... Merci Ploum !
Le projet TOON (Token-Oriented Object Notation) propose un format de données compact et lisible par l'homme, conçu pour optimiser l'utilisation des tokens dans les modèles de langage (LLM). Il combine la structure basée sur l'indentation de YAML avec une disposition tabulaire pour les tableaux uniformes, offrant ainsi une alternative plus économique en tokens au JSON standard. TOON est particulièrement efficace pour les tableaux d'objets uniformes, tout en restant une représentation sans perte du modèle de données JSON. Le projet inclut une spécification complète, des benchmarks, un SDK TypeScript, et des outils pour faciliter son utilisation avec les LLM.
Le Vibe Coding, tendance récente promettant de générer du code sans savoir coder, suscite le scepticisme. Bien que l'idée ne soit pas nouvelle (FrontPage, LightSwitch, NoCode), l'auteur souligne que les non-développeurs finissent souvent par confier le travail à des professionnels. Le métier de développeur ne se résume pas à produire du code, mais implique discernement et expérience. Une étude d'OX Research révèle que les modèles actuels de Vibe Coding reproduisent des erreurs typiques des juniors, comme des anti-patterns et des problèmes de scalabilité, de sécurité et de maintenabilité. La rapidité et le volume de code généré posent des défis pour les processus de revue et d'accompagnement.
Chez Les-Tilleuls.coop, on réhabilite la maintenance logicielle, souvent perçue comme une corvée, mais qui est en réalité une discipline exigeante et formatrice. Contrairement à la création ex nihilo, la maintenance confronte au réel, aux imprévus et à la complexité, tout en étant un travail invisible et préventif. Elle enseigne la résilience, l'empathie et l'importance de concevoir des systèmes durables. Dans un monde obsédé par l'innovation, la maintenance est un acte écologique et économique, permettant de faire durer les projets au-delà de leur phase initiale.
L'article explique comment utiliser l'API SpeechSynthesis pour permettre à un navigateur de lire du texte à voix haute. L'API est accessible via window.speechSynthesis et permet de créer des objets SpeechSynthesisUtterance pour spécifier le texte à lire. L'exemple de code montre comment faire parler le navigateur avec une simple ligne de code. Bien que cette API ne remplace pas les outils d'accessibilité natifs, elle peut les compléter pour améliorer l'expérience utilisateur, notamment pour les personnes malvoyantes.
Anthropic explique comment l'exécution de code avec le protocole MCP (Model Context Protocol) permet de rendre les agents IA plus efficaces. En évitant de charger toutes les définitions d'outils et les résultats intermédiaires dans la fenêtre de contexte, on réduit les coûts et les temps de réponse. L'article détaille les problèmes courants liés à la surcharge de la fenêtre de contexte et à la consommation excessive de tokens, et propose des solutions pour optimiser l'interaction des agents avec les serveurs MCP.
L'article explore la méthode Spec-Driven Development (SDD), qui consiste à générer des spécifications détaillées en Markdown avant de coder, guidant ainsi les agents de codage. Bien que prometteuse pour structurer le développement avec l'IA, cette approche, inspirée du modèle Waterfall, présente des inconvénients majeurs : production excessive de texte, bureaucratie systématique, et sentiment de fausse sécurité. L'auteur suggère qu'une approche plus itérative et naturelle pourrait mieux convenir au développement moderne. Plusieurs outils comme Spec-Kit, Kiro, et Tessl sont mentionnés, mais leurs limites sont également discutées.
L'article explore quatre modèles avancés pour résoudre des défis architecturaux complexes en utilisant Symfony 7.x et PHP 8.x. Il aborde des problèmes tels que la gestion des API lentes, la communication avec de multiples endpoints, la création de logs d'audit et le téléchargement de fichiers volumineux. L'auteur illustre ces concepts avec des exemples pratiques, notamment l'utilisation de Symfony Messenger pour découpler les tâches non critiques des interactions utilisateur, améliorant ainsi l'expérience utilisateur. L'article est une ressource précieuse pour les développeurs cherchant à optimiser leurs applications avec Symfony.
L'article explique comment utiliser des modèles de langage locaux (LLM) pour des tests de sécurité informatique, en insistant sur l'importance d'avoir une autorisation écrite. Il décrit l'installation d'Ollama pour exécuter des LLM localement, puis l'utilisation de Cybersecurity AI (CAI), un framework open source pour des analyses offensives et défensives. L'auteur partage son expérience avec une configuration spécifique et des commandes pour sélectionner un LLM et un profil d'agent, comme le "Red Team Agent" pour des tests de pénétration.
L'article de LifeDev.net explore les sept principaux avantages du minimalisme numérique, une approche consciente de l'utilisation de la technologie. Parmi ces bénéfices figurent la clarté mentale et la tranquillité émotionnelle, une concentration accrue et un travail en profondeur, des relations plus saines, une meilleure productivité, une santé physique et numérique améliorée, une créativité renforcée et une plus grande satisfaction de vie. Le minimalisme numérique aide à réduire le bruit numérique, à restaurer la concentration et à transformer les appareils numériques en outils favorisant le bien-être mental. L'article propose également des conseils pratiques pour commencer à pratiquer le minimalisme numérique.
L'auteur de ce billet critique la dépendance excessive aux géants du cloud pour l'hébergement de sites web, y compris pour les projets personnels. Il argue que l'autohébergement peut offrir une fiabilité suffisante, surtout pour des sites à trafic modéré. Il propose des solutions pour améliorer la résilience, comme la redondance des serveurs DNS, et encourage à repenser la nécessité d'une disponibilité absolue pour les petits projets.
Le Model Context Protocol (MCP) est un standard open-source qui simplifie la connexion des modèles de langage (LLM) à vos applications, comme Symfony et PHP. Il agit comme une interface universelle, permettant à n'importe quelle IA compatible d'accéder à vos données en temps réel via un serveur MCP. Cela élimine la nécessité de coder des intégrations spécifiques pour chaque modèle, réduit le "Glue Code", et transforme les LLM en agents autonomes capables d'exécuter des outils. Le MCP offre également une meilleure sécurité et un contrôle accru sur l'accès aux données. L'architecture client-serveur du MCP définit trois primitives principales : Ressources, Prompts et Outils. Avec des bibliothèques comme symfony/mcp-bundle, l'intégration dans Symfony est simplifiée, permettant d'exposer facilement des services Symfony comme des outils MCP via des attributs PHP.
Scott H Young explore dans cet article les implications de l'intelligence artificielle (IA) sur l'apprentissage et le travail futur. Il suggère que l'IA collaborera avec les humains, mais que les compétences d'apprentissage fondamentales restent similaires. Cependant, il met en garde contre une surutilisation de l'IA, qui pourrait nuire à l'acquisition de compétences profondes. Il illustre cela avec l'exemple des calculatrices, qui, bien qu'utiles, n'ont pas remplacé l'apprentissage des bases mathématiques, essentielles pour la compréhension quantitative.
L’article aborde la persistance des préjugés et des idées fausses entourant la psychiatrie et les troubles psychiques, malgré leur prévalence et leur impact majeur sur la santé mondiale. Il souligne que ces idées reçues trouvent souvent leur origine dans une méconnaissance de la discipline, une communication insuffisante de la part des professionnels, ainsi que dans des expériences négatives vécues par certains patients ou leurs proches. Les psychiatres et autres acteurs de la santé mentale sont parfois eux-mêmes stigmatisés, y compris au sein du corps médical, ce qui renforce la méfiance et l’incompréhension. L’article insiste sur la nécessité de mieux informer, de clarifier les pratiques et les rôles des différents intervenants (psychiatres, psychologues, psychothérapeutes), et de lutter contre les stéréotypes pour améliorer la prise en charge et l’intégration des personnes souffrant de troubles psychiques. Il rappelle aussi que la santé mentale est un état de bien-être essentiel pour affronter les défis de la vie et contribuer activement à la société.
Cette page recense les projets Open Source d'Alsacréations sur Github :
- Kiwipedia - Nos guidelines, checklist et bonnes pratiques d'intégration web
- Bretzel - Layouts CSS réutilisables et utilitaires
- KNACSS - styles modernes et accessibles pour les éléments HTML natifs courants
- MyDevice - Taille, résolution et infos de votre device
- UniClaude - Explorateur de caractères Unicode
- Spätzi - Testez et corrigez vos contrastes de couleurs non accessibles
- Schnaps.it - Générateur de Lorem Ipsum alsacien, gal!
- Reset - Reset CSS moderne et accessible
- Liquid - Un gabarit de page responsive en Grid Layout
- Quetsche - Compression d'images. Simple. Basique
- Cuillère - Générateur de QR codes personnalisés
- Palette - Générateur de palettes de couleurs accessibles
- Quiz - Modèle de quiz interactif avec calcul du score
- IEscape - Aidez l'Alsacréature à échapper à Internet Explorer
- Pepin #archive - Structure par défaut de plugin jQuery
Cette page est un annuaire d'outils open source hébergés sur Github.
Cet article présente une sélection de neuf livres essentiels pour tout ingénieur logiciel. La liste inclut des ouvrages classiques comme "Clean Code" et "The Pragmatic Programmer", ainsi que des titres plus spécialisés comme "Software Engineering at Google" et "Designing Distributed Systems". Chaque livre est brièvement décrit, mettant en avant ses points forts et son public cible. L'article souligne l'importance de la lecture pour améliorer ses compétences en développement logiciel et offre une ressource précieuse pour les professionnels à tous les niveaux.
Ce billet de blog explique pourquoi la qualité d'un logiciel dépend avant tout d'une bonne conception fonctionnelle, bien avant l'écriture du code. Mathieu Eveillard souligne l'importance de bien définir les besoins des utilisateurs et de concevoir des solutions adaptées avant de se lancer dans le développement. Il décrit les différentes étapes du processus, de la découverte des besoins à la mise en œuvre, en passant par la conception fonctionnelle, qui consiste à décrire le "quoi" avant le "comment". Il propose également quelques outils et pratiques pour cette étape cruciale, comme la définition de personas, l'étude des processus et la modularité.
L'auteur partage une réflexion sur le pragmatisme en développement logiciel, inspirée par le film "Whatever works" de Woody Allen. Il critique les dogmes et les débats stériles entre experts, souvent centrés sur des définitions, et plaide pour une approche plus flexible des bonnes pratiques. Il illustre son propos avec des exemples comme le TDD, la pyramide de tests et les tests en intégration continue, soulignant que l'essentiel est de s'adapter à la situation et aux besoins de l'équipe. Le temps et les résultats devraient être les seuls juges de paix, et le doute doit rester un moteur d'amélioration continue.
Dans cet article, Dryusdan explique comment automatiser la création et la gestion de passerelles pour ses réseaux privés dans son infrastructure. Il décrit l'utilisation de Packer pour créer des images de machines virtuelles configurées avec un script bash et des fichiers de configuration, permettant ainsi aux instances de ses réseaux privés d'accéder à Internet et d'être accessibles. Il aborde également la gestion des adresses IP via un serveur DHCP personnalisé et le stockage des images avec Incus, tout en partageant son expérience et les défis rencontrés avec Ansible.
Bartek Płotka partage son expérience avec lazygit, une interface utilisateur pour Git qu'il a découverte par accident en utilisant Neovim. Malgré son attachement à Goland pour le développement professionnel, il a été séduit par la simplicité, la rapidité et l'interactivité de lazygit, qu'il utilise désormais pour tous ses workflows Git. Dans cet article, il explique pourquoi lazygit est si spécial, comment il peut améliorer la productivité et ce que nous pouvons apprendre de son design et son expérience utilisateur. Il compare également différentes interfaces Git et souligne l'importance de maîtriser le CLI Git, surtout pour les nouveaux développeurs.
Ce tutoriel explique comment créer un registry Docker privé avec Podman et Quadlet, en mode rootless pour plus de sécurité. Après avoir installé Podman et créé un utilisateur dédié, on génère un certificat auto-signé et un fichier d’authentification (htpasswd). Le registry est lancé via un conteneur Docker officiel, puis configuré pour démarrer automatiquement avec un fichier registry.container dans ~/.config/containers/systemd/. Une redirection de port (443 → 5000) est configurée via firewalld, et un nettoyage automatique des fichiers temporaires est mis en place. Pour tester, on pousse une image (hello-world) depuis une machine cliente après avoir configuré l’accès en mode insecure dans /etc/containers/registries.conf. Une solution simple et locale pour héberger ses images conteneurisées.
Exemple de commande clé :
podman run -d --name registry -p 5000:5000 -v ~/podman-registry/data:/var/lib/registry:Z [...]Scott H Young explore dans cet article les implications de l'IA sur l'apprentissage des compétences et le travail qualifié, en se concentrant sur le "vibe coding", une pratique où des agents IA écrivent du code à la place des programmeurs. Il souligne l'incertitude entourant les développements futurs de l'IA et les difficultés à prédire ses effets à long terme. Bien que les programmeurs professionnels expriment des scepticismes sur la qualité du code généré par IA, Young, en tant qu'amateur, adopte une approche plus neutre. Il partage ses expériences positives avec le vibe coding, ayant utilisé des agents IA pour créer des outils simples et utiles, comme un script pour étudier des vidéos en chinois. L'article questionne si cette technologie démocratise la programmation ou inonde le marché de code de mauvaise qualité.
Ce billet introduit l'architecture RAG (Récupération Augmentée par Génération) comme solution aux hallucinations des LLM (Large Language Models). Les hallucinations, résultant du fonctionnement probabiliste des LLM, sont des réponses inventées par l'IA en l'absence de données suffisantes. L'architecture RAG propose de remédier à ce problème en combinant la capacité des LLM à générer du texte avec une base de données fiable et contrôlée. Ainsi, l'IA peut générer des réponses plus précises et sourcées, évitant ainsi les inventions non fondées.
Un outil bien pratique
Cet article présente les techniques de pagination des API pour les systèmes évolutifs, illustrées par des exemples concrets de Twitter (X) et Spotify. L'article explique pourquoi la pagination est nécessaire pour gérer efficacement de grands ensembles de données, en évitant les problèmes de lenteur, de consommation de bande passante et de mémoire. Il détaille deux méthodes principales : la pagination Limit-Offset, où le serveur divise les données en pages et renvoie un nombre limité de records en fonction d'un décalage (offset), et la pagination par curseur, qui utilise des identifiants uniques pour naviguer à travers les données. L'article met en avant les avantages et les inconvénients de chaque méthode, aidant les lecteurs à choisir la stratégie de pagination la plus adaptée à leurs besoins.
Dans cette BD, l'auteur explique que les bannières de cookies, bien que souvent associées au RGPD, ne sont pas imposées par ce règlement. Il détaille les cas où elles ne sont pas nécessaires et critique l'utilisation abusive de ces bannières, souvent liées à la transmission de données à des tiers. L'auteur propose des alternatives moins intrusives et compare la situation à l'expérimentation "Oui Pub". Une lecture éclairante pour comprendre les enjeux des cookies et du consentement en ligne.
Learn LaTeX propose un cours gratuit en ligne pour débutants, structuré en 16 leçons courtes et pratiques. Chaque leçon aborde des concepts essentiels de LaTeX, un système de préparation de documents, avec des exemples modifiables directement en ligne. Les sujets vont des bases de LaTeX à l'intégration d'images, en passant par les mathématiques, les bibliographies et la gestion des erreurs. Le site offre également des leçons complémentaires, comme l'utilisation de LaTeX en français, et des recommandations pour approfondir ses connaissances.
L'auteur décrit son infrastructure autohébergée basée sur un cluster Proxmox composé de trois machines identiques, choisies pour leur facilité de maintenance, leur faible coût et leur faible consommation électrique. Il explique les raisons de ce choix, notamment la gestion des pannes et la tolérance aux pannes réseau. Il mentionne également un nœud de test et un serveur de sauvegarde, ainsi qu'un NAS Synology utilisé pour les sauvegardes hors ligne. L'auteur souligne l'importance de documenter et de partager ce type d'infrastructure, qui est rarement décrit en détail.
Cet article propose des habitudes de productivité concrètes pour les ingénieurs. Il aborde trois stratégies principales : rester débloqué en parallélisant les implémentations (backend vs frontend par exemple) pour minimiser les temps d'inactivité, réduire le temps de débogage en comprenant la structure du code et en investissant dans la journalisation, et investir dans l'outillage, notamment dans le domaine de l'IA, pour automatiser les tâches répétitives. Ces habitudes visent à améliorer l'efficacité et à surmonter les défis courants dans le développement logiciel.
L'article explore les éléments clés pour concevoir une interface intuitive. Il souligne que la clarté ne se résume pas à un modèle prédéfini, mais résulte d'un travail systématique prenant en compte les objectifs business, le produit et la pensée des utilisateurs. Une interface intuitive doit être prévisible, mais aussi visuellement de qualité, cohérente et alignée avec les attentes des utilisateurs. Une mauvaise conception visuelle peut rendre même les structures les plus simples confuses. L'article met en avant l'importance de comprendre l'expérience utilisateur à travers le prisme de l'utilisateur, et non du designer.
Cet article traite des problèmes de performance d'IntelliSense dans les projets Nx et Turborepo, notamment dans les monorepos TypeScript. Les symptômes incluent des retards d'autocomplétion, des gels de l'éditeur et des erreurs fantômes. L'article explore quatre hypothèses possibles : une mauvaise configuration de Nx, des références manquantes dans TypeScript, des inclusions/exclusions trop larges dans tsconfig.json, et la complexité croissante du codebase. Une enquête approfondie est nécessaire pour identifier la cause racine de ces problèmes de performance.
Cet article de SitePoint explique l'importance des titres (headings) en HTML au-delà de leur simple aspect visuel. Les titres sont sémantiques et structurent le contenu d'une page, facilitant la navigation pour tous, y compris les utilisateurs d'aides technologiques. Ils aident également au référencement (SEO) et aux moteurs de recherche. L'article souligne l'importance d'utiliser les niveaux de titres correctement (de h1 à h6) pour créer une hiérarchie logique, et non pour le style, qui doit être géré par CSS. Une mauvaise utilisation des titres peut nuire à l'accessibilité et à la compréhension de la structure de la page.
Ploum explore le concept de calendar.txt, un fichier texte simple pour gérer son emploi du temps, et partage comment il l'a intégré dans son workflow Unix. Il apprécie la simplicité et l'efficacité des commandes basées sur le texte pour afficher les événements du jour, ajouter des événements récurrents, et gérer les invitations, contrastant cela avec la lourdeur des interfaces web et les "redesigns" constants. Il voit en calendar.txt un exemple parfait de la puissance des outils Unix pour créer des solutions personnalisées et élégantes, loin des plateformes commerciales complexes.
Ce partage explique comment utiliser Symfony 7 et Mercure pour créer une session live réactive sans WebSocket. L'auteur, Jean-Sébastien Christophe, explore l'intégration de Mercure, un protocole de Server-Sent Events (SSE), pour gérer des états de session en temps réel, comme la présence des utilisateurs, sans nécessiter de requêtes répétées ou de boucles côté client. Il détaille la stack technique utilisée (Symfony 7.3, PHP 8.4, Docker, PostgreSQL, MailCatcher) et les avantages de Mercure pour des applications temps réel, tout en prévoyant une future intégration avec FrankenPHP pour optimiser les performances et la sécurité.
L’article explore la distinction cruciale entre User Need (besoin utilisateur) et Product Need (besoin produit) dans le développement de produits digitaux. Un User Need exprime un problème ou une frustration perçue par l’utilisateur, souvent formulée comme une solution concrète (ex. : « Je veux un bouton plus gros »). Le Product Need, en revanche, est le problème business sous-jacent identifié après analyse (ex. : « Assurer une découvrabilité optimale des actions principales »). L’auteur souligne l’importance de ne pas confondre les deux : écouter une demande utilisateur, c’est entendre une solution proposée, tandis que comprendre un besoin, c’est identifier le problème réel à résoudre. Pour y parvenir, des outils comme la méthode des 5 Pourquoi ou l’observation terrain permettent de creuser au-delà des demandes apparentes et d’éviter des solutions techniques inutiles. L’objectif ? Créer des produits qui répondent à des besoins profonds, et non à des demandes superficielles, en alignant valeur utilisateur et objectifs business.
Exemple marquant : Un livreur demandant un vélo plus léger cache en réalité un besoin d’optimisation logistique.
L’article plaide pour une utilisation plus réfléchie et minimaliste des animations dans les interfaces numériques. Plutôt que de multiplier les effets visuels pour séduire, il invite à privilégier la retenue et l’intention : chaque animation doit avoir un but clair (guider, confirmer une action, expliquer une fonctionnalité) et ne pas alourdir l’expérience utilisateur. Les interfaces les plus efficaces sont celles qui se font oublier, en minimisant les frictions. L’auteur souligne l’importance de la performance perçue (idéalement sous 300 ms par animation), du respect des préférences utilisateur (comme l’option « réduire les animations »), et de l’inclusivité, notamment pour les personnes neuroatypiques. L’objectif ? Créer des expériences calmes, prévisibles et accessibles, où le mouvement sert l’utilisateur sans le distraire. Une question clé à se poser : « Pourquoi cette animation ? »—et si la réponse est « juste pour faire joli », mieux vaut s’en passer.
Matter et Thread révolutionnent la domotique en apportant interopérabilité et simplicité. Matter est un protocole open source qui unifie la communication entre objets connectés (Wi-Fi, Ethernet, Thread), permettant à un appareil de fonctionner avec n’importe quelle plateforme (Apple Home, Google Home, Alexa) sans cloud ni passerelle dédiée. Thread, quant à lui, est un réseau maillé IPv6 (basé sur IEEE 802.15.4) qui assure un transport fiable et local des données. Ensemble, ils permettent une intégration directe des appareils dans les écosystèmes existants, sans dépendre des applications ou hubs propriétaires. Résultat : plus de compatibilité entre marques, une installation simplifiée, et une communication sécurisée en local. Les solutions comme Home Assistant (via Matter Server) ou Jeedom (en cours d’adaptation) s’appuient sur ces standards pour centraliser la gestion. En bref, Matter et Thread promettent une domotique universelle, locale et sans silos, comme l’USB-C pour les objets connectés.
Frederick Van Brabant explique que la dette architecturale ne se limite pas à la dette technique : elle s'étend bien au-delà du code et des décisions structurelles logicielles. En tant qu'architecte d'entreprise, il souligne que la dette architecturale concerne aussi les interactions entre applications, la gestion des données, les goulots d'étranglement, la maintenance, et le rôle futur des systèmes dans l'organisation. Il distingue trois couches principales de dette architecturale : application/infrastructure (intégration, redondance, dépendance aux fournisseurs), métier (propriété des processus, documentation obsolète, risques opérationnels) et stratégie (mauvaise définition des capacités, cadres incomplets, conséquences à long terme). Contrairement aux développeurs, les architectes d'entreprise ont la visibilité et les ressources pour identifier et prioriser ces dettes, en s'appuyant sur des tableaux de bord et des analyses pour convaincre les décideurs. L'article insiste sur l'importance de documenter, aligner les processus et éviter les hypothèses erronées, tout en choisissant ses batailles pour corriger les dettes les plus critiques, notamment dans les systèmes centraux plutôt que dans les projets d'innovation.
Dans ce billet, l’auteur souligne que les équipes de développement évoluent constamment avec les arrivées et les départs de membres, ce qui crée à chaque fois une nouvelle dynamique d’équipe. Ces changements entraînent des pertes de connaissances non documentées ou des décisions implicites, mais aussi l’apport de nouvelles perspectives. Pour atténuer les perturbations, il est crucial d’avoir une documentation claire, une vision partagée et des standards de développement bien définis (architecture, choix techniques, processus de revue de code, stratégie de tests, etc.). Ces éléments permettent de maintenir une cohérence et une direction commune, même lorsque la composition de l’équipe change. L’idéal serait d’automatiser cette documentation pour qu’elle reste toujours à jour et accessible, assurant ainsi la stabilité du projet sur le long terme.
Que se passerait-il si on tombait dans un trou noir ? L’article démystifie cette question en expliquant d’abord que le trou noir n’est pas un "aspirateur cosmique", mais un astre extrêmement dense, où la gravité est si intense qu’elle déforme l’espace-temps. Pour un observateur extérieur, une personne tombant vers un trou noir semblerait ralentir jusqu’à s’immobiliser à l’approche de l’horizon des événements, tandis que pour la personne elle-même, le temps s’écoulerait normalement jusqu’à la traversée de cet horizon. Une fois franchi, plus rien ne peut en ressortir, pas même la lumière. La relativité générale montre que le temps et l’espace sont relatifs : la personne en chute libre verrait l’univers extérieur s’accélérer, tandis que l’observateur lointain la verrait figée, puis disparaître. Les forces de marée étireraient ensuite la matière jusqu’à la "spaghettification". Enfin, la théorie actuelle ne décrit pas ce qui se passe au-delà de l’horizon, où les équations deviennent aberrantes.
L’article explique que les développeurs n’ont pas besoin d’être des designers pour créer des interfaces utilisateur efficaces. Cinq principes clés sont détaillés : la couleur (théorie, palettes, et règles comme 60-30-10), la typographie (choix des polices, interlignage, espacement des lettres), la hiérarchie visuelle (taille, poids, contraste, espace), le contraste (accessibilité, lisibilité), et l’alignement (ordre et équilibre). Ces concepts permettent de guider l’utilisateur, d’améliorer l’expérience et de rendre les interfaces plus professionnelles et accessibles, même sans expertise en design. L’article encourage à s’inspirer d’outils comme Coolors ou Fontpair et à pratiquer pour progresser.
L’article relate l’expérience de Zenika pour rendre son podcast Zenikast accessible grâce à l’IA, en se concentrant sur la transcription automatique. Initialement testé avec Whisper Transcribe (efficace mais nécessitant des heures de relecture), l’équipe s’est tournée vers Gemini 2.5 Pro via Vertex AI Studio de Google Cloud. Ce modèle, capable de traiter l’audio et de diariser les voix, a permis de générer des transcriptions rapides, fluides et presque exemptes d’erreurs, tout en supprimant les tics de langage pour une lecture plus agréable. L’outil offre aussi une option de grounding pour réduire les hallucinations en s’appuyant sur des sources fiables. Résultat : un gain de temps considérable (de 3-4h à 30 minutes par épisode) et une accessibilité améliorée, avec deux versions disponibles (brute et nettoyée). L’article évoque aussi les perspectives d’automatisation future via des agents IA, soulignant l’importance de l’accessibilité et l’efficacité des solutions basées sur l’IA pour les podcasts.
L’article explore comment les URLs, souvent sous-estimées, peuvent servir de conteneurs de state puissants et élégants dans les applications web modernes. L’auteur illustre ce concept avec l’exemple de PrismJS, où une URL encode toute la configuration (thème, langages, plugins) de manière partageable et récupérable, sans base de données ni stockage local. Il rappelle que les URLs offrent gratuitement des fonctionnalités clés : partage, marquage, historique, et liens profonds. L’article détaille comment structurer les URLs (segments de chemin, paramètres de requête, fragments) pour y stocker des états comme des filtres, des préférences ou des configurations, tout en évitant les pièges (données sensibles, états temporaires, surcharge). Des exemples concrets (GitHub, Google Maps, Figma) montrent leur utilité, et des bonnes pratiques (utilisation de URLSearchParams, gestion des défauts, debounce) sont proposées pour une implémentation efficace, notamment avec JavaScript ou React. Enfin, l’auteur souligne que les URLs bien conçues agissent comme des contrats clairs entre l’application et ses utilisateurs, améliorant l’expérience et la performance. Une lecture essentielle pour repenser la gestion d’état côté frontend
Gemini CLI est un outil open source lancé en juin 2025 par Google, permettant d’intégrer l’IA Gemini directement dans le terminal pour booster la productivité des développeurs. Après installation (via npx ou brew) et configuration d’un projet Google Cloud, il offre des fonctionnalités variées : requêtes contextuelles (avec accès à des données actualisées via GoogleSearch), gestion de commandes personnalisées (fichiers .toml), assistance au codage "agentic" (modification de fichiers, exécution de commandes système), et intégration avec des IDE comme VSCode ou IntelliJ. Il supporte aussi des extensions et des MCP (Model Context Protocol) pour interagir avec des APIs comme GitHub, GitLab ou Jira. L’outil permet de générer du contenu, traduire, auditer du code, ou créer des tickets, le tout depuis la ligne de commande. Idéal pour les tâches rapides, il se révèle pratique pour automatiser des actions courantes sans quitter le terminal. Un atout pour les développeurs aimant travailler en CLI.
Ce billet de blog de JetBrains présente 10 astuces pour optimiser les performances du code Python, rédigé par Dido Grigorov, ingénieur en deep learning. L’article souligne que, malgré sa simplicité et sa lisibilité, Python peut rencontrer des goulots d’étranglement en termes de performance, surtout lors du traitement de grands jeux de données ou d’applications temps réel.
Parmi les conseils clés :
- Privilégier les sets pour les tests d’appartenance (O(1) vs O(n) pour les listes).
- Éviter les copies inutiles de données, en modifiant les objets en place.
- Utiliser
__slots__pour réduire la consommation mémoire des classes. - Préférer les fonctions du module
mathaux opérateurs pour des calculs numériques plus rapides. - Pré-allouer la mémoire pour les listes ou tableaux de taille connue.
- Limiter l’usage des exceptions dans les boucles critiques.
- Exploiter
itertoolsetbisectpour des opérations combinatoires ou sur listes triées. - Éviter les appels répétés de fonctions dans les boucles en cachetant les résultats.
L’article illustre chaque astuce avec des exemples de code et des mesures de temps, montrant des gains de performance significatifs. Il encourage à adopter ces pratiques pour écrire du code Python à la fois performant et lisible, sans sacrifier la clarté. Une ressource utile pour les développeurs cherchant à optimiser leurs scripts Python.
Ce billet résume la 10ème édition de la conférence BDX I/O, marquée par des keynotes et des talks variés sur l’innovation technologique et ses enjeux sociétaux. L’auteur, après avoir co-organisé l’édition précédente, partage ses impressions en tant que participant, soulignant l’émotion de retrouver l’événement et la communauté tech bordelaise, notamment La Grappe Numérique.
Les temps forts incluent une réflexion sur l’avenir de la tech et l’IA par Ludovic Cinquin (WhereWeGo), qui évoque les défis énergétiques et sociétaux, ainsi que le framework Cynefin pour naviguer la complexité. Florian Toulemont aborde le hacking éthique avec des outils comme OWASP ZAP ou Exegol, tandis que Nicolas Boisseau démontre l’intégration de Kubernetes avec des applications Windows chez Peaksys, malgré des contraintes techniques. Vivien Ramahandry présente Crossplane pour gérer le drift dans l’IaC, et Julien Canon montre comment Kyverno renforce la conformité des clusters Kubernetes. Un live coding ludique sur la génération de labyrinthes et des rencontres enrichissantes complètent cette édition, avec une mention spéciale pour l’esprit communautaire et l’organisation de la conférence. Une édition riche en apprentissages et en partage !
Ce billet explique comment mettre en place des stratégies de sauvegarde de bases de données, en insistant sur l'importance cruciale des backups pour éviter la perte définitive de données en cas de panne, d'erreur humaine, de ransomware ou de corruption. L'article détaille trois niveaux de sauvegarde :
Niveau 1 : Sauvegardes automatiques basiques avec des scripts shell et pg_dump pour PostgreSQL, idéales pour les petites bases de données où une récupération quotidienne est acceptable. Il montre comment planifier ces sauvegardes via cron et gérer la rétention des fichiers.
Niveau 2 : Archivage WAL (Write-Ahead Logging) pour une récupération à un instant précis (PITR), en configurant PostgreSQL pour archiver les WAL et créer des sauvegardes de base. La procédure de récupération permet de restaurer la base à un moment spécifique, utile pour les bases critiques.
Niveau 3 : Sauvegardes continues avec pgBackRest, une solution robuste pour les environnements de production, permettant des sauvegardes complètes, différentielles et incrémentales, avec gestion automatisée des politiques de rétention.
L'article aborde aussi l'intégration avec des solutions cloud (S3, Hetzner Storage Box) via rclone, la surveillance des sauvegardes avec des alertes en cas d'échec, et l'importance de tester régulièrement les procédures de récupération. Enfin, il souligne les pièges courants (permissions, espace disque, WAL manquants) et propose des solutions pour les éviter. Une lecture essentielle pour sécuriser ses données et dormir sur ses deux oreilles.
Dans ce premier épisode de sa série "Mon lab", l'auteur partage son projet de refonte complète de son infrastructure personnelle, héritée de son ancien PC étudiant transformé en NAS sous Debian. L'objectif est de passer d'une architecture centralisée et vulnérable à une infrastructure automatisée, reproductible et évolutive, inspirée par les principes de l'"infrastructure as code".
Il explore plusieurs outils pour automatiser l'installation du socle de ses serveurs (MaaS, Foreman, Cobbler, Clonezilla, etc.), mais opte finalement pour une solution basée sur PXE et Debian Netboot, en utilisant un fichier Preseed pour automatiser l'installation. Après avoir rencontré des difficultés avec la complexité et le manque de documentation claire de Preseed, il se tourne vers la création d'une image Debian Netboot personnalisée. Cette image, basée sur un mini-système avec debootstrap et squashfs, permet de déployer automatiquement une Debian configurée selon ses besoins, avec un script d'installation intégré.
L'article détaille les étapes de création de cette image, le choix de BTRFS pour le système de fichiers, et l'utilisation d'un script bash pour partitionner et installer le système. L'auteur souligne l'importance de la reproductibilité, de l'évolutivité et de la suppression des configurations fantômes, tout en gardant la porte ouverte à l'ajout futur d'hyperviseurs comme Proxmox. Une lecture technique et inspirante pour quiconque souhaite automatiser son lab perso !
L’article explique comment externaliser le build d’une application Nuxt 4—devenu trop gourmand en ressources—vers GitHub Actions, puis déployer automatiquement sur Coolify. L’auteur, confronté à des serveurs Hetzner (4vCPU/8Go) saturés par les builds Nuxt 4, détaille la méthode : créer une nouvelle app Coolify en choisissant l’option « Docker Image », activer les APIs Coolify pour générer un token de déploiement, configurer les secrets GitHub (webhook et token Coolify), et ajouter un workflow GitHub Actions pour builder l’image Docker et déclencher le déploiement via un webhook. Une étape manuelle de login Docker sur le serveur Coolify est nécessaire pour autoriser l’accès au registry GitHub. Résultat : des builds plus légers, moins coûteux, et un déploiement fluide, le tout sans ajouter de serveur dédié.
Cet article donne un exemple de bouton HTML invalide, et explique comment fixer ses problèmes.
L’article de Fly.io encourage les développeurs à se lancer dans la création de leurs propres agents LLM, non seulement pour comprendre cette technologie de l’intérieur, mais aussi parce que c’est surprenant de simplicité. En quelques lignes de code, on peut créer un agent capable de dialoguer, d’utiliser des outils (comme un ping réseau), et même de simuler des personnalités multiples. L’auteur démontre qu’un agent n’est souvent qu’une boucle autour d’un appel API, avec une gestion de contexte (une liste de messages) et la possibilité d’ajouter des outils via des fonctions. Il souligne que les concepts comme le "Context Engineering" (gestion optimisée du contexte et des outils) sont des problèmes de programmation concrets, et non de la magie.
L’article critique aussi l’utilisation de solutions toutes faites comme MCP (Multi-Context Programming), encourageant plutôt à construire ses propres outils pour maîtriser l’architecture et la sécurité. Enfin, il insiste sur le fait que personne ne sait encore quelles sont les meilleures pratiques : c’est un terrain de jeu ouvert, où même les idées les plus folles peuvent être testées en 30 minutes. Une invitation à expérimenter pour se forger sa propre opinion, que l’on soit sceptique ou enthousiaste.
Andy Clarke explique comment animer des éléments SVG réutilisés via <symbol> et <use>, malgré la barrière du Shadow DOM qui empêche normalement le style et l'animation directe des éléments internes. Sa solution repose sur l'utilisation des CSS Custom Properties (variables CSS), qui peuvent traverser cette barrière. En définissant des animations et des styles via des propriétés personnalisées dans les éléments <symbol>, puis en les appliquant aux instances <use>, il devient possible de créer des animations dynamiques et personnalisées pour chaque instance, tout en gardant un code léger et maintenable. L'article illustre cette technique avec des exemples concrets : un système d'icônes multicolores, des visualisations de données interactives, et des animations ambiantes pour des personnages SVG, le tout sans dupliquer le code SVG. Une approche élégante pour contourner les limitations du Shadow DOM et exploiter pleinement le potentiel des SVGs réutilisables.
Bon à savoir... je copie colle sans vergogne :
Blanc = USB 1.0 / 12Mbps
Noir = USB 2.0 / 480Mbps
Jaune = USB 2.0/3.0 + toujours alimentés même sur une machine éteinte
Orange = USB 3.0 + toujours alimentés même sur une machine éteinte
Bleu = USB 3.0 Superspeed / 5Gbps
Turquoise = USB 3.1 / 10 Gbps
Rouge = USB 3.1 Gen 2 / 10-20 Gbps + toujours alimentés même sur une machine éteinte
Il y a une image dans le lien qui résume tout ça
Nubank, confrontée à une croissance exponentielle et à des coûts élevés liés à une solution externe de logging, a décidé de construire sa propre plateforme interne pour gérer plus d’1 trillion d’entrées de log par jour. L’ancienne architecture, dépendante d’un fournisseur tiers, souffrait de manque de visibilité, de coûts imprévisibles et de rigidité, rendant difficile la résolution des incidents et l’optimisation des ressources.
La nouvelle plateforme a été conçue en deux phases :
- Observability Stream : ingestion et traitement des logs, utilisant Fluent Bit pour la collecte, un service de buffer interne pour lisser les pics de trafic, et un service de filtrage/transformation extensible.
- Query and Storage Platform : stockage et requêtage, avec Trino comme moteur SQL distribué (optimisé pour le partitionnement), AWS S3 pour un stockage scalable et économique, et Parquet pour une compression efficace (95 %) et des requêtes rapides.
Résultats :
- 1 Po de données traitées/jour, 45 Po stockés (rétention 45 jours), 15 000 requêtes/jour.
- Réduction de 50 % des coûts par rapport à la solution précédente.
- Fiabilité, scalabilité et contrôle total sur l’infrastructure, permettant une meilleure observabilité et une réponse plus rapide aux incidents.
Cette approche, combinant outils open source et services internes, illustre comment une architecture découplée, modulaire et optimisée pour le cloud peut répondre aux défis de l’échelle tout en maîtrisant les coûts.
L’article encourage à oser commencer « mal »—c’est-à-dire à se lancer sans attendre la perfection — pour déclencher une véritable transformation personnelle. Il souligne que la quête de la perfection paralyse souvent nos rêves, tandis que l’audace de débuter, malgré les imperfections, construit le courage, favorise l’authenticité et accélère l’apprentissage. Des exemples comme Thomas Edison ou Malala Yousafzai illustrent comment les débuts chaotiques mènent à des réussites exceptionnelles. L’article propose aussi des conseils pratiques : diviser les grands objectifs en petites étapes, accepter l’échec comme une source de feedback, et s’entourer de soutien. En somme, commencer « ugly » est un acte de bravoure qui libère la créativité et ouvre la voie à une croissance continue. Une lecture inspirante pour ceux qui hésitent à franchir le pas par peur de l’imperfection.
L'auteur explique pourquoi les git notes sont une fonctionnalité sous-estimée de Git, permettant d’ajouter des métadonnées à des commits, des blobs ou des arbres sans modifier les objets eux-mêmes. Par exemple, on peut y stocker des informations de revue de code, des liens vers des discussions, ou des validations automatiques (comme des tests ou des approbations). Malgré leur potentiel — comme l’intégration de systèmes de revue distribués ou le suivi de données externes (tickets, temps passé, etc.) — leur utilisation reste marginale en raison d’une interface peu intuitive et d’un manque de support natif sur les plateformes comme GitHub. Pourtant, des projets comme git-appraise montrent qu’elles pourraient rendre les workflows plus indépendants des forges logicielles, en stockant localement des données habituellement centralisées. Une fonctionnalité puissante, mais trop souvent oubliée.
Aukfood présente une analyse comparative de quatre solutions open source de bastions SSH (Teleport, The Bastion d’OVH, Warpgate, JumpServer) dans le cadre d’un projet R&D visant à sécuriser les accès administratifs exposés sur Internet. L’étude évalue les critères clés : traçabilité des accès, gestion centralisée des utilisateurs, intégration LDAP/SSO/MFA, audit, haute disponibilité, et maintenabilité. Teleport se distingue par sa polyvalence et son adoption par des grands comptes, The Bastion (OVH) par sa conformité ANSSI et sa robustesse SSH pure, Warpgate par sa modernité (Rust) et sa légèreté, et JumpServer par son approche PAM complète et multi-protocole. Une matrice détaillée compare leurs forces (audit, RBAC, durcissement) et limites (complexité, documentation, scalabilité). L’article souligne l’importance d’une approche Zero Trust, du durcissement des infrastructures et de la centralisation des logs pour garantir la sécurité, tout en insistant sur l’adéquation du choix final aux besoins spécifiques (Cloud, souveraineté, mobilité). Une phase de tests virtualisés est prévue avant déploiement.
Il s'agit d'un article pratique sur l’art de nommer les éléments en PHP. L’auteure y aborde l’importance des noms clairs dans le code, soulignant qu’ils réduisent la charge cognitive, améliorent la maintenabilité et facilitent l’onboarding des nouveaux développeurs. L’article propose des principes concrets, des conventions compatibles avec les PSR, et des exemples pour éviter les pièges courants liés à la liberté syntaxique de PHP (comme les tableaux dynamiques ou les objets flexibles). L’objectif ? Transformer le choix des noms en un processus réfléchi plutôt qu’en devinette, pour un code plus lisible et une architecture plus robuste.
Article réservé aux membres Medium.
Linus Torvalds illustre ici ce qu’il considère comme du « garbage code » : des abstractions inutiles qui alourdissent la compréhension du code, comme une fonction make_u32_from_two_u16(a,b) qui masque la simplicité et la clarté de l’opération (a << 16) + b. Son argument central : le bon code optimise la charge cognitive. Chaque abstraction ou fonction helper impose un coût en termes de contexte (pour les humains comme pour les LLMs), car elle nécessite de « sauter » mentalement vers une autre partie du code, ce qui consomme de l’énergie et augmente le risque d’erreurs. Parfois, la duplication ou l’écriture explicite est préférable à une abstraction prématurée, surtout si celle-ci ne clarifie pas le code ou n’est pas réutilisée massivement. Torvalds rappelle aussi que le coût de la duplication a diminué avec les outils modernes de refactoring. Enfin, l’article souligne l’importance de la bienveillance dans les revues de code, même si le fond du message de Linus reste pertinent : privilégier la lisibilité et la localité du code.
Warpgate est un bastion open source écrit en Rust, conçu pour implémenter une approche Zero Trust en sécurisant l’accès à vos infrastructures (SSH, HTTP/HTTPS, MySQL, PostgreSQL). Contrairement à des solutions comme Teleport ou Boundary, il ne nécessite aucun agent sur les machines cibles et s’installe en quelques minutes. Ses atouts : traçabilité totale des sessions, intégration avec OpenID Connect, et simplicité de déploiement (y compris sur Kubernetes). Cependant, il présente des limites : pas de haute disponibilité native (sessions perdues en cas de crash), protocoles limités (pas de RDP/VNC/Kubernetes), et une API non documentée. Malgré ces compromis, Warpgate séduit par sa transparence, sa robustesse, et son modèle open source sans lock-in. Idéal pour les équipes cherchant une solution légère et auditable, à condition d’accepter ses contraintes.
Ce billet détaille l’expérience de passage à FrankenPHP en production, comparant l’ancienne stack Nginx/PHP-FPM à une technologie dépassée comme le Minitel. L’auteur explique comment il a déployé FrankenPHP sur un VPS à l’aide d’un Makefile optimisé, en abordant la création d’un Dockerfile de production, l’intégration CI/CD, et une astuce de multiplexing SSH pour éviter les blocages par fail2ban. Une lecture utile pour ceux qui veulent moderniser leur infrastructure PHP avec simplicité et efficacité.
Le billet explique comment FrankenPHP rend obsolètes les configurations traditionnelles utilisant Nginx et PHP-FPM pour les applications PHP. L'auteur partage son retour d'expérience sur le déploiement d'un projet Symfony avec FrankenPHP sur un VPS, mettant en avant sa simplicité et ses performances, même en production. L'article souligne que FrankenPHP offre une alternative moderne, plus légère et efficace, pour les environnements Docker, tout en évitant les problèmes classiques comme les timeouts SSH. Une solution idéale pour ceux qui cherchent à optimiser leur infrastructure PHP.
Dans ce billet, l’auteur partage une réflexion nuancée sur la valeur des certifications dans le domaine de l’IT, en s’appuyant sur son expérience personnelle et ses observations. Il reconnaît que les certifications peuvent être utiles pour se démarquer, surtout pour les jeunes diplômés ou les profils en reconversion, dans un marché du travail tendu. Cependant, il souligne que leur valeur varie énormément : certaines sont purement formelles, voire trompeuses (comme des QCM où les réponses sont connues à l’avance ou des certifications d’outils propriétaires peu exigeantes), tandis que d’autres, comme celles du CNCF (CKA, CKAD, CKS), demandent un réel effort et une mise en pratique, même si elles restent éloignées des réalités quotidiennes du métier. Pour les profils expérimentés, l’intérêt est plus limité, mais elles peuvent permettre de découvrir des subtilités techniques ou de renforcer la confiance en soi. Enfin, il questionne la pertinence des exigences de certifications par les entreprises, suggérant que celles-ci cherchent souvent à se couvrir plutôt qu’à évaluer des compétences réelles. En résumé, les certifs ne sont ni totalement inutiles ni une garantie de compétence, et leur utilité dépend surtout du contexte et du niveau d’expérience.
Hyprnote est une solution 100% locale pour transcrire et résumer vos réunions (Zoom, Teams, Meet) sans dépendre du cloud. Elle utilise un modèle STT (comme Whisper) et un micro-LLM (intégré ou externe) pour générer des comptes-rendus automatiques, le tout en respectant votre vie privée. L’interface simple organise réunions, transcripts et synthèses, avec une intégration native à Obsidian pour les utilisateurs de PKM. Open source et en bêta sur macOS (Windows/mobile à venir), Hyprnote se distingue des outils comme Otter.ai en gardant vos données sur votre machine. Un projet prometteur pour ceux qui veulent efficacité et confidentialité.
Ce tutoriel explique comment créer une clé USB bootable pour Linux Mint (ou toute autre distribution) en utilisant Ventoy, un outil pratique qui permet de démarrer depuis plusieurs fichiers ISO sur une seule clé. La procédure est simple : téléchargez Ventoy, installez-le sur la clé USB (attention, cela efface toutes les données), puis copiez-y le fichier ISO de Linux Mint (version Cinnamon recommandée). Ventoy rend la clé multiboot, idéale pour tester ou installer différents systèmes. Prochaine étape : l’installation de Linux Mint depuis cette clé ! #LinuxMint #Ventoy #USB
Ce billet explique une limitation rencontrée avec la nouvelle fonctionnalité de Cilium 1.18, qui permet d’ajouter un champ log aux CiliumNetworkPolicies pour marquer les flux avec des étiquettes personnalisées et ainsi filtrer le trafic bloqué attendu dans les tableaux de bord de monitoring.
L’équipe souhaitait bloquer explicitement le trafic de télémétrie d’une application tierce vers des domaines externes, sans déclencher d’alertes inutiles dans Hubble. La solution idéale aurait été d’utiliser egressDeny combiné à toFQDNs et un champ log personnalisé pour exclure ces flux du monitoring. Cependant, ils ont découvert que Cilium ne supporte pas toFQDNs dans les règles egressDeny, ce qui rend impossible le blocage ciblé par nom de domaine dans ce contexte. De plus, un bug empêche actuellement l’affichage du champ policy_log pour les flux bloqués ou audités, limitant encore l’utilité de cette fonctionnalité.
Les solutions de contournement proposées incluent le blocage au niveau DNS, le blocage par IP (avec la maintenance que cela implique), ou la désactivation directe de la télémétrie dans l’application. L’auteur espère que ces limitations seront corrigées dans de futures versions de Cilium.
L'auteur explique la procédure de désactivation complète des fonctions IA dans Firefox. Il explique aussi pourquoi il l'a fait : pour une expérience plus légère et conforme à l'esprit original de Firefox...
Eugene Yan partage ses conseils pour les nouveaux Principal Engineers (ou ICs - contributeurs individuels - techniques principaux), inspirés de ses observations et de mentors, notamment dans un contexte Amazon. Il souligne que le rôle varie selon les profils : certains excellent dans la technique pure, d’autres dans l’influence transversale ou l’alignement d’équipes. À ce niveau, le codage devient secondaire ; l’impact passe par la vision technique, le mentorat, la connexion des équipes et la résolution de problèmes ambigus que personne d’autre ne traite. Le Principal Engineer doit aussi savoir convaincre, déléguer, et créer de l’espace pour les autres, tout en évitant de devenir un goulot d’étranglement. L’article insiste sur l’importance de rester "hands-on" ponctuellement, de clarifier le "pourquoi" derrière les décisions, et de se préserver des réunions inutiles pour garder du temps de réflexion stratégique. Enfin, il rappelle que ce poste exige une autonomie totale dans le choix des problèmes à résoudre, avec une responsabilité accrue envers l’organisation et soi-même. Une lecture utile pour comprendre les attentes et défis de ce rôle clé en ingénierie.
En 2025, jQuery reste largement utilisé, surtout pour la maintenance de projets legacy, où le coût et les risques d’une migration vers des frameworks modernes ne justifient pas les bénéfices. L’article souligne aussi son utilité pour le prototypage rapide, la manipulation DOM complexe dans des environnements multi-navigateurs, ou encore les animations et requêtes AJAX simples. Cependant, pour les applications modernes, et ciblant uniquement les navigateurs récents, jQuery n’est plus pertinent : les API natives (comme fetch, querySelector) et les frameworks (React, Vue) offrent des alternatives plus légères et mieux adaptées. L’auteur conclut que jQuery reste un outil valable pour certains cas d’usage, mais qu’il faut savoir choisir la bonne technologie selon le contexte.
L’article explore l’utilisation de la fonction trigonométrique tan() en CSS, souvent perçue comme la fonction la plus détestée selon le State of CSS 2025. L’auteur démontre son utilité, notamment pour manipuler des formes géométriques comme les triangles et les polygones. Après un rappel mathématique (tan = sin/cos = opposé/adjacent), il montre comment tan() permet de calculer dynamiquement la hauteur de triangles pour créer des polygones réguliers à partir de listes HTML, sans recourir à des valeurs fixes. L’exemple concret illustre la création d’un menu circulaire ou d’une galerie d’images polygonale, en combinant tan() avec clip-path et des rotations CSS. L’article souligne aussi les limites de tan() (valeurs indéfinies à 90° et 270°) et mentionne des cas d’usage inspirants comme des layouts diagonaux ou des puzzles tangram. Une lecture utile pour découvrir des applications pratiques et créatives des fonctions trigonométriques en design web.
dependency-cruiser est un outil open source qui permet de valider et visualiser les dépendances dans les projets JavaScript, TypeScript, CoffeeScript ou LiveScript. Il analyse les dépendances selon des règles personnalisables, détecte les violations (comme les dépendances circulaires ou manquantes), et génère des rapports sous forme de texte, graphiques (dot, mermaid, SVG), HTML ou CSV. Idéal pour intégrer dans un pipeline CI/CD, il s’installe via npm/yarn/pnpm et se configure facilement avec npx depcruise --init. Il offre aussi des visualisations claires pour mieux comprendre l’architecture de son code.
Ce billet de CSS-Tricks explore comment exploiter la relation parent-enfant en CSS pour créer des animations efficaces et simplifiées. L’idée centrale est d’animer le conteneur parent plutôt que chaque enfant individuellement, ce qui réduit la complexité du code et améliore les performances.
L’exemple principal utilise un conteneur <main> contenant quatre cercles positionnés absolument. En appliquant une rotation et une réduction de largeur au parent, les cercles se déplacent et s’animent automatiquement, car leur position dépend de celle du parent. L’article montre aussi comment combiner des transformations (comme skew, rotate, scale) sur le parent et les enfants pour obtenir des effets visuels variés, comme des carrés qui s’échangent ou se séparent.
L’approche est particulièrement utile pour des animations simples et synchronisées, où les transformations du parent influencent directement le comportement des enfants. L’article propose également des variantes avec des éléments <details> pour déclencher les animations via des interactions utilisateur. Une astuce pratique pour des animations fluides et faciles à maintenir !
Cet article concerne l’importance des modèles de domaine typés en PHP, renforcés par des outils comme PHPStan et Psalm. L’auteur explique que la sécurité des types permet de préserver l’intégrité architecturale en rendant impossibles les états invalides (ex. : un montant négatif pour une classe Money). Les outils d’analyse statique détectent les violations de contrats, les fuites de nullabilité ou les dépendances architecturales non désirées, là où les tests unitaires peuvent échouer. L’article souligne que modéliser chaque concept métier (comme EmailAddress ou UserId) en tant que type dédié, et utiliser des règles personnalisées dans PHPStan/Psalm, transforme le code en un système fiable et auto-documenté. L’objectif : aligner l’intention des développeurs avec le comportement réel du code, réduisant ainsi la dette technique et les erreurs silencieuses. Une approche progressive est recommandée pour intégrer ces pratiques dans les projets existants.
Cet article aborde la cartographie des Value Objects avec Doctrine ORM, en utilisant les attributs PHP, les embeddables et les drivers PHP pour améliorer la conception des entités.
L’article souligne que la documentation officielle de Doctrine montre souvent des exemples d’entités anémiques (avec des getters/setters simples), mais propose une approche plus robuste en utilisant des Value Objects pour encapsuler la logique métier et garantir la cohérence des données. Il explique comment mapper ces objets en base de données avec Doctrine, notamment via :
- Les attributs PHP pour définir les métadonnées de mapping.
- Les embeddables pour intégrer des Value Objects directement dans les entités.
- Les drivers PHP pour une configuration plus propre et moderne.
L’objectif est de passer d’un modèle anémique à un modèle riche, où la validation et la logique métier sont encapsulées dans les Value Objects, plutôt que dispersées dans les services ou les setters. Une lecture utile pour ceux qui veulent optimiser leur architecture avec Doctrine et PHP 8+.
⚠️ Accès réservé aux membres Medium : Lien vers l’article (nécessite un abonnement ou un accès via le lien partagé).
Un bundle Symfony pour utiliser les Google Fonts sans enfreindre le RGPD
Cet article explique comment Symfony utilise la classe ReflectionClass de PHP pour offrir sa flexibilité et son automatisation. Voici les points clés :
- Injection de dépendances : Symfony inspecte les constructeurs des classes via
ReflectionClasspour identifier et injecter automatiquement les dépendances typées, sans configuration manuelle. - Routing et contrôleurs : Grâce à la réflexion, Symfony lit les attributs de route (comme
#[Route]) et injecte dynamiquement les arguments des méthodes de contrôleur (ex. : récupération d’une entité depuis la base via leParamConverter). - Sérialisation : Le composant Serializer utilise la réflexion pour découvrir les propriétés et leurs types, permettant une conversion automatique entre objets et formats comme JSON/XML.
En résumé, la Reflection API est au cœur de la magie de Symfony, rendant possible l’injection de dépendances, le routage intelligent et la manipulation des données sans configuration statique.
Cet article présente une approche pragmatique pour construire une application SaaS multi-tenant avec Symfony, en utilisant une base de données partagée et une seule codebase pour plusieurs clients (tenants). L’article s’appuie sur l’expérience de l’auteur, qui a développé une plateforme pour des marques de retail, chacune ayant ses propres magasins, utilisateurs et règles d’accès.
Points clés :
- Résolution du tenant : Identification du client actif via la session (back-office) ou le sous-domaine (front-office), stockée dans un service
TenantContextaccessible partout dans l’application. - Isolation des données : Toutes les entités liées à un client incluent un
brand_id, et les requêtes sont automatiquement filtrées par ce contexte. - Contrôle d’accès (ACL) : Gestion des fonctionnalités et permissions par client via des listes de contrôle d’accès (ACL) et des voters Symfony, permettant d’activer/désactiver des fonctionnalités par marque.
- Architecture unifiée : Le même
TenantContextest utilisé pour le back-office (session) et le front-office (domaine), garantissant une cohérence et une sécurité optimale.
L’article insiste sur la simplicité, la maintenabilité et l’évolutivité de cette solution, idéale pour les SaaS nécessitant une isolation des données sans complexité infrastructurelle.
Cet article explique comment construire un serveur Model Context Protocol (MCP) pour une application Symfony, permettant à des assistants IA comme Claude d’interagir directement avec vos données et fonctionnalités via des requêtes en langage naturel.
Le tutoriel propose un exemple concret : une application de gestion de clients avec Symfony, où l’on ajoute un serveur MCP pour permettre à l’IA de rechercher des clients, consulter leurs commandes, analyser des statistiques, etc. Il détaille les étapes clés : installation du SDK MCP, création de "tools" (outils) en PHP avec des attributs, configuration d’un serveur MCP, et intégration avec Claude Desktop. Le projet utilise une base SQLite avec des entités Customer, Order, OrderItem et Product, et fournit des exemples de requêtes possibles (recherche par nom, ville, top dépensiers, etc.).
Le code source est disponible sur GitHub, et le tutoriel inclut des captures d’écran de l’interface. Une bonne ressource pour les développeurs PHP/Symfony souhaitant connecter leurs applications à des assistants IA via MCP.
L’article passe en revue les principaux formats audio (sans compression comme WAV/AIFF, sans perte comme FLAC/ALAC, et avec perte comme MP3, Vorbis, Opus, AAC) et leurs usages : archivage, stockage quotidien ou streaming. Il explique l’importance du débit binaire (CBR/VBR) et de la compatibilité des formats avec les appareils. Pour l’archivage, le FLAC est recommandé pour sa qualité et son ouverture, tandis que pour un cloud musical, l’Opus (128 kbps VBR) est privilégié pour son équilibre qualité/taille et sa rapidité d’encodage. Un benchmark illustre les différences de taille entre formats, et un glossaire clarifie les termes techniques. L’auteur partage son choix : FLAC pour l’archivage, Opus pour le cloud.
L’article explique comment concevoir des tableaux clairs et efficaces, en s’appuyant sur les travaux d’Edward Tufte et de Charlie Munger. Il souligne que le choix entre tableau et graphique dépend de l’usage : les tableaux conviennent mieux aux petits jeux de données et aux comparaisons précises, tandis que les graphiques mettent en valeur les tendances et le mouvement des données. Pour rendre un tableau lisible, il recommande de limiter les bordures et les couleurs, d’aligner correctement le texte et les nombres (à droite pour ces derniers), et d’éviter les répétitions inutiles. L’article propose aussi des bonnes pratiques en HTML/CSS pour structurer et styliser les tableaux, comme l’utilisation de <thead>, <tbody>, et <tfoot>, l’alignement vertical sur la baseline, et l’adaptation responsive pour mobile. Enfin, il insiste sur l’importance de maximiser le ratio "data-ink" (encre utile) et de supprimer tout élément redondant ou superflu pour faciliter la compréhension. Une référence utile pour quiconque souhaite améliorer la présentation de données.
Ploum analyse l’éclatement imminent de la "bulle IA", soulignant que l’industrie repose sur des promesses irréalistes (comme un abonnement mensuel de 100€ par habitant pour ChatGPT) et un marketing agressif, alors que l’adoption réelle par le grand public reste faible. Il compare cette situation à celle des smartphones, dont le marché est désormais saturé et en déclin, malgré des années de croissance forcée. Selon lui, l’IA, contrairement aux smartphones, ne séduit pas les utilisateurs lambda, qui la perçoivent comme une complication plutôt qu’une simplification. L’auteur espère que l’éclatement de cette bulle pourrait libérer une offre d’électricité abondante et bon marché (notamment renouvelable), accélérant ainsi la fin de la dépendance au pétrole. Il conclut en évoquant les risques politiques et économiques de cette transition, tout en imaginant un futur plus sobre et low-tech, inspiré par des utopies comme "Vélorutopia".
L’article présente la propriété CSS field-sizing: content, qui permet de dimensionner dynamiquement les champs de formulaire (comme les <select> ou <input>) en fonction de leur contenu, sans recourir à JavaScript. Actuellement supportée uniquement par Chrome, cette propriété offre une solution élégante pour adapter la largeur des champs à leur contenu, tout en respectant les placeholders comme largeur minimale. L’auteur illustre son utilité à travers plusieurs cas d’usage : interfaces conversationnelles (formulaires plus naturels), pagination (menus déroulants adaptés), saisie d’URL (champs de sous-domaines ou identifiants), ou encore sections héroïques avec filtres dynamiques. L’article souligne aussi l’importance de définir des largeurs minimales et maximales pour éviter les problèmes d’affichage, et encourage son adoption comme amélioration progressive, compatible avec les navigateurs ne la supportant pas encore. Une propriété prometteuse pour des designs plus fluides et intuitifs.
Dans cette note intitulée "Humanité, IA et le règne animal", l’autrice·eur partage une réflexion personnelle sur l’individualisme croissant dans la société, déclenchée par une discussion et un podcast sur l’IA en tant que psychologue. Iel interroge la place de la gentillesse et de l’entraide, souvent perçues comme des faiblesses dans un monde où "le fort vit, le faible non". À travers des anecdotes (aider un·e inconnu·e, un malaise dans le métro parisien) et des exemples d’associations humanitaires, iel rappelle que l’humanité ne se réduit pas à la loi du plus fort, contrairement au règne animal.
L’autrice·eur établit un lien entre cette logique individualiste et l’attrait pour les IA génératives, qui offrent une écoute sans jugement dans un monde où les réseaux sociaux et les médias amplifient la solitude et le sentiment d’insuffisance. Iel met en garde contre l’illusion d’une IA "humaine" et souligne l’importance de reconnaître et de traiter les problèmes de santé mentale, tout en valorisant la dissidence et la diversité comme moteurs d’évolution sociale. Enfin, iel encourage à consulter des psychologues plutôt que de se tourner vers des solutions technologiques, et rend hommage au travail des associations qui agissent dans l’ombre pour aider les autres.
Merci pour cet article qui a mis des mots sur mon ressenti - visiblement je ne suis pas le seul
Cet article remet les pendules à l'heure : Postman et consorts ne servent à rien... puisque cURL fait tout ce qu'ils font en plus rapide et léger. L'article rappelle les options à passer pour les principaux cas d'usage : requêtes POST, ajout d'entêtes, upload de fichiers, cookies, authentification basique / OAuth / etc.
Pour le partage, tout peut s'écrire dans des scripts versionnables.
L’article raconte une expérience douloureuse : l’utilisation du tag latest pour une image Docker a causé une panne en production après qu’une mise à jour silencieuse de l’image de base (PostgreSQL) ait changé la version de collation du système d’exploitation, rendant la base de données incompatible. L’auteur explique que latest n’est pas synonyme de « stable » ou « sûr », mais simplement de « dernière version disponible », ce qui peut varier à tout moment. Il détaille trois raisons d’éviter latest : stabilité (comportement cohérent), reproductibilité (diagnostic et audit facilités), et contrôle des mises à jour (éviter les surprises). La solution ? Toujours spécifier un tag explicite (ex: postgres:15.3-alpine) dans Docker, Docker Compose ou Kubernetes. Un rappel utile : ne jamais laisser le choix de la version à quelqu’un d’autre, surtout en production.
Les fichiers .http offrent une alternative légère et efficace aux outils comme Postman pour tester et documenter des APIs directement depuis un éditeur de code. Ces fichiers texte, basés sur la syntaxe HTTP standard, permettent de décrire, versionner et exécuter des requêtes HTTP sans dépendre d’un outil externe ou d’un compte cloud. Intégrés nativement dans des IDE comme VS Code (via l’extension REST Client) ou JetBrains, ils facilitent le versionnement avec Git, la collaboration via des pull requests, et servent de documentation vivante pour les APIs. Leur simplicité et leur indépendance technologique en font un choix idéal pour les équipes souhaitant éviter les outils lourds et centraliser leurs tests d’API dans leur repository. L’article propose des exemples concrets avec les APIs publiques françaises (comme l’API Geo et Adresse), montre comment gérer les variables et environnements, et explique comment automatiser ces tests dans des pipelines CI/CD avec des outils comme httpyac. Une solution pragmatique pour les développeurs cherchant à simplifier leur workflow tout en gardant une documentation et des tests à jour.