HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

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

7695 articles Page 1/770 Sans filtre

06:05

Self-host your mail server

L'auteur affirme qu'en 2026 il est possible d'auto-héberger un serveur mail, y compris depuis un accès domestique si l'on dispose d'une IPv4 statique non blacklistée, sans CGNAT, avec possibilité de modifier le PTR et d'ouvrir les ports mail courants. Pour le logiciel serveur il recommande docker-mailserver comme point de départ mais cite aussi Stalwart, Mailcow ou une configuration manuelle, et rappelle l'importance des enregistrements DNS essentiels SPF, DKIM, DMARC, MX et du PTR. Il explique que la robustesse du protocole SMTP permet la tolérance aux coupures internet courtes et conseille de tester la délivrabilité avec des outils comme mail-tester.com. La gestion du spam a été radicalement améliorée en intégrant des LLM locaux via le plugin GPT de rspamd, en utilisant par exemple le modèle Gemma 4 12B QAT hébergé localement avec llama.cpp pour classifier les mails sans appels externes. Enfin il évoque des clients conseillés comme Thunderbird ou des webmails (MailFlow, Kurrier, SnappyMail, Roundcube), insiste sur la nécessité des sauvegardes et des mises à jour, et conclut que l'auto-hébergement d'email est viable pour la souveraineté des données.

06:05

Proving a human wrote something

L'auteur commence par s'excuser de son absence et explique avoir voulu reprendre l'écriture après la dissolution de sa société et d'autres projets publiés. Il dit utiliser l'IA quotidiennement au travail pour coder, automatiser des tâches et améliorer la pratique plutôt que la rejeter. Il exprime une inquiétude que l'usage fréquent de l'IA émousse sa pensée et qu'il préfère conserver l'effort mental propre à la programmation et à l'écriture. Pour distinguer texte humain et texte généré, il présente Semoi, un plugin qui enregistre le temps et les frappes au clavier, chiffre ces métadonnées et produit un certificat prouvant l'authenticité de la rédaction. Il reconnaît les limites et les contournements possibles de la méthode mais espère que ce projet encouragera d'autres idées et développements.

06:05

AMD and Cerebras Launch AI Inference Solution

AMD et Cerebras annoncent un partenariat technique pour une solution d'inférence disagrégée combinant les systèmes rackscale AMD Helios et le Cerebras Wafer-Scale Engine. La solution associe la capacité de traitement et l'évolutivité d'AMD Helios à la génération de tokens ultra-faible latence du Wafer-Scale Engine afin d'optimiser indépendamment débit et latence. Les partenaires indiquent un gain pouvant atteindre 5x en tokens par seconde par watt d'après des modélisations internes et prévoient une disponibilité initiale via Cerebras Cloud au second semestre 2026. L'offre vise à répondre à des cas d'usage sensibles à la latence comme les copilotes en temps réel, les agents autonomes et la robotique tout en supportant les charges à haut volume de tokens. Le communiqué précise également des mises en garde et risques prospectifs des deux entreprises concernant le calendrier, la disponibilité, la performance et d'autres incertitudes pouvant affecter les résultats réels.

06:05

The road to epsilon-zero: Nim always ends, even with infinite ordinals

L'article étend le jeu de Nim avec des « jetons verts » représentant des piles infinies (notées ω) qu'un joueur peut remplacer par n'importe quel nombre fini de haricots, ce qui empêche de donner a priori une borne sur la durée totale de la partie. Toutefois, on peut affirmer que, même si la durée totale est inconnue, au bout d'un nombre fini de coups on éliminera les jetons ω et deviendra alors possible de borner le nombre de coups restants, comme l'illustre la position contenant ω en plus de piles finies (l'article donne l'exemple numérique de 17 coups pour l'étape initiale). Cette idée se généralise aux empilements ω·2, ω·n+m et même aux ordres plus complexes comme ω^2: à chaque étape les haricots et les jetons ω finis s'épuisent, forçant finalement le remplacement des niveaux infinis jusqu'à retomber dans un cas fini. La raison profonde est que les ordinaux sont bien-fondés: chaque coup diminue un ordinal associé à la position et on ne peut pas descendre indéfiniment sans atteindre zéro, ce qui garantit l'arrêt. Cela fait le lien avec la vérification de terminaison en programmation, car les ordres bien-fondés fournissent la mesure qui prouve qu'une fonction récursive s'arrête, et l'article annonce une approche plus uniforme pour comprendre les tas infinis de Nim.

