HN Digest
Briefing personnel.

Lire vite.
Garder l'essentiel.

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

12074 articles Page 433/1208 Sans filtre

Simulate cassette tape audio profiles using FFmpeg

Ce projet simule des profils audio de cassettes en utilisant ffmpeg. Il applique du bruit de bande, la modulation de fréquence wow et flutter, des limitations de bande passante et des ajustements d'égaliseur. Le script requiert bash et une version de ffmpeg compilée avec libmp3lame. Le dépôt propose plusieurs profils de bande (BASF LH Extra C90, Maxell UD C90, Sony CHF60 et CHF90, TDK D90 et mk60 soviétique) décrits par leurs caractéristiques sonores. On utilise les scripts fournis dans chaque dossier de cassette pour convertir des fichiers locaux ou enregistrer un flux web, les fichiers traités étant déposés dans ./out et distribués sous licence MIT.

Design is compromise

Le compromis est une forme de prise de décision quotidienne qui consiste à prioriser et à trouver un équilibre entre des désirs concurrents. Parler d'une offre « sans compromis » est trompeur, car choisir une option implique automatiquement d'écarter d'autres possibilités. Le concept d'arbitrage montre que chaque avantage obtenu s'accompagne d'une faiblesse correspondante. Les produits conçus avec des choix affirmés exposent clairement leurs limites pour exceller dans des domaines précis. Un bon design consiste à effectuer les arbitrages appropriés pour son public et à assumer ces compromis.

Htmx 4.0, the first JavaScript library to release exclusively on the Game Boy

Le produit coûte 35,92 CAD et se présente comme une version destinée à la console Game Boy. Le jeu propose quatre niveaux axés sur la collecte de cornichons pour progresser. Il met en scène des mécaniques visant à réduire le code JavaScript côté client et propose un boss nommé Warren dont la défaite permet de débloquer le code source. La qualité est garantie avec remplacement ou remboursement en cas d'erreur d'impression ou de défaut visible. Les produits étant fabriqués à la demande, les retours généraux et liés aux tailles ne sont pas acceptés.

I wanted a clock that never needed setting. Things escalated

L'auteur voulait un réveil à affichage sept segments rouge, auto‑réglant, précis et sans applications intrusives, mais n'en a trouvé aucun répondant à tous ses critères. Il a construit son propre appareil en utilisant un Raspberry Pi Zero (W/2W), un afficheur Adafruit 1,2 pouce piloté par un contrôleur HT16K33, et une caisse imprimée en 3D modifiée. Le logiciel tourne comme un service systemd non privilégié, se synchronise via NTP et un miroir APT locaux, offre un contrôle local par socket et une intégration HomeKit via HAP‑python, et se déploie automatiquement avec une pipeline Gitea Actions. Pour la partie code et les adaptations CAO dans Autodesk Fusion, l'auteur a largement fait appel à des modèles de langage (Claude, Fable, Qwen) pour générer le code, piloter Fusion et accélérer les modifications. Après plusieurs itérations matérielles, des tests de filtres pour atténuer la luminosité et des dépenses imprévues, le projet a abouti à un réveil fonctionnel dont le dépôt Git contient le matériel, le logiciel et les instructions.

We have proof automation now

Les langages à types dépendants comme Coq et Lean permettent d'exprimer et de faire respecter des invariants très subtils, mais cet avantage s'accompagne d'un coût important en effort de preuve, illustré par l'expérience seL4 où la preuve a pris bien plus de temps que le développement. Les approches d'automatisation existantes, comme l'usage de solveurs SMT dans F*, sont utiles mais fragiles, tandis que la combinaison récente d'LLM et de l'irrélevance de preuve promet une automatisation beaucoup plus efficace des preuves. Pour tester l'idée, l'auteur a implémenté un décompresseur Zstandard en Lean et explique que le cœur intéressant est l'encodeur d'entropie FSE, un automate d'états qui alloue plusieurs états aux symboles fréquents pour atteindre en moyenne un nombre fractionnaire de bits par symbole et rester très rapide grâce à des tables. Lean, langage strict et purement fonctionnel offrant des types dépendants et des optimisations impératives locales, a permis de formaliser et de prouver des propriétés universelles de la construction de tables FSE, et l'auteur constate que plusieurs LLM peuvent désormais produire automatiquement ces preuves en quelques dizaines de minutes. Malgré ce progrès, des limites subsistent — l'effort de preuve peut mal évoluer dans de grands systèmes, le code Lean peut être nettement plus lent que des implémentations production, et les tentatives d'utiliser de l'assembleur vérifié restent difficiles à mettre à l'échelle.

