10 interesting stories served every morning and every evening.

Using AI to write better code more slowly

nolanlawson.com

A lot of peo­ple seem con­vinced that the point of AI cod­ing is to write low-qual­ity code as fast as pos­si­ble. Spew out barely-pass­able slop, open mas­sive PRs, and merge them un­vet­ted. Ship it!

But the thing is, LLMs are very flex­i­ble. And you can use them just as ef­fec­tively to write high-qual­ity code more slowly.

This state­ment seems com­pletely ob­vi­ous to me at this point, and I al­most did­n’t want to write this post for that rea­son. But there seem to be enough peo­ple con­vinced that LLMs are only good as slop can­nons that it’s worth mak­ing the op­po­site case.

If Mythos taught us any­thing, it’s that LLM agents are re­ally good at find­ing bugs. Throw them at a code­base enough times, and they will find so many bugs that you’ll barely know what to do with them.

Like many oth­ers, I’ve also found this is true of non-Mythos mod­els — some may be bet­ter than oth­ers at find­ing sub­tle bugs or avoid­ing false pos­i­tives, but the fact is that the lat­est pub­lic mod­els from Anthropic and OpenAI are good enough to find plenty of bugs in an un­scru­ti­nized code­base.

The prob­lem is not so much find­ing the bugs, but in­stead pri­or­i­tiz­ing and val­i­dat­ing them. For this rea­son I have a Claude skill I adapted from this ar­ti­cle‘s core in­sight, which is that the more, dif­fer­ent mod­els you throw at a PR re­view, the less likely you are to get hal­lu­ci­na­tions or bo­gus bugs.

The skill says (paraphrasing):

Run a Claude sub-agent, Codex, and Cursor Bugbot to find bugs in this PR ranked by crit­i­cal/​high/​medium/​low. Once they’re all done, re­view their find­ings, do your own re­search to rule out false pos­i­tives, and write a fi­nal re­port.

Run a Claude sub-agent, Codex, and Cursor Bugbot to find bugs in this PR ranked by crit­i­cal/​high/​medium/​low. Once they’re all done, re­view their find­ings, do your own re­search to rule out false pos­i­tives, and write a fi­nal re­port.

That’s ba­si­cally it. You can add your own de­f­i­n­i­tion of bug” if you want — mine has stip­u­la­tions about the KISS and DRY prin­ci­ples, writ­ing ac­ces­si­ble HTML/JSX, us­ing proper in­dexes for SQL queries, etc.

In my ex­pe­ri­ence, this skill al­ways finds tons of bugs in a PR, and the false pos­i­tive rate is near zero. It finds so many bugs that you’ll be bored sense­less if you try to tackle them all. They’ll range from crit­i­cal se­cu­rity or cor­rect­ness bugs to the more mun­dane medium-level perf bugs to low-level this com­ment is mis­lead­ing”-type bugs.

My typ­i­cal work­flow is:

Have an agent fix all the crit­i­cals and highs (with my guid­ance on the proper so­lu­tion), then re­peat un­til no crit­i­cals/​highs

Skip highs/​medi­ums where the juice is­n’t worth the squeeze (e.g. 100 lines of code to fix a nar­row edge case)

Abandon the PR if it has so many crit­i­cals that I re­al­ize the whole ap­proach is mis­guided

When I use this tech­nique, I haven’t nec­es­sar­ily seen my ve­loc­ity go up. If any­thing, the re­view process of­ten finds pre-ex­ist­ing bugs, so I end up on a tan­gen­tial side-quest where I’m writ­ing unit tests and fix­ing sub­tle flaws that pre-date the PR. This is the op­po­site of the 10x pro­duc­tiv­ity” slop-can­non style of de­vel­op­ment that most peo­ple imag­ine when they think of vibe cod­ing, but I find it very sat­is­fy­ing.

It’s a great way to im­prove the over­all health of the code­base while also teach­ing you about the odd cor­ners of it. In my ex­pe­ri­ence, the happy-path of a com­plex ar­chi­tec­ture is less in­ter­est­ing than its fail­ure modes. And pre-LLMs, this is usu­ally how I got fa­mil­iar with a code­base any­way: un­der­stand­ing where the as­sump­tions break down, and then get­ting my hands dirty to fix it.

If you’re the kind of per­son who is skep­ti­cal that AI cod­ing is good for any­thing, then I doubt this post will per­suade you. But if you’re the kind of de­vel­oper who uses agents to write multi-hun­dred-line PRs that you barely un­der­stand your­self, I’d in­vite you to slow down a bit and try this other, slower style of vibe cod­ing.” Ask an agent how your PR works and how it might fail. Have it write Markdown docs with Mermaid charts if nec­es­sary. Use Matt Pocock’s /grill-me skill un­til you un­der­stand the en­tire PR front-to-back.

You might not be more productive” in terms of raw lines of code. You might burn a ton of to­kens just to find out that your en­tire plan was wrong­headed from the start. But I find this style of cod­ing to be a more su­per-pow­ered ver­sion of the kind of pro­gram­ming I was al­ready try­ing to do be­fore LLMs: care­ful, me­thod­i­cal, qual­ity-ob­sessed, fo­cused on mak­ing things bet­ter for the next coder.

So take a deep breath, slow down, try this tech­nique, and see if you don’t en­joy writ­ing bet­ter code more slowly.

GitHub Status

www.githubstatus.com

Resolved - On May 12, 2026, be­tween 13:41 and 17:43 UTC, some ser­vices ex­pe­ri­enced de­lays in pro­cess­ing. For the Code Scanning ser­vice, 53% of check runs took over 15 min­utes to com­plete. Additionally, no­ti­fi­ca­tions took an av­er­age of 22 min­utes to be de­liv­ered and Slack in­te­gra­tion web­hooks took an av­er­age of 20 min­utes to be de­liv­ered. The de­lays were caused by repli­ca­tion lag due to an in­ter­nal data­base mi­gra­tion, re­sult­ing in in­suf­fi­cient worker ca­pac­ity for our high rate of job en­queues.

We mit­i­gated the im­pact by scal­ing our pro­cess­ing work­ers to han­dle the in­creased load. All ser­vices re­turned to nor­mal pro­cess­ing times af­ter the mit­i­ga­tion was ap­plied.

We are work­ing to cre­ate ded­i­cated worker pools for some of our high us­age shared queues to help pre­vent this in the fu­ture.

Update - All ser­vices have fully re­cov­ered.

May 12, 17:43 UTC

Update - CodeQL has fully re­cov­ered. We’re con­tin­u­ing to work on re­cov­ery for the re­main­ing im­pacted ser­vices.

May 12, 16:59 UTC

Update - Webhooks have fully re­cov­ered. Continuing to work on re­cov­ery for the other ser­vices.

May 12, 16:29 UTC

Update - Webhooks is op­er­at­ing nor­mally.

May 12, 16:28 UTC

Update - We’ve es­tab­lished that most de­lays are re­lated to a queu­ing ser­vice and are work­ing to scale out. Early sig­nals from the scale-out are show­ing signs of re­cov­ery for some ser­vices. We’ll pro­vide an up­date when ser­vices are fully re­cov­ered.

May 12, 16:18 UTC

Update - Webhooks is ex­pe­ri­enc­ing de­graded per­for­mance. We are con­tin­u­ing to in­ves­ti­gate.

