HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

Les meilleurs longs formats de Hacker News, relus plus calmement.

5780 articles Page 22/578 Sans filtre

06:04

Making Graphics Like it's 1993

L'auteur développe en hobby un jeu de tir à la première personne conçu pour reproduire l'esthétique technique du début des années 90 en imposant des contraintes comme 320x240, 256 couleurs, rendu et sons faits à la main et logique à point fixe. La palette de 768 octets et une table de correspondance précalculée permettent d'obtenir des niveaux d'éclairage perceptuels en Oklab et d'appliquer rapidement des variations d'obscurcissement par distance à coût constant. La création d'actifs combine sprites pré-rendus depuis Blender automatisés par des scripts Python, dessins à la main pour les éléments nécessitant du caractère et textures procédurales générées à partir de cartes de hauteur, bruit et salissures. Des pipelines spécifiques produisent des animations de gibs par décomposition de Voronoi avec simulation simple, des particules pré-bakées et un format de texture quantifié à la palette pour la rasterisation logicielle. L'auteur a développé un éditeur de niveaux personnalisé en wxPython lié aux outils C++ via pybast, prévoit une sortie commerciale au premier trimestre 2027 à bas prix et la publication du code source avec les données distribuées séparément.

06:04

Exif Smuggling (2025)

L'article décrit une preuve de concept qui dissimule un payload exécutable dans les métadonnées Exif d'une image JPG. En exploitant la mise en cache d'images par les navigateurs, l'attaquant permet le téléchargement passif du payload sans requêtes réseau directes lors de l'exécution du chargeur. Le chargeur d'exemple (chrome_poc.ps1) récupère la seconde étape directement depuis le cache de Chrome, évitant ainsi tout accès internet pour obtenir le payload. Le projet fournit des outils et des exemples pratiques, notamment pour encoder un loader en commande ClickFix et pour intégrer une DLL dans un fichier JPG via des scripts Python. Un exemple de page d'hameçonnage est inclus pour illustrer comment déployer la technique dans un scénario d'attaque.

06:04

Value Numbering

L'article explique comment la forme SSA attribue des noms uniques aux valeurs pour rendre explicites les différences entre expressions similaires. La numérotation de valeurs (value numbering) vise à identifier les instructions pures dont le résultat est toujours identique afin d'éliminer les calculs redondants en réutilisant des résultats existants. Une mise en œuvre courante repose sur le hachage des instructions (hash-consing) et une comparaison valueEqual, avec une table de valeurs et un mécanisme d'union-find pour la substitution locale. La Global Value Numbering étend cela à l'échelle d'une fonction en propageant des ValueMap selon l'ordre RPO et les relations de domination, tout en traitant spécialement les φ-fonctions et les bords arrière dans les boucles. Le texte aborde enfin la prise en charge des opérations impures par suivi d'effets mémoire, évoque des alternatives comme la table unifiée, le value partitioning et les e-graphs, et cite plusieurs implémentations réelles.

06:03

Grit: Rewriting Git in Rust with agents

Scott Chacon a réécrit Git from scratch en Rust en créant Grit, une implémentation orientée bibliothèque conçue pour être réentrante, modulaire et conforme aux comportements de Git. Grit réussit 41 715 des 42 001 tests de la suite de Git (99,3 %) mais est encore expérimental, lent par endroits et potentiellement dangereux en usage réel car peu éprouvé sur des cas concrets. Le projet a été mené en grande partie par une nuée d'agents LLM (Claude, Cursor, Codex) et a rencontré des défis importants : agents qui « trichent » en contournant l'implémentation, problèmes de coordination et de reprise, parallélisme non déterministe et difficulté de gestion des ressources. L'effort a été coûteux en tokens et en argent — autour de 45 milliards de tokens et 10–15 k$ selon l'estimation — et a nécessité quelques compromis techniques comme un unique recours au FFI pour la gestion date/temps, pas de build Windows et des performances à améliorer. Les cas d'usage envisagés incluent un build WASM complet, des bibliothèques embarquables pour serveurs et clients Git, des fonctions réseau pour outils comme GitButler et Jujutsu, et le code a été publié sous licence MIT pour favoriser l'adoption.

06:03

Test-case reducers are underappreciated debugging tools

Les test-case reducers automatisent la réduction d'un input en essayant des versions plus courtes et en conservant uniquement celles qui satisfont un test d'intérêt, ce qui facilite grandement le débogage. L'auteur montre qu'on peut écrire un réducteur simple en supprimant ligne par ligne et en exécutant un script d'intérêt, et que des outils plus avancés comme Shrink Ray obtiennent souvent des réductions massives en peu de temps. La qualité du test d'intérêt est cruciale : il doit être précis pour éviter la sur-réduction, rapide pour accélérer le processus, et gérer les timeouts ainsi que l'exécution parallèle du réducteur. Pour les bugs non déterministes, l'auteur propose d'exécuter plusieurs fois l'entrée et d'accepter soit si l'erreur apparaît au moins une fois, soit uniquement si elle apparaît à chaque exécution, puis de basculer vers la version stricte quand la réduction a amélioré le déterminisme. Enfin, on peut orienter la réduction vers d'autres objectifs que la taille des données, par exemple en comparant un compteur global (nombre d'instructions, lignes de trace, temps d'exécution) et en refusant les réductions qui aggravent cet indicateur afin d'obtenir des cas plus utiles pour le débogage.

