HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

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

6857 articles Page 334/686 Sans filtre

06:03

Quirks of Human Anatomy

Le texte présente une galerie d'imperfections anatomiques humaines, allant de traits bénins (muscles pour remuer les oreilles, mamelons masculins) à défauts potentiellement dangereux comme l'étouffement dû au partage des voies respiratoires et digestives, des accouchements difficiles, la dentition encombrée, les grossesses ectopiques et le syndrome de May‑Thurner. La légende évoque également des remarques historiques et comparatives, citant la plaque Pioneer représentant un homme et une femme et donnant des exemples animaux (œuf immense du kiwi, voie de naissance du hyène) pour illustrer comment l'évolution a produit des solutions maladroites ou coûteuses. Une hypothèse développementale explique la rétine «à l'envers» et le point aveugle par l'invagination du tube neural chez les chordés, laquelle aurait retourné les yeux primitifs et contraint les axones des cellules ganglionnaires à sortir par l'arrière après la formation du cristallin. Le texte souligne la remarquable conservation du dispositif photorécepteur (rétinal et opsines) chez les métazoaires et soulève des questions évolutives sur l'origine et l'intégration de ce système, tout en défendant l'idée que l'œil a pu se complexifier par étapes successives avantageuses. Enfin, la comparaison entre yeux humains et mouches met en évidence des différences d'architecture et de types cellulaires (c‑type versus r‑type), la présence chez l'homme d'un petit nombre de cellules ganglionnaires photosensibles, et des curiosités comme l'origine ectodermique de l'iris et sa capacité de régénération chez certains animaux.

06:03

Running Bare-Metal Rust Alongside ESP-IDF on the ESP32-S3's Second Core

L'auteur a changé de RP2350 vers ESP32-S3 parce que son projet nécessitait Wi‑Fi et BLE, mais a été confronté au fait que la pile réseau robuste est majoritairement fournie par l'ESP-IDF en C tandis que le support Rust est encore incomplet. Il a choisi d'exploiter les deux cœurs du S3 en laissant ESP-IDF/FreeRTOS gérer le Core 0 et en désactivant FreeRTOS sur le Core 1 pour y exécuter du Rust bare‑metal sans ordonnanceur, ce qui évite les préemptions pour des boucles temps‑réel sensibles. La première approche consiste à lier statiquement le code Rust dans le firmware: réserver 128 KB de SRAM, fournir un trampoline d'assemblage qui fixe la pile, démarrer le Core 1 par écriture des registres, et faire tourner une application no_std Rust qui communique via AtomicU32. La variante hot‑swappable compile Rust en binaire autonome avec un linker script personnalisé, stocke ce binaire dans une partition flash dédiée, mappe la partition via le MMU à une adresse virtuelle, lit l'adresse d'entrée depuis l'en‑tête et fait sauter le trampoline vers ce code, en partageant les données à une adresse convenue. Ce montage permet de mettre à jour et de redémarrer indépendamment le programme Rust sans recompiler l'ESP‑IDF, offre des garanties de latence pour le traitement temps‑réel et ouvre la voie à des protocoles mémoire partagée, gestion d'interruptions et mises à jour OTA.

06:03

Revocation of X.509 Certificates

L'article retrace l'évolution des mécanismes de révocation des certificats X.509, en expliquant les rôles et limites des CRL, d'OCSP et de l'OCSP stapling. Il souligne des problèmes majeurs : latence et incomplétude des CRL, surcharge et fuite de vie privée avec OCSP, et comportement hétérogène des navigateurs, Chrome n'effectuant pas d'OCSP tandis que Safari et Firefox l'utilisent partiellement. La réduction récente des durées de validité des certificats par Let’s Encrypt et le CAB Forum vers 45 jours illustre une tendance vers des certificats à vie courte, mais l'article juge que cela reste insuffisant face aux attaques rapides. L'auteur évoque des solutions alternatives telles que CRLite pour compresser les CRL, l'utilisation du DNS avec DNSSEC et DANE, ou l'adoption de certificats très courts renouvelés automatiquement, afin d'obtenir une information de confiance plus immédiate. Une expérience pratique montre qu'un certificat émis puis révoqué par Let’s Encrypt n'a pas été détecté comme révoqué par plusieurs navigateurs, ce qui conduit l'auteur à conclure que les mécanismes actuels de révocation sont inefficaces et nécessitent une refonte.