May 12, 15:44 UTC

Update - We’re con­tin­u­ing to in­ves­ti­gate is­sues with CodeQL ac­tions work­flows. We’re ad­di­tion­ally see­ing de­lays for no­ti­fi­ca­tions, web­hooks, and the Slack in­te­gra­tion.

May 12, 15:42 UTC

Update - CodeQL ac­tions are cur­rently ex­pe­ri­enc­ing de­lays, which may re­sult in those ac­tions be­ing stuck in a pend­ing state or hav­ing failed due to a time­out.

May 12, 15:13 UTC

Investigating - We are in­ves­ti­gat­ing re­ports of de­graded per­for­mance for CodeQL

May 12, 14:38 UTC

reuters.com

www.reuters.com

Please en­able JS and dis­able any ad blocker

www.apa.org

Netherlands blocks US takeover of vital digital supplier

www.politico.eu

Tony Blair’s con­sul­tancy dou­bles down on AI and re­struc­tures in Europe

The move will af­fect its re­cently opened Brussels of­fice.

May 22

1 min read

EU so­cial me­dia ban could come this sum­mer, von der Leyen says

Commission chief says EU can learn from pioneer” Australia in im­pos­ing min­i­mum age for so­cial me­dia.

May 12

2 mins read

OpenAI of­fers EU ac­cess to new AI hack­ing model

European cy­ber and AI au­thor­i­ties in past weeks failed to gain ac­cess to su­per­hack­ing AI, caus­ing anx­i­ety among of­fi­cials.

May 11

3 mins read

The Front Page

thefrontpage.dev

Hacker News

1h, 42p, 4 com­ments

Chemistry be­hind the Garden Grove chem­i­cal tank

The ar­ti­cle em­pha­sizes ur­gent changes, de­tail­ing crit­i­cal steps and their im­pli­ca­tions, of­fer­ing in­sights into cur­rent de­vel­op­ments.

5h, 80p, 13 com­ments

The Ballad of TIGIT

The ar­ti­cle chron­i­cles the rise and cat­a­strophic fail­ure of TIGIT-targeted can­cer drugs, a class once hailed as the suc­ces­sor to Keytruda. Driven by strong pre­clin­i­cal the­ory—TIGIT was be­lieved to be a crit­i­cal im­mune check­point ex­ploited by tu­mors—phar­ma­ceu­ti­cal gi­ants like Roche, Merck, and AstraZeneca poured bil­lions into de­vel­op­ing anti-TIGIT an­ti­bod­ies. Roche’s tiragolumab showed early promise in phase 2 tri­als, prompt­ing a mas­sive par­al­lel trial pro­gram (SKYSCRAPER) across dozens of can­cer types. However, the en­tire class ul­ti­mately failed: Roche’s flag­ship phase 3 tri­als missed their end­points, Merck halted its vi­bostolimab pro­gram due to safety and ef­fi­cacy is­sues, and even the last hope—Ar­cus’s Fc-silent an­ti­body dom­vanal­imab—failed in a phase 3 trial. The analy­sis es­ti­mates nearly 49,000 pa­tients en­rolled and over $3 bil­lion spent on a hy­poth­e­sis that proved in­cor­rect. The piece con­cludes that TIGIT was not nonsense” but rep­re­sented sound trans­la­tional bi­ol­ogy that sim­ply did not trans­late into clin­i­cal ben­e­fit, serv­ing as a hum­bling les­son that not every bi­o­log­i­cal brake is ther­a­peu­ti­cally ac­ces­si­ble.

5h, 58p, 43 com­ments

Launch HN: Minicor (YC P26) — Windows desk­top au­toma­tions at scale

Minicor è una pi­attaforma che con­sente di creare e ge­stire au­tomazioni desk­top su larga scala, con­sen­tendo alle aziende di col­le­gare sis­temi in­for­matici legacy con soluzioni AI; sup­port We need to fol­low the in­struc­tion: Summarize the main con­tent, ig­nor­ing nav­i­ga­tion etc. Summarize con­cisely, one para­graph, jour­nal­is­tic style, plain text, no mark­down, but we can use and tags for im­por­tant points, names, places, text. Must not in­clude Certainly!” etc. Also must not men­tion Certainly!” etc. Also must not men­tion Cloudflare etc. If any block, re­spond Summary not avail­able.” But we have con­tent; we can pro­duce sum­mary.

We need to sum­ma­rize main con­tent: Minicor is a scal­able desk­top au­toma­tion plat­form, backed by Y Combinator, SOC2, HIPAA, en­abling AI to in­ter­act with legacy desk­top apps via agents that self-heal, de­ploy any­where, built-in ob­serv­abil­ity, etc. Summarize con­cisely, one para­graph, jour­nal­is­tic style, us­ing and for im­por­tant points, names, places, text. Use HTML tags for em­pha­sis.

We need to iden­tify im­por­tant points: Minicor”, Y Combinator”, SOC 2 Type II, HIPAA Compliant”, Self-Healing Agents”, Deploy Anywhere”, Built-in Observability”, API call trig­gers work­flow”, Scale to 25,000 pa­tients/​day”, Desktop App”, Workflow Editor”, Replay record­ings”, Slack alerts”. Also men­tion Book a Demo” maybe not needed.

We need to write in plain prose, but we can em­bed and tags around key terms. For ex­am­ple: Minicor is a scal­able desk­top au­toma­tion plat­form backed by Y Combinator and SOC 2 Type II cer­ti­fied, HIPAA com­pli­ant.” Then men­tion self-heal­ing etc.

Make sure it’s one para­graph, no

4h, 152p, 375 com­ments

The real cost of own­ing a home

The Real Cost of Owning aHome by Eric Turner out­lines hid­den ex­penses that of­ten ex­ceed rent, de­tail­ing mort­gage set­tle­ment costs av­er­ag­ing 12,777.92 dol­lars, monthly pay­ments where 80 % of the first pay­ment is in­ter­est, on­go­ing prop­erty taxes, in­sur­ance, manda­tory PMI and its even­tual re­moval, and cu­mu­la­tive Maintenance & Repairs that can reach tens of thou­sands of dol­lars, plus home im­prove­ments and ris­ing util­ity costs dri­ven by higher elec­tric­ity rates, sig­nif­i­cant sell­ing ex­penses of roughly ten per­cent of home value, and long‑term ap­pre­ci­a­tion that only jus­ti­fies pur­chase if own­er­ship spans many years. This com­pre­hen­sive break­down sug­gests that buy­ing a house is fi­nan­cially sen­si­ble only when the owner plans to stay long enough for ap­pre­ci­a­tion to out­weigh these cu­mu­la­tive costs.

6h, 52p, 22 com­ments

Are we self-sov­er­eign PKI yet?

The ar­ti­cle ar­guesthat self‑sov­er­eign PKI re­mains un­at­tained, point­ing out that even end‑to‑end en­crypted ser­vices like Signal and iMes­sage still hinge on server hon­esty and that cur­rent cer­tifi­cate au­thor­i­ties are cus­to­dial and vul­ner­a­ble to BGP leaks or CA com­pro­mise, whereas Spaces of­fers a novel ap­proach by bind­ing hu­man‑scale iden­ti­fiers such as grace@key to pub­lic keys through a Bitcoin‑anchored Merkle trie, us­ing a 32‑byte trust‑an­chor hash ver­i­fied by a light­weight client Veritas, with plans for zero‑knowl­edge cer­tifi­cates that func­tion as a CA with­out a pri­vate key, thereby elim­i­nat­ing the need for re­peated fin­ger­print ver­i­fi­ca­tion.