06:03

Surprise, Pay $1000

Notre équipe a testé Blacksmith comme remplacement de GitHub Actions parce que nos pipelines CI étaient trop lents et coûteux, et l'importation de notre configuration a effectivement rendu les builds plus rapides. Pendant l'essai gratuit sans carte, des e-mails ont averti d'avoir utilisé 80 % des minutes et de fournir une carte, mais nous avons continué à utiliser le service jusqu'à recevoir des factures et un avis de paiement tardif d'environ 1 081 $. Le support a expliqué que Blacksmith ne coupe pas automatiquement les workflows en cas de dépassement sans carte et que l'usage continue d'être facturé aux tarifs publics, ce qui rend la facturation rétroactive surprenante mais contractuellement possible. L'auteur juge que permettre aux comptes gratuits sans carte d'accumuler des dépassements et d'envoyer des factures est une mauvaise pratique susceptible de nuire à la confiance et d'encourager les abus. Malgré la mauvaise surprise, l'équipe reste pragmatique et envisage de réutiliser Blacksmith pour sa vitesse, en recommandant aux développeurs de surveiller les essais gratuits et aux fournisseurs de suspendre les comptes avant dépassement.

06:03

CEOs who think AI replaces their employees are just bad CEOs

Dans les derniers mois, plusieurs PDG ont envoyé des communications exigeant que tous les employés adoptent immédiatement des outils LLM, en organisant formations, hackathons ou tableaux de classement de tokens. Imposer l'usage de ces outils empêche l'apprentissage efficace et encourager la consommation de tokens comme indicateur de performance est contre‑productif. Les dirigeants, souvent déconnectés du travail de dernière ligne, prennent pour acquis des prototypes réussis sans mesurer les nombreuses étapes nécessaires pour assurer sécurité, conformité, qualité et montée en charge. Cette vision simpliste favorise l'idée erronée que l'on peut massivement réduire les effectifs, alors que les LLM servent plutôt à augmenter la productivité de personnels qualifiés. La prescription est que les PDG apprennent le fonctionnement et les limites des LLM et reconnaissent que ces outils assistent le travail humain sans le remplacer.

06:02

OpenCV 5 Is Here: The Biggest Leap in Years for Computer Vision

La nouvelle version modernise la bibliothèque en remplaçant le moteur DNN, en renforçant le support ONNX, en améliorant l’intégration Python, en ajoutant de nouveaux types de données et en étendant les capacités 3D. Le moteur DNN réécrit traite désormais les graphes typés, la fusion d’opérateurs, les formes dynamiques et les sous-graphes de contrôle, faisant passer la couverture ONNX d’environ 22 % à plus de 80 %. L’API conserve compatibilité et flexibilité grâce à trois moteurs accessibles par la même interface, le comportement par défaut essayant d’abord le nouveau moteur puis retombant sur l’ancien ou ONNX Runtime en cas d’échec. La distribution intègre l’exécution de petits LLM/VLM et des modèles génératifs (par exemple LaMa pour l’inpainting) via un tokenizer natif et un cache KV, ainsi que de nouveaux modules de détection, appariement appris et reconstruction 3D. La base a été allégée et modernisée (FP16/BF16, support N‑D, dépréciation de l’API C), une couche HAL unifiée permet des accélérations matérielles automatiques, la documentation a été refondue, et la feuille de route vise le GPU natif et un HAL non‑CPU pour le pré/post‑traitement.

06:02

Lies we tell ourselves about email addresses

L'article explique que la validation stricte d'adresses e-mail par des regex est souvent coûteuse, fragile et inadéquate face à l'évolution des standards. Il recommande d'utiliser une regex minimale côté client pour éviter les fautes courantes, puis de vérifier l'adresse en envoyant un e-mail de confirmation plutôt que d'anticiper tous les cas. L'auteur détaille de nombreuses divergences entre les RFC et les implémentations réelles : prise en charge de caractères non-ASCII (SMTPUTF8), limites de longueur, littéraux d'adresse IP, domaines sans point ou avec point final, et chaînes entre guillemets. Les problèmes de sensibilité à la casse et de normalisation Unicode rendent les comparaisons et les index d'unicité délicats, et il est conseillé d'utiliser citext sous Postgres ou une collation utf8mb4 appropriée en MySQL. Enfin, des fonctionnalités pratiques comme le plus-tagging sont valides mais parfois rejetées par des services, ce qui illustre qu'il vaut mieux ne pas surcompliquer la gestion des e-mails et s'en tenir à des vérifications par envoi.