HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

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

3175 articles Page 234/318 Sans filtre

07:04

Stop Putting Secrets in .env Files

L’auteur met en évidence les risques des fichiers .env en clair, qui se copient dans Slack, s’accumulent dans de nombreux projets et exposent les secrets si l’ordinateur est compromis. Au lieu de stocker les secrets sur disque, il propose de les injecter à l’exécution à partir d’un coffre sécurisé via un wrapper script. Deux approches sont détaillées: l’utilisation de 1Password CLI avec des références secrètes et un script wrapper, ou l’utilisation du macOS Keychain. Parmi les avantages figurent une source de vérité unique, un onboarding simplifié et des capacités d’audit, tout en évitant que les secrets restent en clair sur le disque. L’auteur invite à tester le motif avec le dépôt d’exemple et affirme que ce petit changement peut transformer durablement la gestion des secrets même pour des projets personnels.

07:04

President Trump bans Anthropic from use in government systems

Le président Trump a ordonné à l’ensemble de l’administration fédérale de cesser d’utiliser les produits d’Anthropic, marquant une escalade dans le différend sur l’usage militaire de l’IA. Le Pentagone a désigné Anthropic comme risque de chaîne d’approvisionnement à la sécurité nationale et a interdit à ses contractants de travailler avec l’entreprise. OpenAI a annoncé avoir conclu un accord avec le Département de la Défense pour fournir sa technologie dans des réseaux classifiés, assorti de garde-fous. Anthropic a annoncé son intention de contester cette désignation en justice et a dénoncé des risques juridiques, ainsi qu’un précédent dangereux pour les entreprises faisant affaire avec le gouvernement. Le différend met en lumière les questions de surveillance domestique, de capacités autonomes et de l’équilibre entre régulation publique et activité privée dans le domaine de l’IA militaire.

07:04

Distributed Systems for Fun and Profit

Ce texte offre une introduction accessible aux systèmes distribués en réunissant les idées derrière Dynamo, BigTable, MapReduce et Hadoop et en présentant les concepts clés, les abstractions et les modèles utiles pour lire des textes plus avancés. Il identifie deux grandes contraintes de la distribution: la vitesse de propagation limitée par la lumière et la défaillance indépendante des composants, qui façonnent l’espace des architectures possibles et les interactions entre distance, temps et cohérence. Il décrit les abstractions et modèles (modèle système asynchrone/synchrone, modèle de défaillance et modèle de cohérence) et explique les notions de scalabilité, disponibilité et latence, ainsi que les techniques de partition et de réplication. Le texte explore les approches de réplication en cohérence forte (logique 1PC/2PC, Paxos/Raft et systèmes tolérants aux partitions) et les approches à cohérence faible comme Dynamo, les quorums partiels, la réconciliation lors des lectures et l’usage des CRDTs et du théorème CALM. Il aborde aussi les sujets de détection de défaillances, de temps et d’ordre (horloges, horloges vectorielles, détection par timeouts), et présente des concepts comme PBS et la convergence, avec des suggestions de lectures complémentaires.

07:04

Semantic Syntax Highlighting for Lisp in Emacs

Ce mode mineur propose une coloration syntaxique sémantique pour les langages Lisp dans Emacs, fondée sur les informations de l'environnement lexical. Il s'appuie sur des API d'interrogation d'environnement du CLtL2 et sur l'injection de code pour améliorer la prise en charge des macros. Pour l'utiliser, chargez le fichier lisp-semantic-hl.el, puis activez le mode lisp-semantic-hl dans emacs-lisp-mode ou dans lisp-mode. Un exemple de configuration avec MELPA illustre l'utilisation via use-package et le recours à des hooks sur emacs-lisp-mode et lisp-mode. Les remerciements indiquent que le plugin a été porté depuis le plugin LispWorks nommé « colourful », et évoquent des soutiens et des identités soutenant le projet.

07:04

Court finds Fourth Amendment doesn’t support broad search of protesters’ devices

La cour d’appel du Tenth Circuit a renversé le rejet par le tribunal inférieur d’une action en droit civil visant des mandats de perquisition couvrant largement les appareils et les données numériques d’un manifestant et les données sociales d’une organisation à but non lucratif. L’affaire Armendariz v. City of Colorado Springs est née après une protestation sur le logement en 2021 au cours de laquelle la police a arrêté des manifestants pour obstruction et a obtenu des mandats pour saisir et fouiller les données et les appareils de Jacqueline Armendariz Unzueta. Les mandats prévoyaient une fouille de toutes ses photos, vidéos, courriels, messages et données de localisation sur deux mois, ainsi qu’une recherche illimitée dans 26 mots-clés couvrant des années de données privées. Le district court a rejeté la plainte et les plaignants ont interjeté appel, soutenus par l’ACLU du Colorado, tandis que l’EFF et d’autres organisations de défense des droits civiques ont déposé un mémoire amicus en soutien. En appel, la cour a estimé que les mandats étaient surdimensionnés et insuffisamment précis, a jugé que les autorités violaient le droit établi et a renvoyé l’affaire au district pour poursuivre, marquant une avancée pour les droits des manifestants et la protection de la vie privée numérique.