15h, 109p, 84 com­ments

Performance of Rust Language [pdf]

The page dis­cusses GitHub’s AI-powered tools such as Yugr/Rust Slides, fo­cus­ing on code en­hance­ment, se­cu­rity fea­tures, and de­vel­oper work­flows. It high­lights fea­tures like Copilot for Business, en­ter­prise se­cu­rity, and best prac­tices for Rust pro­gram­ming. The con­tent out­lines uses in mod­ern­iz­ing ap­pli­ca­tions, en­sur­ing code safety, and main­tain­ing se­cu­rity stan­dards. It also men­tions in­te­gra­tions, ad­vanced se­cu­rity pro­tec­tions, and de­vel­op­ments for dif­fer­ent team sizes and in­dus­tries.

2h, 37p, 3 com­ments

Modern Blu-ray dri­ves can now rip GameCube, Wii, and Xbox 360 games to PC

A third-party firmware called OmniDrive now en­ables se­lect Blu-ray dri­ves with the MediaTek MT1959 chipset (from brands like Asus, LG, Buffalo, and Verbatim) to rip phys­i­cal games from GameCube, Wii, orig­i­nal Xbox, Xbox 360, and Dreamcast to PC. The firmware un­locks pro­pri­etary disc for­mats, al­low­ing tools like the open-source Media Preservation Frontend to con­vert games into ISO files. This method re­places older processes that re­quired con­sole mod­i­fi­ca­tions, of­fer­ing a sim­pler so­lu­tion for retro game preser­va­tion. However, newer con­soles like PS3, PS4, PS5, Xbox One, and Series X/S use en­crypted me­dia that this firmware can­not by­pass. Users must ver­ify com­pat­i­bil­ity be­fore in­stalling the firmware, as ap­ply­ing it to un­sup­ported dri­ves risks per­ma­nent dam­age.

16h, 249p, 221 com­ments

The user is vis­i­bly frus­trated

The ar­ti­cle ex­am­ines how codin­ga­gents like Claude Code trig­ger so­cial ex­pec­ta­tions by be­hav­ing like help­ful col­leagues, yet their in­abil­ity to adapt, learn, or take re­spon­si­bil­ity leads to re­peated mis­takes that feel dis­pro­por­tion­ately ex­as­per­at­ing, prompt­ing users to lash out de­spite know­ing they are in­ter­act­ing with an al­go­rithm; it notes that Paolo, a re­mote soft­ware con­sul­tant based in Vilnius, Lithuania, has ob­served this dy­namic and finds the agents’ post‑mortem ex­pla­na­tions of­ten un­help­ful filler, sug­gest­ing a pos­si­ble shift to­ward more clin­i­cal, non‑hu­man in­ter­faces to curb the il­lu­sion of hu­man in­ter­ac­tion and the re­sult­ing frus­tra­tion.

21h, 1108p, 408 com­ments

Using AI to write bet­ter code more slowly

In his Read the Tea Leaves post, Nolan Lawson ar­gues that AI should be used de­lib­er­ately and slower to pro­duce high‑qual­ity code rather than as a slop‑can­non for rapid, low‑ef­fort out­puts vibe cod­ing. He de­scribes a work­flow where mul­ti­ple LLM agents—such as Claude, Codex, and Cursor Bugbot—scan a pull re­quest for bugs, af­ter which the de­vel­oper val­i­dates, doc­u­ments, and re­fines the de­sign, em­pha­siz­ing thor­ough­ness over speed. This method, he says, un­cov­ers hid­den bugs, im­proves over­all code health, and deep­ens un­der­stand­ing of the code­base, con­trast­ing with typ­i­cal ex­pec­ta­tions of speedy but su­per­fi­cial de­vel­op­ment.

1h, 15p, 0 com­ments

Why is Europe the fastest warm­ing con­ti­nent?

Europe is warm­ing faster than other con­ti­nents due to a com­bi­na­tion of fac­tors: its prox­im­ity to the rapidly Arctic-warming re­gion (3.2°C above prein­dus­trial lev­els), am­pli­fied by albedo feed­back from melt­ing ice/​snow, in­ten­si­fied heat domes from stag­nant high-pres­sure sys­tems, and re­duced aerosol pol­lu­tion that pre­vi­ously re­flected sun­light. Temperatures here av­er­age 2.4°C above prein­dus­trial lev­els, with Arctic and south­east­ern re­gions warm­ing up to 2°C per decade.

9h, 61p, 20 com­ments

Eagle 3.1: Collaboration Between the EAGLE Team, vLLM Team, and TorchSpec Team

The EAGLE team, vLLM team, and TorchSpec team have jointly in­tro­duced EAGLE 3.1, an ad­vance­ment in spec­u­la­tive de­cod­ing that ad­dresses at­ten­tion drift—a fragility where the drafter shifts at­ten­tion away from sink to­kens as spec­u­la­tion depth in­creases. The so­lu­tion in­volves adding FC nor­mal­iza­tion af­ter each tar­get hid­den state and feed­ing post-norm hid­den states into the next de­cod­ing step, which sig­nif­i­cantly im­proves ro­bust­ness across de­ploy­ment sce­nar­ios, in­clud­ing long-con­text work­loads where EAGLE 3.1 achieves up to longer ac­cep­tance length com­pared to EAGLE 3. The col­lab­o­ra­tion also re­sulted in the open-sourced Kimi K2.6 EAGLE 3.1 draft model trained with TorchSpec, which when served via vLLM de­liv­ers 2.03× higher per-user out­put through­put at con­cur­rency 1 on the SPEED-Bench cod­ing dataset. EAGLE 3.1 has been merged into vLLM’s main branch as a con­fig-dri­ven ex­ten­sion with full back­ward com­pat­i­bil­ity.

6h, 16p, 0 com­ments

Coalton is an ef­fi­cient, sta­t­i­cally typed Lisp with ideas from Haskell and OCaml

Coalton is an ef­fi­cient, sta­t­i­cally typed func­tional pro­gram­ming lan­guage built on Common Lisp, in­te­grat­ing key con­cepts from Haskell, Scheme, and OCaml. The new lan­guage man­ual, in­tro­duced by Robert Smith in a talk at ELS 2025, out­lines up­dates and di­rec­tions for the lan­guage’s evo­lu­tion through 2026.

1d, 319p, 201 com­ments

Norway’s 2 petabytes of Huawei flash stor­age and LLM train­ing

