Forty-seven stories cleared 200 points today — forty-six inside the top-170 window plus one the rank window missed entirely. Sixteen are new to this roundup: fourteen that did not exist yesterday, one that got a second submission worth twice the first, and one that never made the scanned window at all.
The old stories still own the top of the page. “Things to know when you get cancer” is at 1,955, four days in. Tesla’s Roadster page is at 1,628 on a product page with no new information since Thursday. Claude’s ECDSA post is at 1,047, four times where it started. Nothing about that is a criticism of this audience — it is what HN’s decay curve does — but it means the interesting material today sits between 200 and 560 points, not at the top.
And the interesting material has a shape. Almost every new story worth reading today spends paragraphs telling you exactly where it breaks: a diagram engine with a compatibility page, a coral paper that only works on clones, a font whose author warns you the readings will sometimes be wrong, a CPU simulator that advertises 31% speed, a git hook with a yolo bypass that logs every skip. The page rewarded disclosure. That is unusual enough to be the story.
Pele – Mermaid diagrams as themeable SVG — 558 points
558 points · 53 comments · pele.run · HN discussion
Obsidian rewrote the Mermaid renderer and shipped it as a standalone MIT library. Same input syntax, same diagram types — it claims support for every type in Mermaid 12.1.0 — but the output is SVG you insert yourself, styling is CSS variables instead of a theme config object, and the dependency tree is zero instead of twenty-three.
The numbers on the comparison table are the pitch: 230 kB gzipped against Mermaid’s 1.6 MB, and 0.05–0.3 ms render time against 6–82 ms. That is a 60× size difference and a 100×-plus speed difference, and both come from the same architectural choice — no DOM manipulation, no layout engine, no browser. Mermaid’s weight is largely its renderer; Pele just emits markup.
Whether the numbers hold for your diagrams is the open question, and the comments split cleanly along it. bilibali had been spawning a Chromium instance in a build script to turn Mermaid blocks into SVGs for a static site, swapped Pele in, and reports the layouts are not 1:1 but likes Pele’s better. Ancapistani says the subgraph behaviour alone is worth switching — in Pele a subgraph keeps its own direction even when it links outward, which is a longstanding Mermaid annoyance. Against that, lukeify says Mermaid’s problem was never styling, it was “arcane and topologically poor layout,” and burgeonlab has already left for D2.
The honest read: Pele is not trying to be a better diagram language. It is trying to be a fast, small, themable renderer for the syntax people already wrote. If your Mermaid pain is bundle size and dark-mode CSS — and in a docs pipeline it usually is — this solves it. If your pain is that the arrows go somewhere stupid, this does not.
Zuckerberg’s Meta takes down No Kings Instagram during protest day — 555 points
555 points · 359 comments · meidasnews.com · HN discussion
The No Kings coalition’s main Instagram account went dark on Saturday while roughly 3,000 protest events were underway nationwide, in a push focused on early-voter turnout. The reporting varies on duration — organizers say about 90 minutes of silence and then a restored account they still could not post from; the Guardian says several hours. Meta apologized and blamed an automated action of the kind it applies “when accounts post, share or comment at very high frequency.”
Take Meta’s explanation at face value for a moment, because it is probably true and it is also the damning part. The account was suspended for doing exactly the thing a political movement does on its biggest day: posting a lot. Meta’s enforcement is automated because moderation at that scale is unaffordable otherwise, and automated enforcement is trivially gamed by coordinated reporting. A coalition with millions of followers and a national day of action is the exact input that trips both heuristics. Nobody had to decide anything for this to happen; the system just did what it does.
dgoldstein0 makes that argument properly — “Meta and other big tech usually over-relies on automated enforcement because it’s easier on their wallets than hiring enough moderators.” koolba supplies the counterweight: is it really scandalous that a large company took 90 minutes to answer? weknowbetter supplies the actual answer — use the Fediverse — which is correct and has been correct for a decade and changes nothing about where the audience is.
Two meta-notes worth recording. The HN submission itself got flagged during the day, and at least three commenters (jaybrendansmith, rasso) asked who was flagging it and why, which is a more interesting thread than the outage. And the story never appeared in the top-170 rank window — it was found by the date sweep. A 555-point story that the rank scan missed is a reminder that “front page” is a narrower sample than it looks.
Bleached corals thrive within days when touching healthy neighbour — 536 points
536 points · 115 comments · nature.com · HN discussion
A Science Advances paper published 14 October shows that bleaching can be reversed — completely, in weeks — if a bleached coral fragment is placed in physical contact with a healthy one from the same individual. The mechanism is a tissue bridge: the two fragments fuse, and the symbiotic algae migrate across it.
The setup is almost embarrassingly simple. Ten pairs of Pocillopora damicornis fragments, each pair one bleached and one healthy. Five pairs touching, five pairs separated by a few millimetres. The touching bleached fragments recovered within eight weeks; by week two the symbiont population was doubling every four days, far faster than any observed wild recovery. The separated fragments died after twenty weeks. A week of contact was enough for the bleached branch to finish recovering on its own.
The detail that guts the headline is in the sixth paragraph, and it is the one the HN thread fixed on immediately. Fusion only happened between fragments of the same genet — same individual, identical genotype. Different species did not fuse. Different animals of the same species did not fuse. Okkef: “Only if they are clones — so not much use in practice, unfortunately.”
That is not a reason to dismiss the result; it is a reason to read it precisely. What the paper demonstrates is that the barrier to recovery is the availability of symbionts, not downstream damage — and that coral has a transport mechanism for moving them between compatible tissue. Palumbi noticed it by accident in a lab tank in 2025. The obvious engineering follow-up is grafting nurseries from single genets so fragments can share. The obvious limit is anakaine’s, from years of diving the Great Barrier Reef: at reef scale, bleaching events are so large that “there is often no non-bleached neighbour for vast distances.” A rescue mechanism that requires a survivor within physical reach is not a climate solution. It is a tool, and a good one, for reefs where a few colonies survived.
skew-aberration adds the useful background: bleached coral is not dead coral, and it can take up a different symbiont species on recovery — the adaptive bleaching hypothesis — which makes the transplant question more interesting than the press release lets on.
DeepSeek search and fetch – $0.75 per 1000 successful requests — 481 points
481 points · 234 comments · api-docs.deepseek.com · HN discussion
DeepSeek shipped two raw JSON endpoints — POST /v1/tools/search and POST /v1/tools/fetch — with the same bearer auth as its model API, powered by its own crawler rather than a third party. Search returns structured results with optional page content; Fetch returns a URL as Markdown.
The pricing is the story: $0.75 per 1,000 successful requests, billed per request rather than per token or per returned result, and only when the call returns HTTP 200 with actual results. Failures, empty result sets and timeouts are free. count up to 50 does not change the price. QPS is 5 per account on each endpoint, with a separate per-domain limit on Fetch. And for the near term, if you’re calling through DeepSeek’s own harness, Claude Code, or Codex, server-side tool calls are free until 1 November 2026.
Compare that to the field and it is not close at the request level: Brave is around $5 per 1,000 and Kagi $12, per the thread. ggnore7452 ran DeepSeek’s search and fetch through their own benchmark and came away unimpressed on quality — “quite cheap tho” — which is the trade you are being offered. Buying the cheapest retrieval layer and then paying for a better one when your evals say so is a defensible architecture; being surprised that the cheap one is worse is not.
The structural comment is mjmvisser’s: “These services only exist because Google refuses to provide a paid search API.” That is the whole market. Google monetises search through ads and will not sell you clean results, so every agent framework in the world is now paying someone else for a slightly worse index. londons_explore takes it to the logical end — if controlling what agents retrieve is worth more than the retrieval, search APIs could go to zero or negative, with providers paying you to route through them. That is not a joke. It is the same trade Meta is making in the story two sections down.
NY announces game ownership bill requiring ownership rather than licensing — 409 points
409 points · 186 comments · tomshardware.com · HN discussion
Rep. Ritchie Torres (D-NY) announced the Power to the Players Act, which would direct the FTC to regulate digital game sales as ownership rather than a revocable licence, and require games with online components to ship a working offline mode before their servers are shut down. Yesterday’s roundup had the original press release at 217 points. The Tom’s Hardware write-up is at 409, which is a bigger number for a smaller increment of information, and that is worth noticing.
The thread is unusually effective at puncturing it. dabinat starts with the headline: this is a federal bill introduced by a New York representative, not a New York law, and every aggregator got that wrong. JumpCrisscross goes harder: “announced he will introduce” is not “introduced” — there is no text, possibly no draft, and Torres is running for re-election in a safe Democratic district. xg15: this is an announcement of an announcement. semiquaver objects to the structure rather than the sponsor: directing the FTC to invent the rules is Congress declining to take a position.
The comment that should be the bill’s actual text is torben-friis’s. His concern is not running a 2005 game in 2025 — emulation finds a way — it is that this generation lost the second-hand market: buying at $30, reselling at $20, ten bucks a game. Ownership you cannot transfer is a weaker right than the one physical media gave you, and no offline-mode mandate creates it. If the bill passes in this shape, you will own your games and still not be able to sell them.
Gold is now the top U.S. export — 398 points
398 points · 217 comments · numismaticnews.net · HN discussion
Starting October 2025, gold has topped every other US export category in almost every month — ahead of crude, pharma, and aircraft. February 2026 may have set an all-time record by tonnage, not just by value, which rules out price as the sole explanation.
Where it goes is the interesting part. Switzerland first, which means refiners. Hong Kong second, which means China. The UK third, which means the London Bullion Market Association, the largest gold trading venue in the world. The US government reports its own reserves unchanged, so the metal is coming from current mine output and recycling rather than vaults.
Patrick Heller’s explanation is explicitly labelled speculation — foreign central banks diversifying out of dollar reserves, with aggregate central bank gold holdings now exceeding their Treasury holdings in value, and China cutting Treasuries from $1.096 trillion in April 2021 to $693 billion in February 2026 while pressing for payment in gold. The HN thread supplies the more mundane mechanism: JumpCrisscross notes global refining capacity running at near-full utilisation, with US refiners limiting purchases and turning away clients — so an export flow to Swiss and Hong Kong refiners is what a supply-chain bottleneck looks like from the outside. And legitster is the wet blanket the story needs: a large share is almost certainly scrap — boomers cashing out jewellery — which is a real market and says more about household balance sheets than about monetary strategy.
Two readings hold at once here. Central banks are accumulating gold at a rate that implies they mean it about de-dollarisation. And a record export number can be produced entirely by Americans selling their grandmothers’ rings. The article’s own framing leans hard on the first; the numbers do not distinguish.
Furifont, a Japanese font that shows furigana — 392 points
392 points · 82 comments · furifont.antfu.me · HN discussion
Anthony Fu’s Furifont puts furigana into the font itself. No <ruby> markup, no JavaScript, no plugin: you set font-family: 'Furifont Sans' and the reading appears above the kanji. It is compiled from Source Han Sans or Source Han Serif JP, and a build step walks a dictionary of thousands of words, drawing each reading into a new glyph and wiring a ligature so that 今日 becomes a single glyph with きょう above it. Longer words win over shorter ones — 日本語 before 日本 — and a kanji with no unambiguous reading stays bare.
It works everywhere a custom font works, which is the point. Releases ship Sans and Serif, hiragana and romaji readings, regular OpenType and WOFF2, plus a variable font whose furigana follows the weight of the text. There is a CLI to build your own from a different base font, word list or romanisation scheme, and a bookmarklet and userscript to apply it to any page you are reading.
The author’s own warning is the most interesting sentence on the page: “Furigana might be incorrect, due to the limits of fonts: a font sees one run of kanji at a time, not the sentence around it.” Japanese readings are context-dependent to an extent that makes this fatal in principle, and TazeTSchnitzel says so at length — the modal character has two readings, some have six, personal names have their own, and this is a “useful abuse of ligatures” that nobody should actually use for learning. jwolfe found the concrete failure: a word split across a line break got the wrong reading. omoikane found the funniest one — the font reads この先生きのこる as この先生 (sensei) rather than この先 生きのこる, which is the standard internet misparse and suggests the dictionary learned from memes.
Then shun_dev, a native speaker, reports that the font’s own Japanese demo page mis-reads 合字 as じ with 合 left blank, because it isn’t in the dictionary. The author shipped the bug in the showcase. That is the most honest thing about the project, and it is also a fair summary of the whole class: automatic furigana is a rendering trick that will be right most of the time and confidently wrong the rest, and the wrong cases are exactly the ones a learner cannot detect.
Dam removals are bringing fish back across the northeastern United States — 346 points
346 points · 88 comments · smithsonianmag.com · HN discussion
Ben Goldfarb’s piece for bioGraphic opens in 1859, with Thoreau hired to survey the Concord River so farmers could argue a Billerica textile dam out of existence. Thoreau hated the dam on his own account: ten years earlier he had written “Poor shad! Where is thy redress?” about the fish it blocked. The survey supported the farmers. The state let the dam stand anyway. Thoreau predicted nature might level it “after a few thousands of years.”
It took about 160. More than 2,300 US dams have come out since 1912, most in the last twenty-five years, and the movement peaked in 2024 when removals reconnected over 2,500 miles of river by American Rivers’ count. The Klamath was the big one: four hydroelectric dams, $500 million, more than 400 miles of spawning habitat reopened, free-flowing by August 2024, with thousands of chinook passing former dam sites in both 2024 and 2025. Before that, the Elwha.
The correction the article exists to make is about geography. Dam removal is not a western salmon story: the majority of removals happen in eastern states, at much smaller scale. Pennsylvania pulled 27 obsolete barriers in 2024, none over about twenty feet. Vermont, Maine and New Hampshire each lost one. And the backlog is enormous — one inventory counts at least 35,000 dams still truncating northeastern fish runs, including 3,000 in Massachusetts, 5,000 in Connecticut and 9,000 in New York.
m_herrlich raises the objection that will matter more every year: as winters warm, reservoirs that hold rain instead of snowpack become more valuable, and hydroelectric capacity is not nothing. His preference is fish ladders. just_howl gives the answer that actually drives the policy — most of these dams are abandoned private structures that are a liability to whoever owns them, and removal is cheaper than maintenance forever. The economics, not the ecology, is why they are coming out.
One housekeeping note from the thread: twright points out the piece is syndicated and reads far better at biographic.com/death-by-a-thousand-dams.
Making chicken transparent using Dorito dust — 342 points
342 points · 86 comments · chillphysicsenjoyer.substack.com · HN discussion
The underlying paper is real and was a genuine result: Ou et al., “Achieving optical transparency in live animals with absorbing molecules,” shows that soaking tissue in tartrazine — the yellow-orange food dye in Doritos — makes it translucent. The mechanism is refractive-index matching: tissue scatters light because fat, water and protein have different indices, and a strongly absorbing dye at the right concentration shifts the surrounding medium’s index enough to close the gap. The same trick that makes oil turn paper transparent.
The Substack post is a replication attempt with a deliberately hobbled protocol. The paper used 0.62 M tartrazine at 40 °C with a machine shaker; the author used 0.19 M at room temperature for six hours on a 2 mm slice of raw chicken breast because he “couldn’t find a way to do this safely, nor did I have the equipment.” The result is partial transparency: grid lines visible through the meat, texture unchanged to the touch, visual quality of a gummy bear. His control, soaked in water, is faintly yellow because the process is messy and got dust on it.
This is what a good replication looks like — underpowered, honestly reported, with the deviation from the original protocol stated up front instead of buried. Eridanus2 gets the physics right in one guess. masfuerte and _Microft supply the practical improvements the author lacked: partially freeze the meat before slicing for smooth surfaces, and add water at the interfaces to kill surface scattering. layer8 notes that Doritos in Europe do not contain tartrazine at all, and where it is used in the EU the packaging must carry a warning about adverse effects on activity and attention in children. teo_zero predicts an Ig Nobel, which is probably correct and should be taken as a compliment.
How the Elizabeth Holmes documentary “You Can See Everything” is deceiving — 323 points
323 points · 437 comments · readtheprofile.com · HN discussion
The essay’s claim is not that the documentary is bad. It is that the documentary is a machine for producing the exact error it depicts, and that the author watched a full theatre of adults fall into it — people shouting at the screen, one woman yelling “Criminal!” at someone who was not Holmes. The film is Nathan Fielder’s, and that is the tell.
The factual correction buried in the middle is worth the click on its own: Holmes was acquitted of all four charges related to defrauding patients. She is in prison because a jury found she knowingly misled investors who put in more than $700 million. That distinction is load-bearing, and the essay’s point is that almost nobody retains it, because the story arrived as a black turtleneck and a vial of fake blood. The comparison to Canon’s 2015 experiment — six photographers, one man, six different descriptions of him, six unrecognisable portraits — is not subtle but it is exactly right.
The thread splits along the obvious line. allturtles is correct that the essay asserts the deception without ever demonstrating it: “This basically a clickbait headline stretched out to blog post size.” somefoobar is even shorter: “The article seems to be amazed that movies can manipulate your emotions.” Against them, jdorfman quotes the essay’s own best sentence with agreement — you sit down believing you’re watching a documentary about a woman who deceived the world, and discover you’re watching a demonstration of how easy you are to deceive — and nanolith, who saw it Friday, says it “is a mind job” that leaves more questions than answers.
zug_zug has the strongest objection and it is a fair one: the film underweights how much hard evidence there was that Holmes personally committed crimes — concealed use of competitors’ machines she knew were incapable, fabricated military contracts, inflated revenue projections, admissions on the stand. The documentary’s formal trick is interesting. Whether it earns the cost of muddying a case that was actually decided on evidence is a different question.
RepRapMicron — 277 points
277 points · 38 comments · github.com/VikOlliver · HN discussion
Vik Olliver’s µRepRap is an attempt to build a self-replicating 3D printer at micron resolution out of “only common and easily accessible materials.” The lineage is the OpenFlexure project’s 3D-printed microscope stages, which is where the precision came from; the rest is flexures, probes and a lot of iteration.
The current build, PIKA V0.02, holds roughly 1 µm repeatable positioning and reliable 10 µm accuracy in an 8 mm cube. With a fine probe etched by the PIKA mechanism itself it has deposited UV resin droplets as small as 4 µm; with a fibre-optic probe it has cured 9 µm resin lines. It has printed a 0.5 mm “Benchy” at 4 µm layer height. The earlier MAUS build, now deprecated, managed 5 µm over a 4 mm square with non-linear motion.
The strategic claim — a printer that can print a smaller printer — is where le-mark pushes back, and reasonably: a 1/1000-scale self-replica implies 1/1,000,000 printing, and the arithmetic does not close. What is actually being built is the tooling chain: the ability to make probes, screws and flexures precise enough that the next stage becomes possible. mikewarot places it in the right historical frame — Ramsden dividing circles into arcseconds, Maudslay’s screw-cutting lathe, Wilkinson’s boring machine — the point being that every precision revolution started with someone building the machine that builds the measuring machine. godber gets the joke right: “Thank god, in 18 months we can start making our own RAM.”
Source code of the Estonian online voting system — 228 points
228 points · 216 comments · github.com/valimised · HN discussion
IVXV is the Estonian i-voting system, published on GitHub for public review — 478 stars, 65 forks. The README is explicit about the terms: the repo is not where development happens, but it is kept in sync, so what you read is what runs an election. Development is supervised by the State Electoral Office because the system has to track legislation.
The thread is the best argument on the page about what open source can and cannot buy you. kuratkull, Estonian: e-voting has been in use since 2001 and for parliamentary elections since 2007, the open source status is long known and appreciated locally, and there is no serious doubt about validity in the domestic or international expert community. belZaah, a former chief architect of Estonian public-sector IT, adds the design constraints that never make it into the debate — your paper vote always overrides your electronic vote, and the law provides for cancelling e-voting and falling back to paper. The system’s legitimacy is not cryptographic, it is institutional.
AndroTux, also Estonian, names the actual fragility: it works while people trust the government, and the day trust erodes, it doesn’t matter whether the count was analog or digital. cryptonector supplies the classical objection — Reflections on Trusting Trust, unverifiable firmware, and the fact that you cannot make a machine provably correct, only verify after the fact by statistical sampling. And cristaloleg delivers the review nobody wanted: with all due respect, “I expected to see something much more high grade.”
That last one is the note to end on. Publishing your election code is a real commitment and it is more than any US vendor does. It also means the code gets read, and being read is not the same as being praised.
The Commodore 64 hardware simulator — 227 points
227 points · 34 comments · github.com/antirez · HN discussion
Salvatore Sanfilippo built a pin-level simulation of the Commodore 64 motherboard, ASSY 250407. Not an emulator: a netlist plus pin-accurate models of every chip, so you can lift a leg, short it to ground or +5V, pull a chip out of its socket or open a resistor, and watch what the machine does.
The design principle is the whole thing: the simulator “knows nothing about what a broken Commodore 64 looks like.” When you lift pin 17 of the colour RAM before power-on and the machine boots looking healthy, that is not a curated failure mode — it is what falls out of the CPU and the VIC both addressing the same wrong location, so the RAM aliases. Put the leg back and the half that was never written appears as random colour. That is a real 2114 behaviour, computed from the circuit.
The candour about performance is what sells it. A real C64 runs at 31% speed on an M3 Max, 39% on a Ryzen AI Max+ PRO 495, 48% on an M5 Max. “It is not an emulator to play games with” — the sentence is right there in the README. The stated uses are learning the machine at a level you cannot safely reach on real hardware, and testing repair hypotheses so you desolder in the right order and as few times as possible.
linker3000 immediately tests that second use with a real case: timing edge cases with PLA replacements on the 250407, fixed in the field with a ~100 pF capacitor on the /CASRAM line, and does the schematic correspond? tombert connects it to byuu’s old explanation of why Higan was “slow” — accuracy costs synchronisation, and there was a Pong circuit simulation running at 10 FPS that astonished people. clhodapp asks where the line is: at some point you start simulating crosstalk, induction and RF. The answer, which Sanfilippo has effectively already given, is somewhere short of real-time — and that boundary being visible is the feature.
Show HN: Sphinx – A hook that quizzes you on your AI’s code before shipping — 225 points
225 points · 76 comments · sphinx-six-theta.vercel.app · HN discussion
A git pre-push hook that stops the push and asks you a question about your own diff. Not a reviewer — it reads the diff without your chat history and asks what happens when the change fails. The demo exchange is the right kind of nasty: your webhook saves the event ID before calling charge(), Stripe times out and retries, and the hook keeps asking until you have worked out that a failed charge means the customer is never billed.
That is a better intervention than another AI reviewer, because it tests the human rather than adding machine output to a queue nobody reads. It runs on minimal tokens, works from your existing agent or any OpenAI-compatible endpoint, supports Codex, Claude Code, Cursor, OpenCode and Pi, and your answers never reach the coding agent. sphinx yolo lets the push through and logs the skip.
The thread’s sharpest suggestion is fwlr’s: move the gate. Gate before asking a human for attention, not before production, and you prevent a category of waste instead of a category of outage. rDr4g0n points out he already does this by writing real PR descriptions — “describing something complex in a compact way requires understanding” — and that the writing is what surfaces the hidden decision. chacha-bong built it, got annoyed at being questioned, and stopped using it, which is the honest failure mode: a tool that asks you to prove you understand the thing you paid an agent to write is going to be popular in principle and resented in practice.
pjmlp has the cynical read and it isn’t wrong — “the gimmicks we come around to justify existing practices being pushed into the industry never stops surprising me” — but freshnode’s “ambulance at the bottom of the cliff” is the more precise objection. If the failure is that people merge code they don’t understand, a comprehension quiz at push time is late. It is still better than nothing, and nothing is the current default.
I Became a Citizen of Japan — 221 points
221 points · 165 comments · derekwessman.com · HN discussion
A first-person account of Japanese naturalisation. The specifics are what make it: a documentary burden that includes every address you have ever lived at with dates, a process the author describes as arcane and arbitrary and also, in his telling, correctly calibrated to weed out the uncommitted, and the requirement — since Japan does not permit dual citizenship — to prove renunciation of your previous nationality.
The thread is split between people who find the barrier defensible and people who find it a hazing ritual. excannuk takes the first position seriously and from experience: “I don’t think citizenship is a light thing. It is not rational to make it friction-free or fast. I was not ready to naturalize in 2012… the system worked correctly to weed me out of the process.” entropyneur takes the second: “I don’t know if something’s wrong with me, but this sounds like a humiliation ritual” — why fight for a country that made you do this. gcanyon opts out on practicality: producing a complete lifetime residence list is not possible for a lot of people who moved countries as children.
Two corrections are worth carrying. precommunicator notes the document list exceeds what many countries require for a security clearance. And sonar_un is sceptical of the account itself — someone who lived in Japan long enough to naturalise but never held a permanent residence card, skipping six years of the normal progression, is describing an unusual path. Read the post as one person’s experience and the thread as the corrective, which is the correct posture for this genre and rarely the one people take.
macOS 15.8.2 Breaks OpenGL — 217 points
217 points · 212 comments · developer.apple.com · HN discussion
A developer-forums bug report: after updating an M1 Pro MacBook from 15.8 to the 15.8.2 release candidate, every OpenGL context attached to a window loses its default framebuffer. NSOpenGLView and -[NSOpenGLContext setView:] both. Blank windows.
The diagnosis is complete and specific, which is why it is on the front page: kCGLCPHasDrawable returns 0, glCheckFramebufferStatus returns GL_FRAMEBUFFER_UNDEFINED, glClear throws GL_INVALID_FRAMEBUFFER_OPERATION, the kernel logs IOGPUGLDrawableUserClient::set_surface ... Invalid surface ID on every attach attempt, and CGLSetSurface returns kCGLBadDrawable because the user-client call fails with kIOReturnBadArgument after CGSBindSurface succeeds. Offscreen FBOs in the same context still work. CAOpenGLLayer and NSOpenGLLayer render fine. Only the window-surface path is broken. There is a public-API minimal reproducer and a filed radar.
The most useful comment on the page is a correction to the framing. Aurornis: 15.8.2 is not released, this is a release-candidate report from the developer forums, and the second reply in the thread is an Apple engineer acknowledging the bug, assigning a tracking number and asking for a retest on the next build. That is the system working. What people are actually reacting to is ryandrake’s point: OpenGL was deprecated in macOS 10.14 and has kept working for eight years by luck, so nobody should expect Apple to lift a finger when it breaks. corysama supplies the exit — LunarG’s Vulkan-on-Metal wrapper reached Vulkan 1.4 conformance this month, and Mesa’s Zink plus KosmicKrisp would put OpenGL on top of that.
The lesson is not that Apple broke something. It is that a deprecated API does not fail when it is deprecated, it fails on a random Tuesday years later, and the migration you deferred becomes urgent at a moment you did not choose. The comments are also a useful census of unrelated macOS bugs — audio routing, Bluetooth, window flicker on an M4 Air — which is what makes the thread feel less like a bug report and more like a support group.
Also new, below the sections
- Legal experts warn Meta’s new terms still grant broad scraping permissions — 206 points · 58 comments · niemanlab.org · HN discussion. The follow-up to yesterday’s Meta terms story, and the more useful half: lawyers read the revised language and say the rewording did not narrow the permission.
Retro_Devmakes the practical observation that Meta already crawls their site despite robots.txt, so the question is only how much more intense it gets.Bender: configure robots.txt, but never rely on it.mitxelacuts to it — does it matter what they have permission for when they will do it anyway.
Still on the page
The page barely turned over. Twenty-nine of yesterday’s stories are still above 200 points, and four of them moved by more than 150 points in a day. Deltas run from yesterday’s numbers to today’s.
OpenCode Hacked is the day’s real anomaly: 269 to 930, +661, on a Twitter post confirming that user credentials leaked. A security disclosure on a vendor’s own social account outperforming a 763B model release by one point is a clear signal about what this audience actually fears. DeepSeek-v4.1 went 541 to 929, which is the same launch finding its audience a day late. Solar surpasses nuclear added 293, taking it from 371 to 664 — the third day of gains on a story that is a September pv-magazine piece. You could have invented transformers added 172 to reach 616, and Llmspeed added 103 to reach 318, which for a Show HN hardware-estimator is remarkable staying power.
Five stories from yesterday dropped below the scanned window: Butlerian Jihad (371), the Home Assistant secrets-scanning thread (246), Postgres 19’s delay (217), the original house.gov submission of the game-ownership bill (239, superseded by today’s 409-point write-up), and Gemini 4 Argon’s model page (1,463, now off-page). Falling off this window is not the same as falling off HN, and I am not going to publish a number I have not read off the API.
Throughline
Three stories today are about the same thing: how you know whether a system actually works, and how expensive it is to find out.
The Commodore 64 simulator is the purest case. It has no opinion about what a broken C64 looks like — it computes the failure from the netlist, and if the result happens to match reality, that is evidence. The Estonian voting system is the institutional version: the code is public, so the argument moves from “trust us” to “read it,” and the first thing that happens when people read it is that a commenter says the quality is lower than he expected. Sphinx is the personal version, and the most uncomfortable one: a hook that asks you to explain the diff you are about to push, which is a test of whether you understood the thing you paid for.
All three are honesty machines, and all three are cheaper than the alternative they replace. That is not a coincidence — it is the only reason anyone adopts them. Reading code is cheaper than an incident. A 1 µm printer is cheaper than a fab. A quiz is cheaper than an outage.
The second thread is scope. Every one of today’s best posts publishes its own limits, and the limits turn out to be the interesting part: the coral result works only on genetically identical fragments, which means it is a nursery technique and not a reef-scale rescue. Furifont’s author warns you his readings will sometimes be wrong, and his own demo page contains a case. Pele ships a compatibility page instead of claiming parity. RepRapMicron prints a 0.5 mm Benchy and does not claim to print a computer. The C64 sim runs at 31% speed and says so in the README.
Compare that with the two stories about large platforms. Meta’s automated enforcement did what it was designed to do to a coalition posting at high frequency on its biggest day, and the honest version of that statement — “our system suspends accounts that post a lot, and we cannot afford enough humans to review it” — is not one a press release will contain. Meta’s new scraping terms are the same shape: legal experts read the language and conclude the permission did not narrow, and the practical answer from the thread is that robots.txt never mattered. Those are systems whose failure modes are not published, which is exactly why they keep surprising people.
Gold exports and the game-ownership bill are the same idea in a different register. A record export number can be central banks de-dollarising or Americans pawning jewellery, and the article picks the flattering reading because the two are indistinguishable in the data. A bill that would give you ownership of your games does not give you the right to sell them, so the thing you lost in the move to digital survives the fix. Both are cases where the headline and the mechanism are not the same object, and neither is dishonest — just narrower than it sounds.
Put together, the page’s argument today is that the price of legibility has fallen far enough that the people who publish their limits are winning the attention. A 4 µm chicken, a 1 µm printer, a font that admits it will misread your sentence, and a simulator whose whole purpose is to let you break things deliberately — none of those are big stories. They are all, in the specific sense, honest ones. And the two stories that generated the most heat are about institutions that will not tell you where the edge is.