HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

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

8370 articles Page 1/837 Sans filtre

06:05

The BBC Tetris Companion

L'auteur a entrepris de faire tourner un jeu de type Tetris sur une console pédagogique britannique des années 1980 destinée à l'enseignement du bridge. Il décrit le matériel de la console, notamment un processeur Z80, un TMS9129 VDP et des cartouches ROM commercialisées avec neuf titres officiels. Pour exécuter son propre code, il a rétro‑ingénieré le BIOS afin de fabriquer un en‑tête de cartouche compatible et a appris l'assembleur Z80 pour développer Bridgetris. Parallèlement il a réparé une unité achetée en remplaçant le connecteur de cartouche, réalisé des PCB de cartouche et mis au point une modification composite pour améliorer la sortie vidéo. Il annonce la publication prochaine d'articles détaillés sur la réparation, le mod vidéo et la programmation, ainsi que la diffusion du ROM et du code source.

06:05

What is a product?

Beaucoup de projets générés rapidement avec l'IA ressemblent à des produits mais ne sont souvent que des prototypes ou des démos superficielles. Les mises à jour fréquentes des modèles produisent des exemples impressionnants qui inondent les réseaux mais n'aboutissent pas forcément à des produits viables. Quatre ans après l'avènement des grands chatbots, on ne voit pas de véritables concurrents des plateformes majeures créés uniquement avec l'IA, car l'innovation exige plus que des prompts. Un vrai produit nécessite des utilisateurs réels, un marché et la résolution de problèmes concrets, pas seulement du code ou une belle maquette. Par conséquent, un prototype sans adoption n'est qu'un jouet, et il ne faut pas confondre démonstrations rapides avec des produits aboutis.

06:04

Show HN: Modern C++ Build Tools for Module Feature

mcpp est un outil de gestion de construction conçu pour le développement axé sur les modules C++23 et permet d'utiliser import std ainsi que les unités d'interface sans configuration manuelle. Il propose l'analyse automatique des dépendances de modules, des builds incrémentiels au niveau fichier (front-end dirty check, P1689 dyndep et BMI restat) et installe des toolchains préconstruits dans un sandbox isolé pour ne pas modifier le système hôte. La gestion des dépendances inclut la résolution SemVer, un fichier lock unifié, un cache BMI partagé entre projets, des indices personnalisés et un écosystème de bibliothèques modulaires (mcpplibs). L'expérience développeur offre des commandes haut niveau (new, build, run, test, add, pack, publish), la génération automatique de build.ninja et compile_commands.json, ainsi que des options de packaging dont des binaires statiques musl. Le projet supporte Linux (x86_64/aarch64), macOS ARM64 et Windows x86_64 avec gestion multi-toolchain et cross-compilation, il est en développement actif et accueille contributions, issues et demandes de fonctionnalités.

06:04

Petri Nets as a Music Sequencer

Le générateur beats.bitwrap.io crée des morceaux en combinant des réseaux de Petri qui font circuler des jetons pour déclencher notes et percussions. Chaque instrument est modélisé comme un anneau de places et transitions où des jetons produisent des rythmes basés sur des schémas euclidiens et des notes pour les mélodies et lignes de basse. La structure inclut des réseaux de contrôle non sonores pour gérer l'arrangement (introductions, breaks, retours) et des optimisations comme les compte-à-rebours par jetons multiples pour réduire la taille des fichiers. Les transitions du mode Auto-DJ ont été intégrées au graphe pour résoudre des conditions de concurrence et assurer une synchronisation précise entre régénérations et exécution des macros. Le système est déterministe grâce à l'état unique des jetons, fonctionne essentiellement côté client avec Tone.js pour l'audio, et le code source est publié en open source.

06:04

Thoroughly Understanding C++ ABI (2024)

L'article explique que l'ABI (Application Binary Interface) rassemble les règles permettant à des modules binaires de s'interfacer, incluant formats d'objets, représentation des données, conventions d'appel et bibliothèques d'exécution. La compatibilité binaire dépend du couple CPU/OS et de détails comme le format exécutable (PE/ELF), la taille et l'alignement des types, et les conventions d'appel qui diffèrent notamment entre Windows x64 et System V. Des conséquences pratiques sont illustrées par des violations d'ODR lorsqu'on change la définition de structures, par des règles spécifiques sur le passage des structs en registres ou par référence, et par le fait que des objets C++ non triviaux (p. ex. unique_ptr) ne sont pas forcément aussi efficaces que des pointeurs bruts. Le texte souligne que le standard C++ n'impose pas d'ABI stricte, mais que des conventions de facto (Itanium vs MSVC) et des changements d'implémentation ou d'options de compilation peuvent provoquer des ruptures ABI. Pour les bibliothèques distribuées en binaire, l'article recommande d'exposer des types POD ou des wrappers C (extern "C") pour la création/destruction et d'éviter le mélange de CRT/allocateurs afin de prévenir les erreurs de libération de mémoire.

