HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

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

3748 articles Page 121/375 Sans filtre

06:04

Sheets Spreadsheets in Your Terminal

Cet outil fournit une interface en ligne de commande et une interface textuelle interactive pour consulter et modifier des fichiers CSV depuis le terminal. Il permet de lire des cellules ou des plages depuis stdin ou un fichier, d'écrire et de modifier des cellules via des commandes en ligne. La navigation et l'édition utilisent des raccourcis inspirés de Vim pour se déplacer, sélectionner, éditer, copier, coller, annuler et refaire des actions. Un mode commande offre des commandes telles que :w, :e et :q pour sauvegarder, ouvrir et quitter, ainsi que des commandes pour atteindre directement une cellule. L'application s'installe via go install ou en téléchargeant un binaire, est publiée sous licence MIT et accepte les retours par e‑mail, Twitter ou issues GitHub.

06:04

Rendering arbitrary-scale emojis using the Slug algorithm

La mise à disposition publique de l'algorithme Slug d'Eric Lengyel a permis l'ajout rapide d'une implémentation open-source dans HarfBuzz sous forme d'une bibliothèque GPU qui calcule la couverture des glyphes directement dans le fragment shader. La bibliothèque HarfBuzz GPU gère déjà le rendu de glyphes monochromes en encodant les contours dans un tampon de texture, en uploadant ces données puis en appelant hb_gpu_render dans le fragment shader pour multiplier la couverture par l'alpha de la couleur. Le support des polices couleur plates (COLRv0) se fait simplement en empilant plusieurs glyphes monochromes avec des couleurs unies récupérées via hb_ot_color_glyph_get_layers. COLRv1, beaucoup plus sophistiqué, impose un arbre de rendu avec clips, dégradés, transformées affines et groupes, et l'article détaille l'utilisation de hb-paint pour extraire les commandes, l'encodage des dégradés et des matrices inverses ainsi que la transformation des contours avant leur envoi au GPU. Les opérations de groupement et de fusion sont implémentées dans le fragment shader en itérant sur une séquence de commandes encodées et en appliquant les modes de blend, permettant ainsi de rendre des emojis vectoriels multicolores et parfaitement scalables dans des scènes 3D.

06:04

Show HN: Modo – I built an open-source alternative to Kiro, Cursor, and Windsurf

Modo est un IDE de bureau open source sous licence MIT qui transforme les invites en plans structurés avant de générer du code. Il adopte un flux spec-driven avec des dossiers .modo/specs contenant requirements.md, design.md et tasks.md, et l'agent remplit puis exécute les tâches qui persistent sur le disque. Les fichiers de steering injectent des règles projet dans chaque interaction LLM selon des modes d'inclusion, tandis que .modo/hooks permet d'automatiser des actions autour du cycle de vie de l'agent via divers événements et actions. L'outil offre une bascule Autopilot/Supervised, sessions de chat parallèles, sous-agents, boutons "Run Task" inline, un panneau explorateur dédié, des "powers" installables et des commandes slash pour piloter les flux. Construit sur Void et VS Code avec prise en charge multi-fournisseur LLM, le dépôt propose un guide de démarrage, une structure .modo/ initialisable et invite la contribution communautaire sous licence MIT.

06:03

We replaced Node.js with Bun for 5x throughput

L'équipe a remplacé Node.js par Bun dans un service critique de long-polling et observé un gain global d'environ 5x en débit ainsi que des améliorations marquées de la latence et de la stabilité. Ils ont d'abord supprimé une couche SQLite surdimensionnée au profit d'une Map à clé composite, ce qui a doublé le débit et réduit significativement les latences médianes. En migrant vers Bun puis en profilant, ils ont éliminé des points chauds CPU (validation Zod inutile, conversion des headers avec Object.fromEntries et sérialisation de logs) et réduit l'utilisation CPU d'environ 40 %. En production une fuite mémoire liée au modèle HTTP de Bun a été identifiée : des Promise<Response> non résolues lors des déconnexions client retenaient l'état interne, et la fuite a été corrigée en résolvant explicitement la promesse avec un 499 et en ajustant idleTimeout. Ils ont ensuite compilé l'application en un binaire unique pour gagner en performance et en taille d'image, et recommandent de profiler systématiquement, de tester avec k6 et d'utiliser les outils Bun (heapStats, cpu-prof, MIMALLOC_SHOW_STATS) pour diagnostiquer fuites et métriques.

06:03

Media scraper Gallery-dl is moving to Codeberg after receiving a DMCA notice

Le texte affirme que Jacob a créé Fakku initialement comme un aspirateur d'Exhentai, finançant le site avec des prêts étudiants et en vendant des produits ornés de contenus protégés. Selon le récit, Fakku aurait informé Wanimagazine de la diffusion de scans non autorisés sur Exhentai, accepté un accord avec cette société et continué à partager du contenu non licencié pendant environ un an. Le texte indique que Jacob aurait publié le dox du propriétaire d'Exhentai et que Fakku a ensuite envoyé massivement des demandes de retrait de contenus, tout en se présentant publiquement comme défenseur de la liberté d'expression. L'auteur allègue que Fakku privilégie le profit en mettant des œuvres d'artistes décédés derrière un paywall, sollicitant des dons pour traductions et offrant des rencontres en échange de contributions élevées. Enfin, le texte suggère un lien entre Fakku et Irodori Comics, accusant cette dernière de payer ses traducteurs au-dessous du salaire minimum, de produire des traductions de faible qualité et d'avoir effectué des retraits massifs de galeries, certaines affirmations restant non vérifiées.

