HN Digest
Briefing personnel.

Lire vite.
Garder l'essentiel.

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

12074 articles Page 370/1208 Sans filtre

Making difficulty curves in games

Les développeurs gèrent une courbe de difficulté en introduisant progressivement et par groupes des mécaniques de jeu pour donner l'impression de progression sans frustrer ou ennuyer le joueur. L'auteur propose le concept de « scie de difficulté » où chaque nouvelle mécanique suit sa propre courbe et où l'on lisse les variations excessives au lieu de rendre le jeu continuellement plus dur. Parmi les bonnes pratiques figurent des collectables optionnels, des chemins alternatifs, des indices visuels, plusieurs façons d'apprendre une mécanique, un entraînement possible et l'ajustement dynamique de la difficulté. Il déconseille de pénaliser les mauvais joueurs, de cacher la mécanique principale d'une énigme, d'imposer des longues cinématiques non skippables dans des zones à essais répétés ou de surcharger d'informations inutiles. Le suivi empirique (localisation des morts, taux de complétion, observation des sessions, retours ciblés) est essentiel pour calibrer la difficulté et il est impossible de concevoir un jeu qui plaise à tout le monde, il faut cibler un public.

Illinois just told every operating system to start reporting your kid's age

L'Illinois a adopté HB5511, la Children's Online Social Media Safety Act, qui oblige les "manufacturiers couverts" — fabricants d'appareils, fournisseurs de systèmes d'exploitation et boutiques d'apps — à intégrer un dispositif de vérification d'âge. D'ici au 1er janvier 2028, ces fabricants doivent proposer lors de la création de compte une interface demandant la date de naissance, convertie en quatre tranches d'âge (moins de 13 ans, 13-15, 16-17, 18+), et toutes les transmissions numériques doivent être chiffrées. Les applications pourront interroger cette tranche via une API et seront réputées avoir "connaissance effective" si le signal indique un mineur, ce qui déclenchera des réglages de sécurité tels que flux restreints, profils masqués aux adultes inconnus, blocage des messages d'adultes, masquage de la localisation précise et silence des notifications entre 22h et 7h, avec possibilité pour les parents d'annuler ces paramètres et pour les mineurs de 16 ans et plus de le faire eux-mêmes. Les applications devront commencer à demander ces signaux au plus tard le 1er juillet 2028 et les violations peuvent entraîner des amendes allant jusqu'à 50 000 dollars par infraction, la procureure générale de l'État assurant l'application de la loi, tandis que les fabricants et applications agissant de bonne foi ne seront pas responsables si un signal est erroné. Contrairement aux lois récentes du Colorado et de la Californie, qui ont ensuite introduit des exemptions pour les systèmes et logiciels distribués sous licences open source, HB5511 ne comporte pas d'exemption explicite pour les projets open source.

_for-sale DNS records

_for-sale est un nom de feuille DNS réservé, défini par la RFC 10023, et un enregistrement TXT publié à _for-sale.example.com signale qu'un domaine est disponible à la vente tout en restant actif. Le TXT doit commencer par le tag obligatoire v=FORSALE1; et comporter au maximum une paire tag=valeur par enregistrement, parmi ftxt=, furi=, fval= et fcod=, chaque chaîne limitée à 255 octets. La convention n'est pas du parking ni un substitut WHOIS : elle coexiste avec un site en service, reste invisible au navigateur et s'adresse principalement aux courtiers et services automatisés qui vérifient les noms. Les bonnes pratiques incluent une paire par enregistrement, un TTL ≤ 3600 secondes, placer le record à un niveau leaf, supprimer le record quand le domaine n'est plus à vendre et signer la zone avec DNSSEC si possible. Il faut éviter de combiner plusieurs paires dans une seule chaîne, de publier le record à titre promotionnel, et de faire confiance sans filtrage aux ftxt/furi ; on vérifie l'existence, le TTL et la signature via dig (TXT et +dnssec).

Incentives are for losers

L'auteur critique l'explication par les incitations comme trop répandue et tautologique, car elle suppose qu'il est normal d'obéir aux récompenses. Il soutient que fonder sa vie sur des incitations mène à une absence de convictions et que développer un sens du but personnel est essentiel pour résister aux appétits de statut, d'argent et de pouvoir. Des recherches sociologiques et psychologiques, évoquant le « déisme thérapeutique moralisant » et l'illusion de profondeur explicative, montrent que beaucoup de gens n'ont que des croyances morales et religieuses superficielles. L'auteur raconte comment des confrontations brutales avec la réalité, comme l'écart entre conférences académiques et misère de rue ou l'exemple de Charles Sumner, peuvent provoquer un réveil moral poussant à désobéir aux incitations. Il conclut qu'il faut chercher à améliorer les systèmes d'incitations tout en cultivant le courage et la fermeté morale de faire ce qui est juste malgré les récompenses, citant la nécessité d'une « colonne vertébrale » chez les dirigeants.