06:04

Building community out of strangers (2023)

L'auteur a élargi son blogroll pour inclure les personnes qu'il suit via son lecteur RSS, ajoutant de nombreux blogs personnels auparavant exclus. Il explique avoir recentré sa consommation d'informations vers des personnes plutôt que des publications, cherchant à privilégier les préoccupations du quotidien et des connexions non réactives. Il décrit sa méthode de sélection des abonnements en se basant sur la lecture de quelques articles, les pages « à propos » et des intérêts partagés, tout en visant une diversité géographique et un équilibre de genre. Il défend les blogs personnels comme des espaces d'expression plus authentiques et riches que les réseaux sociaux, permettant des textes complets, des liens, des médias et des interactions plus soutenues. Il considère que la blogosphère favorise la construction d'une communauté vivante et que la remise en valeur du blogroll peut contribuer à renforcer les connexions et les normes sociales sur le web indépendant.

06:04

Energizing a vacuum-tube flip-flop module from a 1948 IBM system

Introduite en 1948, la machine IBM 604 était une calculatrice électronique programmable qui lisait et écrivait des cartes perforées, traitait 100 cartes par minute et connut un fort succès commercial avec plus de 5600 unités produites. Le module TR-3 du 604 était un bloc enfichable contenant un tube à double triode et des composants montés en trois dimensions, conçu pour être rapidement remplacé en cas de défaillance. La triode amplifie un faible signal en contrôlant un courant de plaque, le tube 2033 utilisé étant un double-triode miniature dont les filaments chauffent la cathode et consomment environ 6,3 V à 300 mA, tandis que les tensions de plaque atteignent typiquement +150 V et +50 V. Le trigger est réalisé par deux inverseurs croisés formant une boucle bistable : des résistances et un décalage de niveau avec une tension négative permettent d’adapter les sorties élevées aux grilles proches de zéro, les entrées étant couplées en AC et une impulsion négative inversant l’état, mais le montage est délicat et requiert un équilibrage précis pour éviter oscillations ou blocages. Issu du circuit Eccles‑Jordan de 1918 et employé pour construire des compteurs décimaux efficaces (BCD) dans les machines IBM, ce type de trigger a été progressivement remplacé par des logiques plus fiables puis par des bascules à transistors dans les ordinateurs modernes.

06:04

Curlese, Five Years Later

L'article décrivait la pratique baptisée curlese consistant à envoyer une commande curl exécutable comme preuve reproductible quand une intégration HTTP casse, et affirme que cette méthode reste efficace cinq ans plus tard. Le problème social n'a pas changé: les intégrations impliquent plusieurs équipes, des pare-feux opaques et des échanges qui commencent par «ça marche chez moi», rendant les logs d'application inutiles, tandis qu'une commande curl et sa sortie fournissent une preuve exécutable que l'autre partie peut reproduire. Sur le plan technique la donne a évolué: HTTP/2 et HTTP/3 sont largement répandus, ALPN peut poser des problèmes, le mTLS est devenu courant, les WAFs et proxies frontaux brouillent souvent la source des erreurs, et les sorties curl -v servent désormais aussi d'entrées claires pour des LLMs. Le kit de survie 2026 conserve les classiques (-v, -k, --connect-timeout, --trace-ascii, --trace-time) et ajoute des outils pratiques (-w pour détails de timing, --resolve, --connect-to, --cert/--key pour mTLS, --json, --fail-with-body, --retry et --no-alpn) pour diagnostiquer précisément les causes. L'article fournit aussi un dictionnaire actualisé reliant symptômes fréquents (timeout, connection refused, erreurs TLS, erreurs HTTP/2, pages 403 de WAF, fonctionnement avec --insecure) à leurs causes probables et recommande de demander systématiquement la sortie curl -v plutôt que des captures d'écran, car la commande fait office de contrat et facilite la résolution du ticket.

06:03

Why are all the amounts values negative?

Un client a signalé que toutes les sommes apparaissaient négatives après conversion d'un PDF. L'analyse a montré que les signes moins étaient bien présents mais rendus avec un niveau de gris identique au fond, ce qui les rend invisibles visuellement. L'examen des commandes PDF a révélé que le signe moins était dessiné avec un gris de 0,878 alors que les montants étaient en noir, d'où l'incohérence lors de l'extraction textuelle. L'hypothèse est que des signes moins traînants invisibles ont été ajoutés pour préserver l'alignement des nombres en colonne sans connaître précisément la largeur du trait moins. Deux solutions sont proposées : OCRer les pages en images, plus lent et parfois moins fiable, ou modifier l'extracteur pour stocker et ignorer le texte non noir lors de l'extraction.