US citizen charged after GrapheneOS phone wipes during airport search

Une affaire fédérale à Atlanta met en cause Sam Tunick et soulève des questions sur un système d'exploitation mobile axé sur la vie privée dont les fonctionnalités auraient servi à effacer des preuves. Les procureurs poursuivent Tunick en vertu d'un texte pénal interdisant la destruction de biens pour empêcher leur saisie, se fondant sur l'effacement du téléphone après qu'il ait fourni un code d'accès. La défense affirme que la fouille a violé les droits constitutionnels de Tunick, que ses demandes d'avocat ont été refusées et que les preuves doivent être exclues, tandis que le gouvernement décrit l'intervention comme une inspection aéroportuaire routinière. L'affaire soulève des débats sur l'étendue des pouvoirs de perquisition aux frontières et sur le fait que l'utilisation d'un système d'exploitation axé sur la confidentialité puisse être interprétée comme suspecte. Le dossier s'inscrit dans le contexte de l'opposition au projet "Cop City" et de l'intervention fédérale après des tentatives d'inculpation au niveau étatique qui ont échoué.

Scriptc by Vercel: TypeScript-to-Native compiler, no JavaScript engine in binary

Cet outil compile du TypeScript ordinaire en exécutables natifs autonomes sans Node ni moteur JavaScript, en garantissant que l'exécution se comporte octet pour octet comme sous Node. La compilation est par défaut statique, un mode --dynamic embarque un moteur QuickJS-ng pour les portions dynamiques (avec validation des valeurs), et tout code non pris en charge est rejeté avec un code d'erreur et un indice de réécriture. Le périmètre statique couvre la plupart du langage ES/TypeScript (classes, closures, génériques monomorphisés, async/await sur fibres, etc.), la bibliothèque standard, une vaste surface d'API compatible Node (fs, net, http, crypto, timers) et les APIs WHATWG comme fetch, tandis que les dépendances npm peuvent être intégrées à la compilation. La vérification s'appuie sur le véritable compilateur TypeScript, des tests différentiels exécutant 800+ programmes sous Node et en natif pour garantir une sortie identique, et une piste ASan avec audit de comptage de références bloque les fuites et use-after-free. Les binaires sont très compacts (~170–200 Ko statique, démarrage ~2 ms et RSS typique 1–4 Mo), et l'outil offre des échappatoires comme comptime(() => ...), une FFI native, et un pipeline tsc→IR→LLVM/C avec builds et tests reproductibles.

Decker, a platform that builds on the legacy of Hypercard and classic macOS

Cette plateforme multimédia permet de créer et partager des documents interactifs avec son, images, hypertexte et comportement scripté, et s'utilise directement dans un navigateur. Elle reprend l'héritage d'HyperCard et l'esthétique du MacOS classique tout en offrant des améliorations pratiques comme un historique d'annulation profond, la prise en charge des molettes et écrans tactiles, une navigation clavier moderne et des opérations d'édition en masse, et permet de concevoir des e-zines, présentations, jeux d'aventure ou prototypes exportables en fichiers HTML autonomes et multiplateformes. Pour les projets complexes, un langage de script original nommé Lil, inspiré de Lua et de Q, offre une syntaxe accessible, l'arithmétique scalaire-vecteur implicite et un langage de requête de type SQL permettant de faire beaucoup avec peu de lignes. L'environnement inclut des widgets interactifs intégrés et la possibilité de définir et partager facilement des composants personnalisés via le presse-papiers, ce qui transforme chaque document en une boîte à outils réutilisable. L'outil est convivial en ligne de commande grâce à Lilt, stocke les documents dans un format texte compatible avec Git, est distribué en open source sous licence MIT sans publicité ni télémétrie, propose des téléchargements binaires sur Itch.io et une communauté active avec des game jams régulières.