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.
Symfony propose AssetMapper, une solution radicalement simple pour gérer les assets (JS, CSS, images) sans recourir à Node.js ou à des outils de build complexes comme Webpack. Basé sur la technologie native des navigateurs importmap, AssetMapper permet d’utiliser directement les imports ES6 dans le navigateur, sans étape de compilation. Il génère automatiquement une balise <script type="importmap"> qui mappe vos dépendances et vos fichiers locaux, et gère le versionnage des assets pour un cache busting efficace. L’installation se fait via Composer, et une simple commande (bin/console importmap:require) suffit pour ajouter une bibliothèque JS, qui est ensuite téléchargée depuis un CDN et stockée localement. En production, une commande (asset-map:compile) copie et versionne les fichiers dans public/assets/, avec option de pré-compression Gzip. Pour la minification, le bundle sensiolabs/minify-bundle s’intègre parfaitement. Résultat : zéro build, zéro npm, et une gestion des assets simplifiée et performante, idéale pour les applications Symfony classiques ou utilisant Hotwire/Stimulus. Une approche minimaliste et efficace pour ceux qui veulent éviter la complexité du frontend moderne.
Cet article explore le concept des expressions en JavaScript, extrait du cours JavaScript for Everyone. Une expression est un bout de code qui, une fois évalué, produit une valeur (exemple : 2 + 2 donne 4). L’article détaille plusieurs types d’expressions : les expressions primaires (comme les littéraux numériques ou les variables), les opérateurs de regroupement (parenthèses pour contrôler l’ordre d’évaluation), et les expressions avec effets de bord (comme l’assignation ou l’appel de fonction, qui produisent une valeur tout en effectuant une action). Il aborde aussi des cas particuliers comme l’opérateur virgule, qui évalue plusieurs expressions mais ne retourne que la dernière, et souligne que la plupart des déclarations (sauf var) ne sont ni des expressions ni des instructions. L’objectif est de clarifier comment JavaScript interprète et manipule les valeurs, offrant une base solide pour comprendre la logique interne du langage.
L’article présente deux outils de reconnaissance vocale libres, gratuits et respectueux de la vie privée : Murmure (Windows/Linux) et Handy (Windows/Linux/macOS). Fonctionnant entièrement hors ligne, ils évitent toute télémétrie ou connexion Internet, garantissant que les données vocales restent locales. Murmure utilise le modèle NVIDIA Parakeet, supportant 25 langues européennes, et est optimisé pour fonctionner sur des configurations modestes (2 Go de RAM, 1 Go d’espace disque). Handy, quant à lui, propose plusieurs modèles d’IA (Whisper et Parakeet) et s’avère très réactif, même sur du matériel ancien. Les deux logiciels sont faciles à configurer, permettent de dicter du texte dans n’importe quel champ (traitement de texte, navigateur, etc.) et offrent la possibilité d’enrichir leur dictionnaire avec du vocabulaire spécialisé. L’auteur souligne leur simplicité d’utilisation et la qualité des transcriptions, malgré quelques corrections mineures nécessaires. Une solution idéale pour ceux qui cherchent une alternative privée aux outils en ligne.
Ce comic explique de façon simple et visuelle le fonctionnement des appels système (system calls) sous Linux : les programmes (en Python, Java, C, etc.) ne savent pas directement interagir avec le matériel (comme lire un fichier, créer un processus ou modifier des permissions). Ils demandent au noyau Linux de le faire pour eux via des appels système, chacun identifié par un numéro. L’outil strace permet d’observer ces appels en temps réel, par exemple avec la commande strace ls /tmp. Une ressource ludique et accessible pour comprendre un concept technique fondamental ! 🖥️✨
Ploum partage une réflexion inspirée par L’odyssée du pingouin cannibale de Yann Kerninon et Éloge du bug de Marcello Vitali-Rosati : nos outils nous transforment. En citant la phrase "Ce n’est pas le penseur qui fait la pensée, mais la pensée qui fait le penseur", il souligne comment les plateformes façonnent nos comportements et nos idées, souvent en masquant leur matérialité et en nous rendant dépendants. À travers son expérience personnelle (passage de WordPress à un blog statique, découverte de Gemini et du minimalisme numérique), il illustre comment l’adoption d’un outil influence notre manière de penser, d’écrire et même notre idéologie. Il invite à se demander non pas "Qu’est-ce que cet outil peut faire pour moi ?", mais "Qu’est-ce que cet outil va faire de moi ?" — une question cruciale face aux outils "faciles" ou dominants, dont les effets peuvent être insidieux (ex. : réseaux sociaux, PowerPoint, IA). Une invitation à choisir consciemment nos outils pour préserver notre autonomie et notre créativité.
L’article met en lumière l’impact des attributs PHP 8 sur l’écosystème Symfony, remplaçant progressivement les annotations et le YAML pour une configuration plus moderne et unifiée (routes, sécurité, Doctrine, DTOs). Il souligne aussi des innovations comme les Property Hooks de PHP 8.4 avec Doctrine 3.4, qui simplifient la gestion des getters/setters, ainsi que l’introduction des Live Components et Twig Components, permettant une approche plus réactive et typée du front-end, sans JavaScript. Une évolution majeure pour les développeurs Symfony, vers plus de simplicité et de puissance.
L’article explore comment adapter des designs éditoriaux et distinctifs aux petits écrans, en évitant la monotonie des colonnes infinies. L’auteur, Andy Clarke, démontre que le design pour mobile ne doit pas se limiter à empiler du contenu verticalement, mais peut s’inspirer des magazines en créant des « moments » visuels uniques : utilisation du défilement horizontal pour regrouper des éléments (comme des pochettes d’albums), placement d’éléments hors-cadre pour conserver la personnalité du design, ou encore création de mini-maquettes défilables qui rappellent les doubles pages imprimées. Il propose des techniques CSS modernes comme les container queries, le shape-outside, et les media queries d’orientation pour recomposer dynamiquement les layouts selon l’espace disponible et l’orientation de l’écran. L’objectif est de préserver l’impact visuel et la narration, même sur mobile, en jouant sur la variété, le rythme et l’interaction.
Eric Meyer propose une méthode pour transformer des notes parenthétiques en "asidenotes" (notes latérales) en utilisant une combinaison de JavaScript et de CSS moderne. Il introduit un custom element <aside-note> qui encapsule le texte de la note, puis utilise JavaScript pour supprimer les parenthèses et ajouter un marqueur en exposant. Le positionnement des notes est géré via CSS et la propriété anchor-name, permettant d'afficher les notes en marge du texte principal. La solution est conçue pour être robuste : elle ne s'applique que si le navigateur supporte le positionnement par ancrage et si la largeur de l'écran est suffisante, évitant ainsi les problèmes d'affichage sur mobile. Meyer envisage d'adopter cette technique pour son blog, car elle offre une meilleure expérience utilisateur et un code plus propre que sa précédente approche.
L'article présente un outil qui vérifie la sécurité d'un paquet npm avant de l'installer : NPQ. Cet outil fonctionne avec les autres gestionnaires de paquet (via une variable d'environnement)
Eric Meyer explore dans ce billet une méthode pour transformer des parenthèses en notes latérales (asidenotes) à l’aide uniquement de HTML et CSS, en s’appuyant sur la fonctionnalité d’ancrage CSS (anchor()). Il explique son approche : marquer le texte parenthétique avec une classe, ajouter un élément pour le marqueur, puis utiliser des styles conditionnels pour repositionner le texte en note latérale dans les navigateurs compatibles. Malgré un résultat visuel satisfaisant, il souligne les limites de cette méthode — notamment la nécessité d’ajouter du balisage superflu et l’impossibilité de supprimer proprement les parenthèses ou de gérer automatiquement la ponctuation finale sans JavaScript. Il conclut que cette solution, bien qu’intéressante, n’est pas viable pour une utilisation réelle, et évoque une approche alternative utilisant des éléments personnalisés et le Light DOM pour une prochaine publication.
Josh W. Comeau explique comment la fonction CSS linear() permet de créer des animations avancées (ressorts, rebonds, etc.) directement en CSS, sans dépendre de bibliothèques JavaScript. Contrairement aux courbes de Bézier traditionnelles, linear() utilise une série de points pour dessiner une courbe d'animation personnalisée, offrant ainsi plus de flexibilité. L'article présente des outils comme Linear() Easing Generator et EasingWizard pour générer automatiquement ces valeurs, optimisant ainsi la création d'animations fluides et naturelles. Cependant, cette approche a des limites : elle reste basée sur le temps (contrairement aux animations physiques réelles), peut mal gérer les interruptions, et nécessite beaucoup de points pour un rendu réaliste. Malgré cela, les tests montrent un impact minimal sur les performances. L'auteur recommande d'utiliser des variables CSS pour stocker les fonctions linear() et de prévoir des alternatives pour les navigateurs non compatibles. Une méthode efficace pour enrichir les animations CSS tout en respectant les préférences utilisateur (comme prefers-reduced-motion).
Ross Wintle explore l’idée que le logiciel peut être « terminé », en proposant une définition simple : un logiciel est fini lorsqu’il est fonctionnellement complet et que rien ne doit y être ajouté, même si des évolutions restent possibles. Il souligne que des changements externes (matériel, plateformes, API, outils de build) peuvent rendre un logiciel obsolète, mais que cela ne dépend pas toujours des développeurs. Plutôt que de viser absolument la « finition », il invite à réfléchir aux leçons que cette approche peut apporter, comme la valeur de la stabilité et de la maintenance contrôlée. Il illustre son propos avec l’exemple du Gameboy, dont le logiciel embarqué fonctionne toujours des décennies plus tard, et rappelle que beaucoup d’entreprises reposent sur des mises à jour continues plutôt que sur des produits figés. Une réflexion stimulante sur la durabilité et les limites du contrôle en développement logiciel.
Ce tutoriel détaille la mise à niveau de Proxmox VE 8 vers 9, une version basée sur Debian 13 "Trixie" et un noyau Linux 6.14, apportant des améliorations majeures : gestion avancée des snapshots, affinité HA, interface web réécrite en Rust/Yew, et mises à jour de QEMU, LXC, ZFS et Ceph. La procédure nécessite de préparer soigneusement le système : sauvegarder VMs/containers et configuration, vérifier l’espace disque (10 Go libres), et mettre à jour Proxmox VE 8.4. L’outil pve8to9 permet de détecter les problèmes (ex : présence de systemd-boot, microcode Intel manquant, GRUB non configuré). Après correction des erreurs, la migration s’effectue en remplaçant "bookworm" par "trixie" dans les sources APT, puis en lançant apt full-upgrade. Un redémarrage finalise l’installation. Points clés : arrêter les VMs avant la mise à jour, corriger les warnings, et consulter la documentation officielle en cas de problème.
Stephanie Booth propose une réflexion sur la « nétiquette » de l’IA générative, soulignant deux usages problématiques fréquents : laisser l’IA parler à notre place sans transparence (comme utiliser ChatGPT pour répondre à un message en faisant croire que c’est soi, ou partager des créations d’IA sans les attribuer) et inonder les conversations de copier-coller d’outputs IA bruts, ce qui charge les interlocuteurs d’un travail de tri et de vérification non sollicité. Elle insiste sur l’importance de la transparence (préciser quand un contenu est généré par IA), de la collaboration réelle avec ces outils (relire, adapter, s’approprier les productions), et du respect de l’interlocuteur (éviter de rompre le contrat social implicite selon lequel on s’adresse à un humain). L’enjeu est à la fois relationnel et cognitif : préserver l’authenticité des échanges et ne pas contribuer à brouiller la frontière entre le vrai et le faux, surtout dans un contexte où les images et textes générés peuvent déformer notre perception du monde. En résumé : utiliser l’IA comme assistant, mais assumer la responsabilité de ce qu’on partage.