HN Digest
Briefing personnel.

Lire vite.
Garder l'essentiel.

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

11978 articles Page 335/1198 Sans filtre

How a device finds encrypted DNS by itself

DDR (Discovery of Designated Resolvers) permet à un résolveur de publier le nom d'hôte, le port, le protocole et les adresses IP de ses endpoints chiffrés en répondant à une requête spéciale (_dns.resolver.arpa) émise par l'appareil qui utilise actuellement ce résolveur. La réponse liste les endpoints disponibles (DoH, DoT, DoQ) et leur préférence, et le dispositif choisit l'endpoint compatible le mieux placé dans cet ordre. Si la requête arrive par une connexion déjà chiffrée, le résolveur peut identifier le profil demandeur et renvoyer des endpoints associés à ce profil pour appliquer immédiatement les règles, listes et journaux de ce profil. Les appareils limités à une simple adresse IP peuvent ainsi être migrés vers du DNS chiffré sans configuration, mais l'échange initial depuis le DNS en clair est lisible et modifiable par l'opérateur réseau, de sorte que la mise à niveau est opportuniste. Configurer directement un résolveur chiffré sur l'appareil ou sur le routeur reste l'option la plus sûre car la vérification existe dès la première requête et suit l'appareil sur tous les réseaux.

Launch HN: Bullet (YC S26) – A Faster Coding Agent

L'équipe a constaté que les exécutions d'agents prenaient beaucoup de temps en raison d'une infrastructure trop lourde plutôt que des limites des modèles. Bullet propose une boucle serrée modèle→outils→résultats qui route les tâches simples vers des modèles rapides et n'escalade que lorsque la mission l'exige. Les recherches ciblées et les lectures de fichiers récupèrent uniquement le contexte pertinent sans embarquer l'ensemble du dépôt. Les appels d'outils indépendants s'exécutent en parallèle et les duplications ou boucles bloquées sont interceptées pour éviter les pertes de temps. Un client CLI multiplateforme (macOS/Linux, Node 18+) est disponible en bêta privée gratuite, sans clé ni abonnement requis.

Choosing an AI model: one prompt, 11 models, different results

Netlify a lancé un partenariat avec OpenRouter pour offrir via son AI Gateway l'accès à un plus large choix de modèles et a étendu Agent Runners pour inclure des modèles open récents comme Kimi K3, GLM 5.2 et DeepSeek V4. Agent Runners exécute des agents de codage complets (Claude Agent, OpenAI Codex, Gemini CLI et OpenCode) qui disposent de compétences spécifiques et du contexte du projet Netlify pour utiliser correctement les capacités de la plateforme. L'équipe a évalué de nombreux modèles avec l'outil open source AXIS sur trois cas d'usage, et ce premier article détaille les résultats du scénario simple d'une page statique pour un café de quartier, en comparant qualité et consommation de crédits. Les tests montrent une très large dispersion des coûts et des styles de sortie — Opus peut produire des pages très élaborées à coût élevé, tandis que des modèles comme DeepSeek V4 Flash fournissent des résultats acceptables pour une fraction des crédits. Les auteurs soulignent que pour des applications plus complexes il faut privilégier la capacité du modèle à utiliser les fonctionnalités Netlify, à valider et itérer sur le code, et ils annoncent des articles de suivi pour analyser ces cas avancés.

AI At Home Part 1: A Box Of Scraps

Les grands modèles de langage ont transformé le travail des développeurs, mais l'auteur préfère un petit centre de données IA domestique construit à partir de composants récupérés plutôt que de dépendre d'un service distant. Il a acheté des cartes GPU V620 d'AMD issues d'e‑déchets, chacune avec 32 Go de VRAM mais sans ventilateurs ni sorties vidéo. Il a assemblé la machine sur une carte mère X299 avec un Core i9‑10900X, de la RAM et des SSD récupérés, une alimentation 1600 W, et a imprimé des capots pour monter des ventilateurs 80 mm puissants afin de refroidir les cartes. Après avoir résolu des problèmes de démarrage en activant Resizable BAR et MMIO High Size, il a installé Ubuntu 24.04 et testé llama.cpp avec Gemma4 ainsi que le modèle Deepseek V4 Flash, lequel tient sur les GPU mais reste lent. Pour réduire le bruit il a bricolé un contrôleur de ventilateurs à base de clones d'Arduino qui reçoit une consigne du serveur (que le modèle a aidé à générer), le montage est sur une platine d'essai dans le boîtier et la machine est stable en attendant des optimisations de performance.

Kubernetes on Oxide: How customer needs shaped our integrations