06:02

FreeBSD Device Drivers Book

Ce livre open-source guide des débutants à l'écriture, le débogage et la soumission de pilotes kernel pour FreeBSD 14.x en commençant par les fondamentaux d'UNIX et du langage C. Il est structuré en 38 chapitres et 6 annexes, avec de nombreux travaux pratiques qui totalisent environ 100 heures de lecture et 100 heures de labo pour un temps d'étude estimé à 200 heures. Un pilote unique sert de fil conducteur, évoluant chapitre après chapitre pour illustrer l'attachement, le nettoyage, la synchronisation, la gestion des interruptions et le DMA jusqu'à la mise en production. Les éditions sont disponibles en anglais, portugais brésilien et espagnol aux formats PDF, EPUB et HTML, les traductions pt_BR et es_ES ayant été réalisées par IA et n'ayant pas encore reçu de relecture technique complète. Le contenu et les exemples sont distribués sous licence MIT dans un dépôt GitHub contenant les sources Markdown, et l'auteur invite aux contributions, rapports d'incidents et revues de traduction.

06:02

Sawe becomes first athlete to run a sub-two-hour marathon in a competitive race

Sawe a remporté le marathon de Londres en devenant le premier athlète à courir un marathon en moins de deux heures en compétition, en 1 h 59 min 30 s. Il a passé la première moitié en 1 h 00 min 29 s puis a accéléré pour boucler la seconde moitié en 59 min 01 s, prenant de l'avance après le 30e kilomètre. Le débutant Yomif Kejelcha a pris la deuxième place en 1 h 59 min 41 s et Jacob Kiplimo a complété le podium en 2 h 00 min 28 s. Chez les femmes, Tigst Assefa a conservé son titre à Londres en améliorant le record du monde en course féminine en 2 h 15 min 41 s devant Hellen Obiri et Joyciline Jepkosgei. Dans les épreuves handisport, Marcel Hug a égalé le record de victoires à Londres avec un huitième succès et Catherine Debrunner a de nouveau remporté le titre féminin en fauteuil.

06:02

AI should elevate your thinking, not replace it

Le secteur logiciel se répartit progressivement en deux groupes: ceux qui utilisent l'IA pour éliminer la corvée et se concentrer sur le jugement, et ceux qui l'utilisent pour éviter de penser et simuler des compétences. Les meilleurs ingénieurs délèguent les tâches mécaniques à l'IA tout en comprenant et en défendant ce qui est fait en leur nom, afin d'investir le temps gagné dans la définition du problème, l'analyse des compromis et la production d'idées originales. L'IA accélère la production de code, de résumés et de brouillons, mais elle ne remplace pas le jugement technique qui consiste à repérer des contraintes cachées, définir des abstractions pertinentes et créer une connaissance nouvelle. Pour les débutants, supprimer la friction d'apprentissage avec l'IA empêche l'acquisition d'instinct de débogage, d'intuition système et d'esprit critique, ce qui fragilise les compétences futures. Les responsables doivent apprendre à distinguer output poli et raisonnement réel en ajustant le recrutement, l'évaluation et la culture d'équipe, faute de quoi la qualité organisationnelle et la capacité à générer du jugement se dégraderont.

06:02

Box to save memory in Rust

L'auteur a économisé 475 Mo en modifiant la disposition des structs et la désérialisation JSON d'un programme Rust qui désérialisait des définitions Smithy pour l'AWS SDK. Le code initial utilisait de nombreux champs Option<String> et Option<Struct> imbriqués désérialisés via Serde, ce qui maintenait de grandes structures même lorsque la plupart des champs étaient absents. En Rust, un String occupe 24 octets et un Option<Struct> contenant uniquement des Option<String> ne réduit pas la taille, alors qu'une Option<Box<T>> ne coûte qu'un pointeur quand elle est None. La solution a été de détecter les structs « vides », de les rendre Option<Box<...>> et d'utiliser un désérialiseur personnalisé pour convertir en None les structs dont tous les champs sont absents. La modification a halved l'empreinte mémoire, a ajouté un coût CPU pour désérialiser puis jeter les objets vides, et son impact a été mesuré avec jemalloc.