06:04

Codeberg Divides

Codeberg a modifié ses conditions pour exclure les projets majoritairement écrits par des outils d'IA générative, ce qui soulève des questions pour la concurrence avec GitHub. L'auteur reconnaît que Codeberg est en droit de le faire mais souligne que la démocratie interne ne garantit pas des décisions inclusives, prévisibles ou neutres pour l'infrastructure logicielle. Le libellé sur "principalement" est ambigu et difficile à appliquer en pratique, laissant trop de latitude aux modérateurs et à des normes communautaires potentiellement plus strictes. L'auteur suggère soit d'interdire toute implication de LLM, soit de cibler spécifiquement le spam autonome et l'abus de ressources, et note que la communauté se divise sur les LLM alors que ces outils deviennent partie intégrante de la création logicielle. Il souhaite que Codeberg soit une alternative européenne large et fiable à GitHub plutôt qu'une petite communauté à forte identité politique, et estime que la décision prise n'est pas la meilleure pour cet objectif.

06:04

Extending Polars with Rust Expression Plugins

Fenic est une bibliothèque DataFrame sémantique conçue pour construire des pipelines AI/LLM sur des données textuelles désordonnées en s'appuyant sur Polars comme moteur d'exécution local. Les UDF Python se sont révélées insuffisantes pour les opérations textuelles à grande échelle en raison de leur lenteur, de la rupture de la composition et de l'absence de types déclarés aptes à s'intégrer dans un plan paresseux. La solution a été d'écrire neuf plugins d'expression en Rust via pyo3-polars, ce qui transforme ces opérations en expressions Polars natives exécutées en moteur, vectorisées sur Arrow, avec des dtypes déclarés et une composition transparente avec les opérateurs natifs. Techniquement, chaque plugin exporte une fonction #[polars_expr] qui reçoit &[Series] et retourne Series, doit déclarer son type de sortie (fixe, dépendant des champs d'entrée ou des kwargs), lit les buffers Arrow en zéro-copie via des convertisseurs génériques et respecte l'invariant is_elementwise et les règles de broadcasting tout en construisant les sorties avec des builders efficaces. Le gain se mesure en pipelines monolithiques planifiés et exécutés en une passe, en validations à la planification et en possibilité d'exposer la même logique Rust comme fonctions Python, la contrepartie étant un couplage serré des versions Polars et la recommandation d'utiliser un plugin quand l'opération est élémentaire, déclarable en dtype et doit rester dans l'engin.

06:04

DuckPGQ – A DuckDB community extension for graph workloads

DuckPGQ est une extension communautaire pour DuckDB qui ajoute des capacités de requêtes de graphe conformes au standard SQL/PGQ. Elle exploite DuckDB pour offrir des performances élevées en analyse de graphes en processus et s'installe facilement via les commandes INSTALL et LOAD dans plusieurs langages. La documentation montre comment créer des graphes de propriétés à partir de tables et propose des exemples d'utilisation sur des domaines variés comme les réseaux sociaux, les données aériennes et financières. Des requêtes illustratives incluent le calcul du plus court chemin, la recherche d'amis mutuels, le classement des personnes les plus populaires et l'analyse de transferts ou de billets selon différents critères. Le projet, dirigé par Daniël ten Wolde, est en cours de recherche et développement, libre et communautaire, et les utilisateurs sont invités à signaler des bugs et à contribuer.

06:04

The front end framework for correctness: built on Effect, architected like Elm

Foldkit est un framework frontend écrit en TypeScript, construit sur Effect et inspiré de l'architecture Elm, qui prescrit une structure applicative pour favoriser la correction. L'état de l'application est centralisé et immuable : un unique modèle reçoit tous les Messages et toutes les modifications passent par une fonction update pure, évitant mutations cachées et fermetures obsolètes. Les effets secondaires sont explicites et représentés comme valeurs (Commands/Effects) retournées depuis update, tandis que le runtime gère leur exécution et leur ordonnancement. Le framework fournit un écosystème complet avec routage typé, composants accessibles, sous-modèles, abonnements, ressources gérées, validation de champs, primitives de test et DevTools avec historique et time-travel. Cette discipline améliore la maintenabilité et l'onboarding mais demande d'adopter Effect et Elm-like patterns, ce qui rend Foldkit peu adapté aux migrations incrémentales depuis de larges bases React ou aux besoins immédiats de SSR et d'écosystèmes React.