Au départ, Oxide manquait d'intégrations Kubernetes prises en charge et l'auteur a rejoint l'équipe comme premier Solutions Software Engineer pour faciliter le déploiement et l'exploitation de Kubernetes sur Oxide. Trois approches de provisioning ont été publiées : un pilote de nœud Rancher intégré à Oxide, un fournisseur d'infrastructure Omni développé en partenariat avec Sidero Labs avec un contournement provisoire pour un problème de format de disque, et un fournisseur Cluster API (CAPOx) apportant un workflow natif Kubernetes. L'équipe a développé un cloud controller manager Oxide pour réconcilier en continu les instances Oxide avec les objets Node de Kubernetes et fournir un point d'extension d'exécution partagé pour d'autres contrôleurs. Faute d'équilibreur de charge natif, les services LoadBalancer sont pris en charge via des adresses IP flottantes qui redirigent le trafic vers l'adresse interne des nœuds, ce qui entraîne une représentation double dans status.loadBalancer.ingress et certaines limitations opérationnelles. Le support de stockage natif dépend du hot‑plug des disques, actuellement manquant dans la pile Oxide, ce qui retarde le pilote CSI prévu ; en attendant, l'utilisation de disques locaux avec des solutions comme Longhorn évite une double réplication et l'équipe travaille à terminer le hot‑plug, étendre le dogfooding et ajouter des fonctionnalités comme l'autoscaling, le balancement natif, le tagging et l'authentification OIDC.

Ordinary Abundance

Le texte parcourt une visite d'appartement qui met en scène objets et gestes quotidiens illustrant des innovations technologiques et culturelles. Chaque pièce est accompagnée de citations historiques montrant l'émerveillement suscité à leur apparition par des inventions comme la musique enregistrée, l'éclairage électrique, la photographie et l'imprimerie. D'autres exemples évoquent des avancées pratiques telles que l'eau courante, la réfrigération, la plomberie intérieure, l'anesthésie, les lunettes, la machine à coudre et le télégraphe. Le texte rappelle que ces progrès ont transformé le quotidien en rendant accessibles des choses autrefois rares, coûteuses ou impossibles. Il conclut en invitant à reconnaître l'effort des générations passées et à retrouver l'étonnement envers des merveilles désormais banales.

How Gödel's Proof Works (2020)

En 1931, Kurt Gödel a démontré que tout système axiomatique suffisamment puissant et cohérent est nécessairement incomplet, c'est‑à‑dire qu'il contient des vérités arithmétiques qui ne peuvent pas être prouvées à l'intérieur du système. Sa méthode consiste à encoder formules et démonstrations sous forme d'entiers uniques appelés numéros de Gödel, en s'appuyant sur la factorisation première pour rendre l'encodage décodable sans ambiguïté. En arithmétisant les métamathématiques, il montre que des énoncés portant sur des formules peuvent être traduits en formules arithmétiques ayant elles‑mêmes un numéro de Gödel. En construisant une formule auto‑référente G qui affirme sa propre indémontrabilité, Gödel prouve que G est vraie mais indémontrable dans le système, ce qui établit l'incomplétude. Il en déduit aussi que nul système d'axiomes cohérent ne peut démontrer sa propre cohérence, puisque la démonstration de cette cohérence contredirait l'incomplétude mise en évidence.

An ambiguity in c89 which will never be fixed

L'auteur signale une formulation ambiguë dans la norme C89/C90 au sujet des déclarations implicites de fonctions, qui a conduit à un désaccord d'interprétation entre gcc et clang. Selon la norme C89, si l'expression précédant les parenthèses d'un appel de fonction est un identificateur non visible, l'identificateur est implicitement déclaré comme extern int identificateur(), et la présence ou l'absence de parenthèses autour de l'identificateur (par exemple f() versus (f)()) modifie le comportement. L'exemple int f(int [sizeof(f())]); illustre que les identificateurs sont insérés en portée après l'achèvement du déclarateur, de sorte que f() est d'abord considéré comme int () puis redéclaré comme int (int *). Toutefois l'ajout du nom du paramètre int f(int f[sizeof(f())]); produit un comportement divergent entre clang (qui accepte) et gcc (qui rejette), car l'expression clé « innermost block » est source d'ambiguïté entre portée de bloc, portée de fichier et portée de prototype de fonction, et l'usage de extern complique encore l'interprétation. Comme cette caractéristique a été supprimée à partir de C99, la norme ultérieure n'a pas clarifié l'intention originelle et il est recommandé d'utiliser des versions plus récentes du langage pour éviter de telles ambiguïtés.

Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes

Le rapport concerne systemd version 257.9 déployé sur Debian 13 avec le noyau 6.12.57+deb13-amd64 et le composant systemd-journald. L'attendu était que les écritures de journaux soient de l'ordre de grandeur de syslog, mais l'observation montre une machine virtuelle réalisant environ 50 IOPS en écrivant seulement deux lignes de log par seconde. La reproduction consiste à configurer journald pour écrire sur disque (système de fichiers XFS) et à générer un flux constant d'entrées de log, illustré par des lignes haproxy répétées. L'auteur indique avoir observé une activité d'E/S persistante après chaque mécanisme noyau et conteste l'explication selon laquelle le noyau provoquerait ces IOPS, en renvoyant à l'issue #15292 précédemment fermée. L'auteur conclut que le format de journald est inefficace, produisant des fichiers plusieurs fois plus volumineux que les données écrites et étant susceptible de se corrompre après un redémarrage non propre.