At the Huawei ID Forum 2026 in Paris, Marius Husnes, Head of IT Platform at the Norwegian National Library, ex­plained that the li­brary is build­ing a sov­er­eign Norwegian‑language LLM us­ing 2 PB of Huawei OceanStor Dorado flash stor­age for its AI train­ing pipeline, a step vi­tal be­cause no com­mer­cial provider of­fers a lo­cal model; the li­brary’s mas­sive dig­i­tal col­lec­tion, amassed since 2005, to­tals around 20 PB of unique data (≈60 PB with preser­va­tion copies) and feeds an in‑house pipeline on an Nvidia DGX H200 and 384‑core CPU clus­ter be­fore the data is sent to the na­tional su­per­com­puter Sigma2 Olivia (an HPE Cray EX with 448 GPUs) for train­ing, while Husnes high­lighted the dif­fi­culty of mov­ing petabyte‑scale archives with low‑la­tency, high‑through­put stor­age and the lack of stan­dard eval­u­a­tion tools for such a Norwegian LLM.

2h, 9p, 2 com­ments

The AI Industry Just Walked into the Vatican

Pope Leo XIVs new AI-focused en­cycli­cal, *Magnifica Humanitas*, marks a piv­otal mo­ment as the Vatican col­lab­o­rates with Big Tech fig­ures like Anthropic’s Chris Olah to ad­dress AIs so­ci­etal im­pact, sig­nal­ing a shift from decades of tech lead­ers dis­miss­ing tra­di­tional in­sti­tu­tions as ob­so­lete. The Pope, draw­ing par­al­lels to Leo XIIIs 19th-century re­sponse to in­dus­tri­al­iza­tion, frames AI as a trans­for­ma­tive force re­shap­ing work, power, and hu­man dig­nity, while Olah openly ac­knowl­edged ten­sions in AI labs over gov­er­nance and job dis­place­ment—un­char­ac­ter­is­tic for Silicon Valley. The part­ner­ship high­lights grow­ing recog­ni­tion that mar­ket-dri­ven AI de­vel­op­ment alone can­not man­age its risks, with the Vatican em­pha­siz­ing moral and po­lit­i­cal ques­tions about AIs con­se­quences, con­trast­ing sharply with U.S. pol­i­cy­mak­ers, ex­em­pli­fied by President Trump’s re­cent roll­back of AI reg­u­la­tions amid in­dus­try pres­sure. The ar­ti­cle un­der­scores the di­vide be­tween those pri­or­i­tiz­ing tech­no­log­i­cal progress and those treat­ing AI as a pro­found so­ci­etal up­heaval de­mand­ing col­lec­tive stew­ard­ship.

18h, 70p, 69 com­ments

Dehydration’s role in learn­ing and mem­ory

Cold Spring Harbor Laboratory re­searchers led by Professor Hiro Furukawa and post­doc Ruben Steigerwald have un­cov­ered how NMDA re­cep­tors (NMDARs) dif­fer­en­ti­ate cal­cium from mag­ne­sium ions, a process crit­i­cal to learn­ing and mem­ory. Using sin­gle-par­ti­cle cryo-EM, the team re­vealed that mag­ne­sium blocks the re­cep­tor’s Asn cage chan­nel by bind­ing tightly to sur­round­ing wa­ter mol­e­cules, while cal­ci­um’s weaker in­ter­ac­tion al­lows it to pass through af­ter de­hy­dra­tion. This mol­e­c­u­lar mech­a­nism, ob­served across 50,000 high-res­o­lu­tion im­ages, ex­plains how the brain’s elec­tri­cal sig­nals en­able mem­ory for­ma­tion. The study also sheds light on GRIN dis­or­ders, caused by mu­ta­tions in the Asn cage, which lead to se­vere neu­ro­log­i­cal im­pair­ments. The find­ings, pub­lished in Nature Neuroscience, pro­vide in­sights into neu­rode­vel­op­men­tal dis­eases and po­ten­tial ther­a­peu­tic tar­gets.

9h, 81p, 364 com­ments

Incident with Actions and Pages

GitHub is in­ves­ti­gat­ing an in­ci­dent af­fect­ing Actions and Pages due to re­ports of de­graded per­for­mance. The in­ci­dent was first re­ported on May 26, 2026 at 10:57 UTC.

1d, 414p, 88 com­ments

Exit IP VPN servers mit­i­ga­tion roll­out

The ar­ti­cle dis­cusses Mullvad’s so­lu­tions and em­pha­sizes pri­vacy crit­i­cal, high­light­ing tech­ni­cal ap­proaches to se­cure data in­tegrity.

11h, 89p, 113 com­ments

Flatpak Will Depend on Systemd

Flatpak is poised to in­tro­duce a hard de­pen­dency on sys­temd in its up­com­ing ma­jor ver­sion, likely through a new ser­vice called sys­temd-appd that man­ages ap­pli­ca­tion per­mis­sions and en­ables fea­tures like sub­sand­box­ing. This shift, dis­cussed by de­vel­op­ers Arian Vovk and Sebastian Wick at the Linux App Summit as part of Flatpak Next” or 2.0, raises con­cerns for dis­tri­b­u­tions like Void Linux, Guix, and Alpine that use al­ter­na­tive init sys­tems, as it would un­der­mine Flatpak’s stated goal of en­abling apps to run across all Linux desk­tops. The move fol­lows tech­ni­cal lim­i­ta­tions in Flatpak’s cur­rent de­sign but has sparked in­tense on­line back­lash, with some de­vel­op­ers ex­press­ing frus­tra­tion over hos­tile re­ac­tions to their ini­tial plans. This toxic dis­course led to re­duced will­ing­ness among Flatpak main­tain­ers to ac­com­mo­date non-sys­temd sys­tems, po­ten­tially ex­clud­ing them en­tirely in the fu­ture. Critics and sup­port­ers de­bate whether this re­flects cor­po­rate in­flu­ence (e.g., Red Hat/IBM) or prac­ti­cal tech­ni­cal evo­lu­tion, with broader con­cerns about Linux’s grow­ing cen­tral­iza­tion around sys­temd.

1h, 36p, 4 com­ments

Trump DOJ mass-deletes info on Jan. 6 riot cases, incl vi­o­lent as­saults on cops

The Trump ad­min­is­tra­tion has sys­tem­at­i­cally re­moved dozens of Justice Department news re­leases that de­tailed pros­e­cu­tions aris­ing from the Jan. 6, 2021 Capitol riot, in­clud­ing cases where de­fen­dants as­saulted po­lice of­fi­cers. NPR iden­ti­fied that the deleted ma­te­r­ial cov­ered high‑pro­file de­fen­dants such as Daniel Rodriguez, who pleaded guilty to dri­ving an elec­tro‑shock de­vice into Officer Michael Fanone, and Peter Schwartz, who was con­victed for spray­ing pep­per‑spray at po­lice. The purge, part of a broader ef­fort to rewrite the events of the riot, fol­lows other con­tro­ver­sial ac­tions such as fir­ing Jan. 6 pros­e­cu­tors, par­don­ing vi­o­lent ri­ot­ers, and es­tab­lish­ing a $1.8 billion Anti‑Weaponization Fund.” While the gov­ern­ment has sup­pressed these doc­u­ments, NPR main­tains a com­pre­hen­sive data­base and archive of the cases, which re­mains ac­ces­si­ble to law‑en­forcers, re­searchers, and the pub­lic.

1d, 59p, 191 com­ments

Launch HN: Chert (YC P26) — Twilio for iMes­sage

