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é.