Fastmail offers EU data region

Fastmail propose désormais de placer la copie principale des données dans l'Union européenne en hébergeant ses propres serveurs à Amsterdam, alors qu'auparavant tous les comptes étaient stockés aux États-Unis. L'infrastructure utilise du matériel et des logiciels appartenant à Fastmail, avec chiffrement au repos, réplicas et gestion par l'équipe interne plutôt que des services cloud loués. Le choix de région fait vivre la copie primaire en UE ou aux États-Unis selon votre sélection, les applications se connectent préférentiellement à cette région et basculent vers d'autres emplacements si le site principal est indisponible. Certaines données et services restent partagés ou situés aux États-Unis, notamment les sauvegardes d'urgence à Philadelphie, des métadonnées, les journaux systèmes et des prestataires tiers, et l'entreprise reste soumise au droit australien pour les demandes légales. Fastmail a pré-sélectionné des comptes selon l'adresse de facturation, permet de changer de région via les paramètres avec migration des données, et précise qu'il n'existe pas de garantie que les données restent uniquement en UE et qu'aucun surcoût n'est appliqué pour le choix européen.

Shopify replaced Redis with MySQL for inventory reservations–and it scaled

Pendant la finalisation d'un achat, il faut garantir que les articles sont encore disponibles pour éviter des doubles ventes ou des ventes manquées, un enjeu critique à l'échelle de Shopify où les transactions atteignent des millions par minute lors des pics. Le modèle précédent utilisait Redis pour les réservations mais séparait réserve et débit définitif entre Redis et MySQL, ce qui rendait impossible une opération atomique et introduisait des risques d'oversell, d'undersell, l'absence de prise en compte multi‑emplacements et des coûts opérationnels supplémentaires. La nouvelle approche repose sur MySQL avec une ligne par unité vendable exploitant SKIP LOCKED et une piscine bornée (1 000 lignes par couple article/lieu) alimentée par un processus de réapprovisionnement unique pour absorber les rafales sans balayages excessifs ni thundering herd. Des choix techniques clés ont permis la montée en charge : clé primaire composite pour réduire les verrous, isolation READ COMMITTED pour éviter les gap locks, ordre d'acquisition de verrous cohérent pour prévenir les deadlocks, et agrégation des réservations par UNION ALL; la bascule a été faite en mode shadow avec double écriture Redis/MySQL puis migration progressive. Le goulot réel était l'épuisement des connexions, découvert en annotant les requêtes et en mesurant le temps de connexion via ProxySQL, ce qui a permis d'optimiser d'autres parties du parcours de checkout, d'ajuster la configuration InnoDB et d'atteindre finalement les objectifs de débit sans oversells; les enseignements principaux sont de réexaminer d'anciennes décisions et de prototyper petit pour observer.

Dithered QR Codes

Un code QR est une grille de modules comprenant des motifs fonctionnels très visibles servant à l'alignement et des modules de données modifiables où l'information est stockée. En réduisant les modules de données (par exemple en divisant chaque module en une grille 3×3 et en réservant le centre pour l'information) on peut intégrer une image binaire basse résolution au milieu d'un "bruit" de sel-et-poivre. Pour éviter un simple seuillage on utilise le tramage (Bayer) et surtout la diffusion d'erreur de Floyd‑Steinberg, qui propage les erreurs de quantification vers les pixels voisins pour obtenir des demi‑tons plus naturels et moins distrayants. En appliquant une double diffusion d'erreur — une première passe qui fixe les couleurs des modules de données connus et répartit les grosses erreurs sur l'entourage, puis une passe classique — on obtient une image beaucoup plus propre, et bien que l'on puisse aussi modifier quelques modules grâce à la correction d'erreurs cela compromet la robustesse du code. En pratique ces codes fonctionnent bien sur grands supports si l'on n'en abuse pas, mais il faut accepter le compromis esthétique/fiabilité, prévoir des marges d'encadrement adaptées (et faire attention au flou des navigateurs lors du redimensionnement) et respecter la couleur de marge opposée au centre des repères afin d'assurer la lecture.