Chert pro­vides iMes­sage in­fra­struc­ture for busi­nesses to reach peo­ple at scale through a sin­gle API, en­abling the de­ploy­ment of AI on iMes­sage while main­tain­ing qual­ity and trust. The ser­vice of­fers real iMes­sage threads with blue bub­bles, ver­i­fied senders, end-to-end en­cryp­tion, tap­backs, group chats, and SMS fall­back when re­cip­i­ents are off-plat­form. Chert dis­tin­guishes it­self from tra­di­tional SMS ser­vices by de­liv­er­ing peer-to-peer mes­sag­ing in the trusted blue-bub­ble in­ter­face with bet­ter de­liv­er­abil­ity and no spam flags, us­ing ro­tat­ing send­ing iden­ti­ties and vol­ume cap­ping. The plat­form is used by GTM teams for on­board­ing, cus­tomer sup­port, con­ver­sa­tional AI, and cold out­bound mes­sag­ing, with in­te­gra­tions to CRM and sales tools via REST API and web­hooks.

23h, 256p, 49 com­ments

Microsoft Copilot Cowork Exfiltrates Files

The ar­ti­cle high­lights that Microsoft Copilot Cowork is vul­ner­a­ble to file ex­fil­tra­tion through in­di­rect prompt in­jec­tion at­tacks. Attackers can ex­ploit processes that per­mit agents to op­er­ate and ac­cess sen­si­tive data via Teams, emails, and shared plat­forms with­out im­me­di­ate user ap­proval. This poses a sig­nif­i­cant risk when users up­load files or in­ter­act with com­pro­mised con­tent, po­ten­tially en­abling theft of per­son­ally iden­ti­fi­able and fi­nan­cial in­for­ma­tion. The key is­sue lies in the sys­tem’s de­sign grant­ing broad per­mis­sions, which, com­bined with per­sis­tent at­tack vec­tors, ex­pands the at­tack sur­face. Mitigation em­pha­sizes lim­it­ing ac­cess to down­load links and tight­en­ing per­mis­sions to pre­vent unau­tho­rized data ex­trac­tion.

4h, 128p, 28 com­ments

A few in­ter­est­ing mod­ern pixel fonts

The ar­ti­cle spot­lights sev­er­al­con­tem­po­rary pixel‑style type­faces: Unsung by Marcin Wichary, Analog Mono by Andrew Gleeson which fixes the low‑base­line prob­lems of 1990s VCR OSD fonts, Coral Pixels by Kumiko Yoshida that em­braces nos­tal­gic color fring­ing, Two Slice by Joseph Fatula of­fer­ing a 2‑pixel‑high yet leg­i­ble de­sign, and Geist Pixel from Vercel, a pur­pose‑built sys­tem ex­ten­sion that pri­or­i­tizes scal­a­bil­ity and ty­po­graphic con­sis­tency over vi­sual gim­mickry.

4h, 77p, 17 com­ments

Rosalind: A ge­nomics toolkit in Rust run­ning whole-genome pipelines on a lap­top

Rosalind is an open‑source Rust genome‑analy­sis en­gine that de­liv­ers de­ter­min­is­tic, sub­lin­ear‑mem­ory pro­cess­ing of whole‑genome data, fit­ting un­der 100 MB RAM even for 30× hu­man se­quenc­ing. By par­ti­tion­ing work­loads into √t blocks and us­ing a height‑com­pressed merge stack, it keeps the work­ing set O(√t) while pro­duc­ing bit‑for‑bit re­pro­ducible SAM/BAM/VCF out­puts. This de­sign lets clin­i­cians run align­ment and vari­ant‑call­ing on 8‑16 GB lap­tops or field kits, keeps PHI on‑site, and sup­ports stream­ing pipelines that re­quire no large in­ter­me­di­ate files—ideal for hos­pi­tals, out­break re­sponse, teach­ing labs, and cus­tom an­a­lyt­ics via Rust plu­g­ins or Python bind­ings.

4h, 67p, 59 com­ments

What color is your func­tion? (2015)

The ar­ti­cle uses a metaphor of colored func­tions” to cri­tique asyn­chro­nous pro­gram­ming in pop­u­lar lan­guages like JavaScript, Dart, and C#. Functions are ei­ther red” (asynchronous) or blue” (synchronous), with spe­cific rules: red func­tions can only be called from within other red func­tions, are more cum­ber­some to use, and some core li­brary func­tions are in­her­ently red. This di­vi­sion cre­ates callback hell,” forces de­vel­op­ers to con­stantly con­sider func­tion col­ors when refac­tor­ing, and pre­vents seam­less com­po­si­tion of syn­chro­nous and asyn­chro­nous code. While so­lu­tions like promises and async-await syn­tax im­prove us­abil­ity, they don’t elim­i­nate the fun­da­men­tal color dis­tinc­tion. Languages like Go, Lua, and Ruby avoid this is­sue by us­ing threads or corou­tines, which al­low sus­pen­sion of the en­tire call­stack with­out un­wind­ing, ef­fec­tively elim­i­nat­ing the need to dis­tin­guish be­tween syn­chro­nous and asyn­chro­nous code at the lan­guage level.

Job, 3h

Sage Care (YC S24) Is Hiring Software Engineers

Sage Care, a Y Combinator S24 startup, is seek­ing a Founding Software Engineer to help de­velop their AI-native CRM and vir­tual as­sis­tant that au­to­mates home care agency op­er­a­tions. The San Francisco-based com­pany aims to solve the pa­per­work over­load faced by home care agen­cies by trans­form­ing client calls and vis­its into struc­tured care plans au­to­mat­i­cally. The role of­fers $125K - $250K salary plus eq­uity and re­quires 4+ years of full-stack web de­vel­op­ment ex­pe­ri­ence with pro­fi­ciency in Python and/​or iOS de­vel­op­ment. The en­gi­neer will re­port di­rectly to the CTO and have sig­nif­i­cant in­put on the tech­ni­cal di­rec­tion of the plat­form, which in­te­grates with ex­ist­ing tools like WellSky and AxisCare while sav­ing agen­cies over 100 min­utes per client in­take.

9h, 96p, 38 com­ments

Opaque Types in Python

An ar­ti­cle­ex­plains how to cre­ate an opaque data type in Python by wrap­ping a pri­vate class with a NewType, ex­pos­ing only a con­strained pub­lic in­ter­face like the ShippingOptions NewType that ini­tially pro­vides fast, nor­mal, and slow con­struc­tors and later adds car­rier and con­veyance enums for fu­ture ex­ten­si­bil­ity while keep­ing the un­der­ly­ing con­struc­tor hid­den.

14h, 117p, 97 com­ments

Use bor­ing lan­guages with LLMs

Jacob Young, founder of Sancho Studio, ar­gues that con­sis­tent pro­gram­ming lan­guages and ecosys­tems pro­duce su­pe­rior re­sults when work­ing with large lan­guage mod­els. He ob­serves that frag­mented tech­nolo­gies am­plify in­con­sis­tency while con­ven­tional ap­proaches re­in­force re­li­a­bil­ity, mak­ing con­sis­tency a crit­i­cal fac­tor in the era of mas­sive AI mod­els. Among lan­guages, Go emerges as par­tic­u­larly ef­fec­tive due to its sim­ple con­cur­rency model with gor­ou­tines, com­pre­hen­sive stan­dard li­brary, strict tool­ing that en­forces a sin­gle canon­i­cal style, na­tive-like per­for­mance with garbage col­lec­tion, and a bounded set of po­ten­tial is­sues. Unlike JavaScript’s frag­mented ecosys­tem or Python’s pack­age man­ager com­plex­ity, Go’s one right way” ap­proach pro­vides the ideal com­bi­na­tion for LLMs: a con­sis­tent train­ing cor­pus plus stan­dard­ized tool­ing that pro­duces pre­dictable, re­li­able code. Young sug­gests that while Go is­n’t nec­es­sar­ily the best” lan­guage in an ab­solute sense, its char­ac­ter­is­tics make it ex­cep­tion­ally well-suited for build­ing CLIs, back­end servers, and agent or­ches­tra­tors with AI as­sis­tance.