07:04

Otters as Bioindicators of Estuarine Health

Le texte présente les loutres comme indicateurs biologiques et expose le raisonnement scientifique soutenant leur utilisation pour évaluer les écosystèmes estuariens. Il analyse la dépendance des habitats et la connectivité du paysage, éléments clés de l’efficacité des loutres en tant que bioindicateurs. Le document traite aussi de la bioaccumulation des contaminants à travers les niveaux trophiques et des expositions pathogènes ainsi que des dynamiques de spillover. Il discute des proxys comportementaux et trophiques pour l’évaluation de la fonction des écosystèmes et d’un panorama de la recherche mondiale sur les loutres. Enfin, il propose un cadre opérationnel pour une surveillance estuarienne fondée sur les loutres, complété par des sections sur l’éthique, les données et les contributions des auteurs.

07:03

Building secure, scalable agent sandbox infrastructure

Nous avons commencé avec des agents basés sur le navigateur sur AWS Lambda, puis ajouté l’exécution de code dans un sandbox isolé. L’exécution de code dans le sandbox partageait toujours le même backend que l’API, entraînant des ralentissements et des enjeux de sécurité. Il existe deux patterns de sandboxing : isoler l’outil, où le code s’exécute dans un sandbox séparé sur votre infrastructure, ou isoler l’agent, où tout se passe dans une sandbox sans secrets via un plan de contrôle. Nous sommes passés du Pattern 1 au Pattern 2, le plan de contrôle détenant les secrets et les accès, et les sandboxes devenant jetables. Le sandbox tourne en production sur Unikraft et sur Docker en développement, et il est durci par l’exécution en bytecode uniquement, le retrait des privilèges et la suppression des variables d’environnement, le tout relié au plan de contrôle qui gère les appels et les coûts via des URLs pré-signées.

07:03

We gave terabytes of CI logs to an LLM

La détection a relié un échec flaky à une mise à jour d’une dépendance en écrivant ses propres requêtes SQL et en balayant des hundreds de millions de lignes de logs sur plusieurs mois, l’enquête ne prenant que quelques secondes. Pour cela, l’agent nécessite un contexte global : toutes les builds et tous les logs, ce qui représente environ 1,5 milliard de lignes CI et 700 000 jobs par semaine, stockés dans ClickHouse avec un taux de compression de 35:1. L’agent interroge deux cibles principales : les métadonnées des jobs via une vue matérialisée (63 % des questions) et les lignes de log brutes (37 %), sans bibliothèque de requêtes prédéfinie. La dénormalisation de 48 colonnes par ligne et le format colonne de ClickHouse permettent de compresser fortement les métadonnées répétées et d’éviter les jointures coûteuses. Pour l’ingestion, GitHub impose 15 000 requêtes par heure par installation et le système applique un throttling d’environ 3 requêtes par seconde, avec une cible P95 d’ingestion sous 5 minutes et une exécution durable qui reprend là où elle s’était arrêtée.

07:03

Can you reverse engineer our neural network?

De nombreux casse-têtes ML de type capture-the-flag présentent un réseau en boîte noire, et nous avons choisi de proposer une approche différente en fournissant une spécification complète des poids. Le puzzle a été publié en février et semblait initialement insoluble, car on ne pouvait pas obtenir une sortie non nulle par des méthodes classiques comme la rétropropagation. En examinant l’avant-dernière couche, Alex remarqua que les poids formaient des répétitions et que les biais encodaient des vecteurs v, v+1 et v+2, ce qui expliquait pourquoi la couche finale n’émettait qu’un seul bit. Il tenta d’abord de modéliser le réseau comme un programme linéaire puis comme un problème SAT après des réductions importantes, mais le problème restait massif et échappait à une résolution par brute force. Finalement, il apparut que le hash était encodé dans les biais et que la solution consistait en deux mots anglais en minuscules séparés par un espace, après quoi une autre variation du puzzle et une invitation à candidater furent publiées.

07:03

Allocating on the Stack

Go cherche à rendre les programmes plus rapides en réduisant les allocations sur le tas et le travail du ramasse-miettes. Les allocations sur la pile sont généralement bien plus économiques et peuvent être libérées avec le cadre de pile sans impliquer le GC. Des optimisations permettent d'allouer des slices de taille connue ou estimée sur la pile, évitant les réallocations et le coût de démarrage. Avec Go 1.25 et 1.26, le compilateur transforme automatiquement certaines allocations de slices et peut utiliser un petit tampon sur la pile, puis passer au heap si nécessaire. L'objectif est d'obtenir zéro allocation sur le heap dans les cas fréquents et d'améliorer l'efficacité mémoire sans changer l'API.