06:03

Why Switzerland has 25 Gbit internet and America doesn't

En Suisse, les abonnés peuvent obtenir facilement des connexions fibre symétriques dédiées allant jusqu'à 25 Gbit/s grâce à une concurrence réelle entre de nombreux fournisseurs. Le texte explique que les réseaux de télécoms sont des « natural monopolies » où construire plusieurs infrastructures identiques (comme en Allemagne) ou laisser des monopoles territoriaux s'installer (comme aux États-Unis) conduit soit au gaspillage soit à l'extraction de rente. Le modèle suisse repose sur une architecture point-à-point à quatre fibres par logement et des points d'accès neutres permettant à n'importe quel fournisseur de se connecter physiquement au domicile du client. Quand Swisscom a tenté de généraliser une architecture partagée P2MP qui aurait verrouillé les concurrents, l'autorité de la concurrence (COMCO) et les tribunaux ont bloqué l'initiative et infligé une amende, contraignant le retour au standard initial. L'auteur conclut que les pays souhaitant de meilleurs débits et des prix plus bas doivent imposer l'accès ouvert aux infrastructures physiques, exiger le point-à-point, définir des normes neutres, renforcer les autorités de concurrence et encourager les réseaux municipaux.

06:03

Running Gemma 4 locally with LM Studio's new headless CLI and Claude Code

Les modèles locaux offrent des avantages pratiques pour des tâches rapides comme la relecture de code, le brouillon ou les tests de prompts, notamment l'absence de coûts d'API, la confidentialité des données et une disponibilité constante. La variante Google Gemma 4 26B‑A4B utilise une architecture Mixture‑of‑Experts qui n'active qu'une fraction des paramètres (≈3,8–4 B actifs), donnant un coût d'inférence proche d'un dense 4B tout en offrant une qualité effective comparable à ~10B dense. Sur un MacBook Pro 14'' M4 Pro avec 48 Go de mémoire unifiée, le modèle tient confortablement en mémoire (base ≈17,6 GiB, ≈21 GiB à 48K de contexte) et génère autour de 51 tokens/s avec un temps au premier token d'environ 1,5 s, mais en exerçant une forte pression mémoire et CPU/GPU. LM Studio 0.4.0 apporte le démon llmster et l'outil lms pour un usage headless, un serveur OpenAI/Anthropic‑compatible, traitement parallèle par batching continu, chargement JIT, TTL et options de quantification et d'optimisation (flash attention, offloading) pour gérer mémoire et latence. Recommandations pratiques : toujours utiliser --estimate-only pour planifier le mémoire, activer flash attention si nécessaire, éviter le décodage spéculatif sur les MoE aujourd'hui, et envisager une configuration locale (par ex. alias claude‑lm) pour la confidentialité et l'économie, en acceptant que les grandes générations restent plus lentes qu'en cloud.

06:02

Endian wars and anti-portability: this again?

L'auteur déplore l'hostilité de la communauté open source envers la portabilité et considère que les objections répétées aux ports matériels sont souvent infondées. Il défend la valeur pédagogique et pratique d'architectures parfois qualifiées de « vieilles » comme Alpha, MIPS, SPARC, PowerPC et Motorola 68000, et cite la découverte d'un bug de sécurité sur un Pentium 586 réel. Il affirme que l'endianness reste pertinente, que les architectures big-endian et bi-endian ont leur place, et donne des exemples où des bugs dans Git et Clang n'ont été révélés que sur systèmes big-endian. Sur le 32 bits, il note que malgré la limite de mémoire, ces plateformes sont encore répandues dans des environnements à ressources limitées et encouragent l'optimisation et l'efficience logicielle. Il conclut en appelant les mainteneurs à accepter et soutenir les ports communautaires pour améliorer la qualité, la robustesse et l'utilité des projets libres.

06:02

Show HN: Gemma Gem – AI model embedded in a browser – no API keys, no cloud

L'extension installe un assistant IA exécuté entièrement localement dans le navigateur via WebGPU, sans clés API ni envoi de données vers le cloud. Elle utilise le modèle Gemma 4 (E2B ≈ 500 Mo ou E4B ≈ 1,5 Go) via @huggingface/transformers et peut lire des pages, cliquer, remplir des formulaires, exécuter du JavaScript et répondre à des questions sur le site visité. Le fonctionnement repose sur une architecture avec un document offscreen pour l'inférence et la boucle d'agent, un service worker pour le routage, les captures d'écran et l'exécution JS, et un content script qui injecte l'interface et exécute les outils DOM. Les outils fournis permettent notamment de lire le contenu de la page, prendre des captures, cliquer ou taper via sélecteurs CSS, faire défiler et lancer du JavaScript, chaque outil s'exécutant dans le contexte approprié (content script ou service worker). Des réglages permettent de changer de modèle, d'activer le mode de réflexion natif, de limiter les itérations, de réinitialiser le contexte ou de désactiver l'extension par hôte, et le dépôt comprend des commandes pnpm pour le développement ainsi que des journaux préfixés pour faciliter le débogage.