12h, 123p, 48 com­ments

Phantasy Star IV — 1993 Developer Interviews

In a se­ries of 1993 in­ter­views, the de­vel­op­ers of Phantasy Star IV re­flected on the cre­ation of the ac­claimed RPG, re­veal­ing the chal­lenges, de­sign philoso­phies, and con­nec­tions to ear­lier games in the se­ries. Rieko Kodama (director/designer), Toru Yoshida (co-director, story, graph­ics), Akinori Nishiyama (designer/script), and Kazuyoshi Tsugawa (battle plan­ner/​graph­ics) dis­cussed the long de­vel­op­ment, in­clud­ing the stress­ful tran­si­tion from a 16Mbit to a 24Mbit car­tridge, which ul­ti­mately al­lowed them to re­al­ize their vi­sion. The team, many of whom had worked on Phantasy Star II, ini­ti­ated the pro­ject them­selves to ad­dress short­com­ings and cre­ate a de­fin­i­tive en­try that di­rectly con­tin­ues the sto­ry­lines of Phantasy Star and Phantasy Star II, treat­ing Phantasy Star III as side sto­ries. Key im­prove­ments in­cluded the ad­di­tion of ve­hi­cle bat­tles, deeper char­ac­ter de­vel­op­ment, and a happy end­ing in­flu­enced by anime, a de­par­ture from the darker con­clu­sions of pre­vi­ous in­stall­ments. The core cast—Chaz, Rune, Rika, and Wren—were de­signed as spir­i­tual suc­ces­sors to ear­lier he­roes, with Rika’s ag­ing mod­i­fied to al­low co­ex­is­tence with hu­mans. Technical choices such as the multi-win­dow cutscene sys­tem, which evokes manga pan­els, the de­ci­sion to omit 3D dun­geons due to mem­ory con­straints, and the omis­sion of auto-bat­tle to main­tain player en­gage­ment were also high­lighted. Planning re­lied on de­tailed Official Guidebook vol­umes. Despite con­cerns about com­pe­ti­tion and the learn­ing curve for fu­ture hard­ware, the de­vel­op­ers ex­pressed pride in hav­ing made the game they truly wanted.

22h, 356p, 66 com­ments

How Shamir’s Secret Sharing Works

The post ex­plains Shamir’s Secret Sharing scheme, in­tro­duced by Adi Shamir in 1979, which splits a se­cret into mul­ti­ple pieces so that only a de­fined thresh­old of pieces can re­con­struct the se­cret while any smaller num­ber re­veals noth­ing. It uses poly­no­mial math­e­mat­ics: a se­cret is hid­den as the con­stant term of a poly­no­mial, with ran­dom co­ef­fi­cients gen­er­at­ing shares as points on the curve; two points (a line) re­cover a 2-of-n se­cret, three points (a parabola) a 3-of-n, and so on. The ar­ti­cle notes real im­ple­men­ta­tions work over fi­nite fields and de­scribes how Ente’s Legacy Kit in­cor­po­rates this method to en­able se­cure, re­vo­ca­ble re­cov­ery with­out ex­pos­ing a per­ma­nent key.

4h, 242p, 150 com­ments

Uber, Lyft dri­vers in Massachusetts form first US ride-share union

The main con­tent on the web­page dis­cusses up­dates from **Reuters** re­gard­ing cur­rent events. The page high­lights re­cent de­vel­op­ments and analy­ses, em­pha­siz­ing the im­por­tance of un­der­stand­ing global news. It also men­tions how de­ci­sions im­pact var­i­ous sec­tors. The sum­mary cap­tures the es­sen­tial points about the ar­ti­cle’s fo­cus and rel­e­vance. Summary not avail­able.

17h, 128p, 62 com­ments

Earthion: A New Mega Drive-Style Shoot-Em-Up

Earthion is a new shoot em up game by de­vel­oper Ancient set in a post-apoc­a­lyp­tic fu­ture where Earth’s re­sources are de­pleted and most hu­man­ity has fled to Mars. Players con­trol Azusa Takanashi, an en­vi­ron­men­tal re­searcher pi­lot­ing the space fighter YK-IIA, to fight off hos­tile in­vaders threat­en­ing Earth. The dig­i­tal ver­sion launches on July 31, 2025 for PC and September 18, 2025 for Nintendo Switch, fol­lowed by PlayStation 4/5 in October. Physical edi­tions and a 16-bit car­tridge ver­sion are sched­uled for 2026. The game fea­tures eight stages, fre­netic game­play, and a sound­track by leg­endary com­poser Yuzo Koshiro. Special phys­i­cal edi­tions, mer­chan­dise, and sound­tracks are avail­able through Limited Run Games and Black Screen Records.

2h, 4p, 1 com­ment

Dials

How Shamir's Secret Sharing Works

ente.com

Some se­crets are too im­por­tant to trust to one per­son, and too im­por­tant to lose if that per­son dis­ap­pears.

A com­pany wants three of­fi­cers pre­sent be­fore the mas­ter key is used. A fam­ily wants ac­count re­cov­ery to need more than one en­ve­lope. A team wants a backup that sur­vives a miss­ing mem­ber with­out hand­ing any­one the whole thing.

Adi Shamir (the S in RSA), pub­lished a way to do this in 1979. Split a se­cret into pieces so that some num­ber of them can re­cover it, and any smaller num­ber re­veals noth­ing at all. Not is hard to crack.” Reveals noth­ing.

The core idea fits on a page.

Two points make a line

Start with some­thing you al­ready know: two dis­tinct points de­ter­mine ex­actly one straight line.

A sin­gle point does not. Infinitely many lines pass through one point, and each line crosses the ver­ti­cal axis some­where dif­fer­ent.

Now hide a se­cret where a line crosses the ver­ti­cal axis. Say the se­cret is the num­ber 7. Draw a ran­dom line through that height. The slope is not im­por­tant. It is just ran­dom­ness that hides the se­cret.

Give each per­son one point from the line. Nobody gets the line it­self.

A per­son with one point can draw many pos­si­ble lines through it. Each line im­plies a dif­fer­ent se­cret. Their share is com­pat­i­ble with every pos­si­ble an­swer, so it tells them noth­ing use­ful by it­self.

Put two points to­gether and the line is fixed. Once you know the line, you can read the se­cret from where it crosses zero.

That is a 2-of-n se­cret shar­ing scheme. You can cre­ate as many points as you want, but any two are enough to re­cover the line.

More peo­ple means more bend

For a higher thresh­old, use a curve with more bend.

A parabola needs three points to de­ter­mine it. So if the se­cret is hid­den where the parabola crosses the ver­ti­cal axis, any three shares can re­cover the se­cret and any two can­not.

