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