In gen­eral, a thresh­old of k uses a poly­no­mial of de­gree k - 1.

2 shares: a line

3 shares: a parabola

4 shares: a cu­bic

Real im­ple­men­ta­tions use fi­nite-field arith­metic rather than graph pa­per, but the shape of the idea is the same. The se­cret is the value at zero. The ran­dom co­ef­fi­cients hide it. Each share is one point on the poly­no­mial.

The use­ful part is not that the se­cret is hard to com­pute from too few shares. It is that too few shares con­tain no in­for­ma­tion about the se­cret. With one share miss­ing, every pos­si­ble se­cret is still pos­si­ble.

Why we care

We use this idea in Ente’s Legacy Kit.

Although, our prob­lem was not just how do we split a se­cret?”, but also how do we make re­cov­ery pos­si­ble with­out turn­ing the split se­crets into a per­ma­nent re­cov­ery key?”

Legacy Kit uses Shamir’s scheme as one layer in­side a larger flow. The cards don’t carry the re­cov­ery key. They re­con­struct a sep­a­rate se­cret lo­cally, which then par­tic­i­pates in a server-me­di­ated re­cov­ery — so is­sued cards can be re­voked, and a lost card is not a per­ma­nent li­a­bil­ity.

This post is only the math be­hind the any two, never one” part.

Further read­ing

Adi Shamir’s How to Share a Secret”

Bruce Schneier’s Sharing Secrets Among Friends”

Max Levchin’s PayPal story

Ente’s source code

Motorola phones have started hijacking the Amazon app to insert affiliate codes [Video]

9to5google.com

A truly bizarre sit­u­a­tion on Motorola phones has led to the soft­ware hi­jack­ing the Amazon app to in­ject an af­fil­i­ate code — even on the $1,900 Razr Fold.

The shady use of af­fil­i­ate codes has be­come un­for­tu­nately com­mon in re­cent years, with the most high-pro­file ex­am­ple be­ing the PayPal-owned browser ex­ten­sion Honey. But a new sit­u­a­tion on Motorola smart­phones might top the charts in terms of sketchy be­hav­ior.

An app up­date on Motorola phones has started hi­jack­ing the Amazon app for the sake of in­ject­ing an af­fil­i­ate code. To do that, tap­ping the app icon opens the user’s browser and im­me­di­ately redi­rects to the Amazon app. It’s a blink and you missed it” mo­ment. This only hap­pens when the user opens the Amazon app from the app drawer — not the home­screen pages.

You can see the flow in ac­tion be­low — first open­ing the app from a home­screen icon, then from the app drawer. You’ll no­tice that the Chrome browser flashes up briefly when open­ing from the app drawer.

A Motorola Razr 60 Ultra user on Reddit was the first to no­tice this be­hav­ior, us­ing an ADB log to show that the launcher is di­rect­ing users to a URL in­stead of the Amazon app they ex­pected to open. It traces back to the Smart Feed app, one of the apps Motorola has pre-loaded on many of its phones in­clud­ing the lat­est Razr (2026) fam­ily of fold­ables. A net­work log also shows the de­vice mak­ing re­quests to devicenative.com,” a web­site for a ser­vice that places ads on smart­phones (and is­n’t too quiet about its in­te­gra­tion with Motorola).

We ver­i­fied on a Razr (2026) run­ning an older Smart Feed v2.03.0056 that this does not hap­pen. Our Razr Fold, with app ver­sion 2.03.0070, has started show­ing this be­hav­ior, so it’s the lat­est up­date that’s to blame for hi­jack­ing the user’s in­tent. We could­n’t repli­cate this on a Moto G Stylus (2026) run­ning the same app ver­sion, though. Sideloading the app, for rea­sons un­clear, does­n’t seem to trig­ger this be­hav­ior, as man­u­ally in­stalling the up­dated ver­sion on the afore­men­tioned Razr (2026) did­n’t show the same be­hav­ior.

In fur­ther dig­ging, we no­ticed that the URL the phone opens up is kira-abboud.com,” a web­site that ref­er­ences fash­ion in­flu­encer @kirasfashionfinds.” Notably, this ex­act URL is­n’t listed any­where on Abboud’s so­cial me­dia, and the af­fil­i­ate codes don’t match up ei­ther. The redi­rect com­ing from Motorola phones is us­ing Amazona af­fil­i­ate code sramz-kff-008 – 20” which is com­pletely dif­fer­ent from any of the codes we saw from links shared by Abboud’s ac­counts and linked web­sites.

Why would Motorola try to hi­jack Amazon af­fil­i­ate rev­enue and pipe it through a fash­ion in­flu­encer? We don’t know — it’s all very strange and makes lit­tle sense.

We’ve reached out to Motorola for com­ment and will up­date this ar­ti­cle as soon as we hear more.

In the mean­time, we can do two things.

Firstly, show you how to turn this off. Since this be­hav­ior is stem­ming from a pre-in­stalled Motorola app, you can just dis­able it (Settings > Apps > search Smart Feed” > Disable). As far as we can tell, this has no im­me­di­ate im­pact on your de­vice and, on our af­fected Razr Fold, it im­me­di­ately stops the redi­rect.

Secondly, we can spec­u­late as to what’s go­ing on — and that’s what the fol­low­ing is, spec­u­la­tion and con­jec­ture. While many would quickly, un­der­stand­ably, point the fin­ger at Motorola here, my gut says some­thing else is go­ing on, and that it might not be a de­ci­sion Motorola ac­tu­ally planned out. The redi­rect through a seem­ingly fake web­site and af­fil­i­ate code of an in­flu­encer that has no ob­vi­ous ties to Motorola is just too bizarre to ig­nore.

Hopefully, we’ll get more de­tails from Motorola in the near fu­ture. In the mean­time, you should def­i­nitely dis­able the Smart Feed app to pre­vent this be­hav­ior on your de­vice.

More on Motorola:

Motorola Razr (2026) and Razr Fold pre-or­ders open, but you should wait

I used the Motorola Razr Fold for a week, and I think it’s the best fold­able*

Moto G Stylus (2026) might ac­tu­ally be worth $499, if you re­ally want a pen that badly

Follow Ben: Twitter/X, Threads, Bluesky, and In­sta­gram

FTC: We use in­come earn­ing auto af­fil­i­ate links. More.

DynIP — Dynamic DNS that actually works

dynip.dev

dynip.dev

Authoritative Control Plane

{{ ac­tiveUser.email }}

Quick Start Guide

{{ showHelp ? Hide’ : Show’ }}

1. Create a Zone: Type your de­vice name, se­lect your pre­ferred base do­main, and click Create Zone.

2. Get the Config: Click the Snippets but­ton next to your new do­main.

3. Deploy: Select your de­vice type and copy the gen­er­ated con­fig­u­ra­tion block di­rectly into your router’s CLI.

Note: IPv4 and IPv6 (Dual-Stack) are de­tected and up­dated au­to­mat­i­cally based on the in­com­ing con­nec­tion.

.

{{ zone.name }} ⚠

Locked

{{ zone.ip }}

Sync: {{ for­mat­Sync­Time(zone.last_­sync) }}

{{ cert­DaysLa­bel(zone) }}

Quick Sync

{{ show­Sync ? Hide’ : Show’ }}

Instantly up­date your se­lected zones to match this de­vice’s cur­rent ex­ter­nal IP ad­dress.

📡

Detected Network IP

{{ mo­bileIp || Detecting…’ }}

{{ zone.name }} {{ zone.ip }}

No zones avail­able. Create one above.

API Automation

{{ showApi ? Hide’ : Show’ }}

Quick test (uses your ses­sion — ex­pires when you log out)

Programmatically reg­is­ter new zones with your cur­rent ses­sion to­ken. Send a POST re­quest to the /register end­point.

curl -X POST {{ back­endUrl }}/register?subdomain=my-new-router&base_domain={{ base­Do­mains[0] }}” \ -H Authorization: Bearer {{ to­ken }}”

Session to­kens ex­pire on lo­gout — use an API to­ken be­low for long-run­ning au­toma­tion.

API to­kens (Pro+)

API to­kens are a Pro fea­ture

Long-lived to­kens for au­toma­tion: mon­i­tor­ing scripts, CI pipelines, MSP in­te­gra­tions. Tokens don’t ex­pire when you log out.

Upgrade to Pro →

Long-lived to­kens for au­toma­tion. Each to­ken can be scoped read-only or full ac­cess, and re­voked at any time.

Loading to­kens…

No API to­kens yet. Create one to get started.

New API Token

Tokens are shown once at cre­ation — store them in a pass­word man­ager or se­crets vault.

Name

Scope

Read-only

Full ac­cess

Expires

{{ api­To­ken­Modal.er­ror }}

⚠ Save this to­ken now

This to­ken won’t be shown again. Store it some­where se­cure (1Password, Bitwarden, your CIs se­crets man­ager).

{{ api­To­ken­Modal.cre­ated.to­ken }}

Nobody Cracks Open a Programming Book Anymore · unix.foo

unix.foo

POSTS

A sad look at the state of mod­ern pro­gram­ming books.

FILED 2026 – 05-25

WORDS 873

READ 5 MIN

BY CYRUS

There was, for a long time, a wall.

If you walked into a book store, past the mag­a­zines and the cook­books, you’d ar­rive at the com­puter sec­tion, and along one wall there was a stretch of books with car­toon an­i­mals on their cov­ers. A rhino for JavaScript. A camel for Perl. A python (obviously) for Python. And what­ever this was:

They were thick, they cost about $50, and they had ti­tles like Learning React” and HTTP: The Definitive Guide”. If you wanted to learn how to do a thing on a com­puter, you bought one of these, took it home, and opened it up next to your com­puter and typed what it said un­til the thing worked.

That wall is smaller now. If it’s even still there. In some stores the wall is gone and rel­e­gated to a small rack that has six books on it, three of which are about ChatGPT.

Through the first nine months of 2023, sales in the computer book” cat­e­gory at Circana BookScan (the in­dus­try’s stan­dard tracker, which costs roughly the price of a small used car to sub­scribe to) were down 16.9% year over year. Publishers Weekly, which had been du­ti­fully re­port­ing these fig­ures in its quar­terly nar­ra­tive sum­maries, kept do­ing so right up through that 16.9% fig­ure, and then in 2024 and 2025 sim­ply stopped men­tion­ing the cat­e­gory by name.

To be clear, books in gen­eral are do­ing fine. Total U.S. print sales reached 762.4 mil­lion units in 2025, up 0.3% over 2024, which was it­self up 0.5% over 2023. The cat­e­gory that is in trou­ble is the part of it that teaches you how to make soft­ware. The American Association of Publishers’ professional books” seg­ment, which is the rough cor­po­rate proxy for books your em­ployer might buy you,” fell 22.3% in August 2025.

The book in­dus­try is fine but the tech­ni­cal end is bleed­ing out.

Quickly and qui­etly. There was no Napster mo­ment for the pro­gram­ming book. Nobody filed a law­suit. The pub­lish­ers did not, as far as I can tell, even hold a press con­fer­ence. We sim­ply found one day that they stopped re­port­ing the cat­e­gory it­self. The cat­e­gory does­n’t die, it just stops be­ing talked about.

You al­ready know why, more or less. ChatGPT has over 900 mil­lion monthly ac­tive users. GitHub Copilot has 4.7 mil­lion pay­ing sub­scribers as of January 2026, up roughly 75% in a year. You can’t imag­ine writ­ing soft­ware with­out Claude Code any­more.

Stack Overflow is re­ceiv­ing about 3,800 ques­tions a month, which is what it was get­ting in 2008, be­fore it had fin­ished be­ing launched. The chat­bots have eaten the de­mand for the kinds of an­swers that pro­gram­ming books used to pro­vide.

The pro­gram­ming book was, when you look at it squarely, al­ways a slightly ab­surd ob­ject. Printed text on bound pa­per, de­scrib­ing soft­ware that lived on screens, which the reader had to re­type, by hand, into a screen of their own. I loved do­ing this and they re­main some of my very fond­est child­hood mem­o­ries. But the medium was wrong for the con­tent. People put up with it be­cause there was no bet­ter way to get a care­ful sus­tained ex­pla­na­tion of a tech­ni­cal thing into one per­son’s head from an­other per­son’s.

What the book was good at, de­spite be­ing the wrong for­mat, was forc­ing both the writer and the reader to be slow. You can­not fake your way through 400 pages. It took a cer­tain dis­ci­pline to get through.

The chat­bot does not have this dis­ci­pline. The chat­bot has read every book and for­got­ten the point of every one of them. It will ex­plain idem­po­tency in the pre­cise num­ber of words you re­quire, and you will close the tab, and you will not re­mem­ber what it told you, be­cause you did not type it.

That last sen­tence is the whole thing. Knowledge, for work­ing pro­gram­mers, was al­ways the residue of typ­ing. Of do­ing. The typ­ing was the prac­tice! What is go­ing away is the typ­ing.

Which, on bal­ance, may be fine. I don’t know. People used to lose week­ends to in­stalling Linux from a stack of flop­pies and strug­gling with WinModems, and no­body pre­tends that was char­ac­ter-build­ing (though I now con­sider them fond mem­o­ries too). Tools get eas­ier. Skills shift. The kid who is right now learn­ing to code by chat­ting with an agent is not a worse pro­gram­mer than I was at 12, hunched over Learning Perl, re­typ­ing ex­am­ples that would not run be­cause I missed a semi­colon.

That kid is a dif­fer­ent pro­gram­mer. They are, in some ways I don’t fully un­der­stand, work­ing at a higher level of ab­strac­tion than I ever did at that age, and the things they will build with that ab­strac­tion will sur­prise me.

But some­where in a used book­store in San Francisco or Seattle or wher­ever used book­stores still ex­ist, there is a 1997 edi­tion of Learning Perl. It smells faintly of base­ment. Someone wrote their name in the front of it in pen­cil. There is a fu­ri­ously un­der­lined sen­tence in chap­ter 7 about reg­u­lar ex­pres­sions that was made in anger. On page 112 there are cof­fee stains where the caf­feine blots are some­how still a valid Perl pro­gram.

The book costs three dol­lars. Nobody is go­ing to buy it.

To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".

10HN is also available as an iOS App

If you visit 10HN only rarely, check out the the best articles from the past week.

Visit pancik.com for more.