Thursday, 11 June

17:35

Apple Gave Siri Hands [I, Cringely]

WWDC answered whether your assistant is private. It never answered whether it’s telling the truth — and Apple just gave it hands.

The smartest thing I’ve read about Apple’s WWDC didn’t come from Apple. It came from an analyst named Nate B. Jones, who watched the same keynote everyone else did and noticed that the real story wasn’t whether Siri had finally gotten smart. The real story, he argued, is a land grab over what he calls the trusted action surface — the place where AI actually meets your work, touches your apps, and is handed permission to do something. There are two great bottlenecks in AI, he points out: raw compute, which is Jensen Huang’s kingdom, and the trusted surface where intelligence becomes useful, which is the one Apple just went to war for. Whoever owns that surface owns the meter when intelligence becomes unavoidable. It’s a sharp frame, and he’s right.

He’s right, but he left out the scariest part.

Here is what Apple actually did. It tore Siri down to the studs and rebuilt it on Google’s Gemini — reportedly a custom, 1.2-trillion-parameter model that Apple pays Google something on the order of a billion dollars a year to use. It gave the new assistant eyes: real-time awareness of what’s on your screen. And — this is the part that matters — it gave it hands. The new Siri doesn’t just answer. It manages your browser tabs, rewrites your weak passwords, reaches across your apps, pulls context out of Mail and Messages in the middle of a phone call, and acts inside the software where your life actually happens. Craig Federighi wrapped the whole thing in a promise about privacy and took a quiet shot at the rest of the industry for chasing AI for its own sake while losing sight of the people it’s supposed to serve.

It was a good keynote. And it answered exactly one of the two questions that matter.

Apple answered is it private? — will the assistant know your life without strip-mining it and selling the tailings? That’s a real question, and Apple has a real, earned answer. The other question, the one nobody on that stage went near, is is it true? And the instant you give an assistant hands, that second question stops being academic.

Think about what changes when an assistant goes from talking to doing. When a chatbot makes something up, it costs you a minute and a raised eyebrow. When an agent makes something up and then acts on it, it sends the email to the wrong person, moves money to the wrong account, deletes the file it meant to keep, books the flight for the wrong Thursday. A hallucination in a chat window is an annoyance. A hallucination with hands is an incident. Agency multiplies the cost of being wrong by exactly the thing that makes agency valuable.

And what is driving those hands? A large language model — a very capable one, but the same kind of machine that, like every model of its line, fabricates with total confidence when it doesn’t know. Gemini is excellent and Gemini hallucinates; both are true, the way both are true of all of them. Apple took the most capable probabilistic guess-engine it could license, gave it the keys to your apps and permission to act, and then reassured you about privacy. The locks on the doors are magnificent. Nobody mentioned whether the butler tells the truth.

This is the gap I’ve spent this whole series circling, and I’ll disclose again that I co-founded a company built on closing it, so weigh that however you like. But the principle stands on its own, and it is bigger than any one company: a trusted action surface is only as trustworthy as the facts the agent acts on. You can own the device, the operating system, the permission prompt, the whole beautiful surface — and if the thing deciding what to do is guessing, you have built a faster, smoother way to be confidently wrong about someone’s money. The surface needs a substrate. The hands need a conscience. Trust has two axes — privacy and veracity — and at WWDC Apple shipped one of them and didn’t mention the other was missing.

Which loops back to Jensen, and to the argument I’ve been making from the other direction. Nate’s case is that value migrates off the model and onto the surface, and that this is NVIDIA’s problem. Mine has been that value migrates off the GPU and onto a humbler kind of silicon — the CPU —, because most of what we ask AI to do is look something up, not dream. Two different roads, one destination: the belief that NVIDIA’s position is a law of nature is a story, not a fact. But notice that the surface only wins if people trust it — and the agentic surface raises the trust bar at the very instant it raises the stakes. Owning the meter is worthless if the meter lies.

So watch the surfaces, as Nate says. But watch what they’re built on. Apple just gave a billion people’s computers hands, eyes, and access, and wrapped it in the best privacy story in the industry. It gave Siri hands before it gave Siri honesty. Until the conscience ships, the hands are the part I would keep an eye on.

Robert X. Cringely is a co-founder of 2Brains, Inc., in Charlottesville, Virginia. He has written this column since 1987.

The post Apple Gave Siri Hands first appeared on I, Cringely.






Digital Branding
Web Design Marketing

Please I Beg of You Do Not Use “AI” In Your Business Communications [Whatever]

The other morning I was clearing out the multiple daily emails I get from scammers who have used “AI” to praise one of my books in order to get me to use their “marketing” services and/or be on their “podcast” and/or show up for their “book club” and/or use them to become big in Hollywood, all of which is cover to grift money from me, one “Ai”-written email in particular caught my eye. This was not because it was any more authentic than the rest of them, but because the domain it came from was a specific and legit business domain, and not just Gmail or Hotmail or even (oh lord) AOL.com. In a burst of concern, I sought out the email of the company head and their management contact to let them know I suspected their domain had been hacked by scammers.

I got a reply back that, no, actually, the email, which to me had clearly been written using “AI,” was legitimate.

Folks: Don’t do this. Don’t use “AI” for your business correspondence, especially to creatives. Ever.

Let me put this in perspective: I get literally dozens of spam and scam emails every day, all of which use “AI” to fart out canned flattery about my work in an attempt to bamboozle cash out of me. I get so many of them, in fact, that I can tell at a glance not only that the text has been written with “AI,” but also, at this point, which of the “big four” LLMs was used to fart it out. Hell, I literally just now got a scam email in Spanish, and I could tell what it was going to say even before I pressed the “translate” button.

This is how predictable “AI” writing is, and how frequently it is used for fraudulent purposes. At this point, my brain immediately and directly associates “AI” text in email with “scam.” That is its only purpose.

The thing is: I’m not special. Every writer and creative person, from the most successful down to the very newest, is inundated with these scam spam emails. Lots of them, every single day. Pretty much every one of us, I assure you, now associates “AI”-generated text with attempted fraud.

When you, a legitimate business, use “AI” to communicate with me, I do not think “wow, that was a really well-composed email that makes me want to engage with the sender in a mutually co-operative way.” I makes me think “This is a fucking scam,” or, in the most charitable scenario, “This company has been hacked and a scammer is using their domain to fleece people.” Maybe you don’t know this, because you’re not the recipient of endless attempts at scammage via “AI.” But I know this, and it’s why I am telling you now: When you use “AI” in your professional communications, you do not look like a professional. You look like a fucking scammer.

There is a solution! Just don’t use “AI” to write your professional correspondence! Remember the day, like, just four years ago, when you pretty much wrote all your emails by hand? Do that again! It’s not difficult, you won’t look like a scammer, and your email has a better chance of being read and treated as if it came from an actual human, because it doesn’t look like every other awful scam email out there. It just makes good business sense.

Also, aside from the “you look like a scammer” angle: Why would I want to do business with someone who can’t even write a single fucking email on their own? This is a “basic competence” issue, folks. If you can’t get it together to write a simple business communication by yourself, what confidence should I have about any other aspect of your business? What value do you have for me? I mean, I also have access to “AI,” so if that’s what you’re bringing to the table, what do I need you for? As the saying goes, you have only one chance to make a first impression. If my first impression of you is that you’re letting “AI” do the talking for you, then my impression is that you’re not offering me anything at all.

So, yeah. “AI”? Don’t use it in your business emails. It does nothing positive for you, and does a lot that is negative. Just write the email yourself, or, if you’re a boss, pay someone to do it for you. It’s going to make a difference, and at the very least, your chances of being immediately and forever sorted into the spam folder will be a lot lower.

By the way, from the time I started writing this to right now, which is roughly a half of an hour later, I have received eight “AI”-written scam emails, including the one in Spanish mentioned above. This is what you’re up against when you send something to my email. If you’re using “AI” to write your business email, this is also what you’re sorting yourself into. Think about it, maybe.

— JS

16:07

Homebrew 6.0.0 released [LWN.net]

Version 6.0.0 of the Homebrew package-management system has been released. Notable changes in this release include the introduction of tap trust to improve supply-chain security, improvements in sandboxing on Linux, a number of performance tweaks, and many other changes.

See the changelog for a full list. LWN covered Homebrew in November 2025.

[$] Automatic mTHP creation in 7.2 [LWN.net]

The Linux kernel has long tried to use huge pages as a way to improve performance, sometimes with more success than others. The size of huge pages has traditionally been imposed by the hardware, which typically only offers a couple of relatively large options. In more recent times, though, the use of multi-size transparent huge pages (mTHPs), with more flexible sizing implemented in software, has been growing. If all goes well, the 7.2 development cycle will include the addition of a new feature, contributed by Nico Pache, to make the use of mTHPs even more transparent.

15:56

Pluralistic: The world has moved on (11 Jun 2026) [Pluralistic: Daily links from Cory Doctorow]

->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None -->

Today's links



A blasted wasteland with a mushroom cloud rising over it. In the foreground are swarms of drowning people climbing over each other to escape into the limbs of a dead tree, and a crowd of agonized skeletons. All sourced from Dore engravings illustrating the Old Testament.

The world has moved on (permalink)

Douglas Adams wrote, "Anything that is in the world when you're born is normal and ordinary and is just a natural part of the way the world works. Anything that's invented between when you’re 15 and 35 is new and exciting and revolutionary and you can probably get a career in it. Anything invented after you're 35 is against the natural order of things."

If you'd like an essay-formatted version of this thread to read or share, here's a link to it on pluralistic.net, my surveillance-free, ad-free, tracker-free blog:

https://pluralistic.net/2026/06/11/lapsarianism/#nostalgia-is-a-toxic-impulse

I think about this quote whenever I get angry at the technology around me. When I rail against the Great Enshittening, am I simply committing the sin of nostalgia ("Nostalgia is a toxic impulse" -J. Hodgman)? I am, after all, old.

I've written before how conservatives' yearning for "simpler times" is really just a wish to be a child again. The reason times seemed simpler during your childhood is that you were a child, and if your parents did their job, they shielded you from a lot of the complexity of their adulthood so you could enjoy your childhood:

https://pluralistic.net/2025/04/24/hermit-kingdom/#simpler-times

That's where the "National Customer Rage Survey" comes in. It's been surveying a panel of 1,000 representative consumers every three years for a decade, continuing a research project that started in 1976. The survey measures respondents' attitudes towards the businesses they deal with, and as of 2025, it's fair to say, customers are pissed:

https://customercaremc.com/2025-national-customer-rage-study/

We're experiencing more problems with the products and services we use. Those problems are more severe, they make us angrier, and they produce lingering stress. More and more, we are seeking revenge on the businesses that piss us off.

So it's not just me, an old man yelling at the cloud. The world is getting shittier.

The latest Customer Rage Survey inspired The Guardian's Heather Timmons to launch a new investigative series looking at how fucked up everything is. Her inaugural installment is very good, and it's drawn a massive reader response:

https://www.theguardian.com/us-news/ng-interactive/2026/jun/04/us-consumer-rage-prices-economy

I spoke with Timmons this week about the series. She told me she's been deluged with emails from readers who feel that the world is different now – and many of them cite my work on enshittification. Timmons wanted to know what advice I had for her readers. I told her that I don't think you can solve this as a consumer, because this isn't a market problem, it's a political problem, and shopping isn't politics:

https://pluralistic.net/2026/05/21/purity-culture/#stop-fucking-that-chicken

Later, Timmons forwarded one of those emails to me. It gave an eloquent and evocative account of just how rancid the vibe is these days. The writer said that when they and their spouse encounter this rot, they cite Stephen King's Dark Tower novels, quoting the oft-repeated phrase from that series: "The world has moved on."

At this point, I should warn you that the following contains some Dark Tower spoilers, so if you're planning to read a decades-old (but very good) dystopian western/science fiction crossover series, and if spoilers bug you, this might not be the essay for you.

Spoiler alert!

Still with me? OK, then.

In the Dark Tower novels, we crisscross a fallen world in which decay is all around us. The buildings are rotten, the machines have stopped working and no one knows how to fix them, babies and livestock alike are frequently born with deadly congenital defects. Much of the world has fallen into wasteland, cracked and barren. An army of wreckers, led by the demagogue John Farson (who styles himself "The Good Man") are slowly but surely conquering the land, laying waste to those few remaining outposts of civilization and conscripting the young men in the conquered lands to march on their neighbors.

It wasn't always this way. There was a time when the world was defined by hope and virtue and light, when the machines were fixed and the crops were harvested. Life wasn't golden – there were still squabbles and sorrows and even wars – but life was good.

And then the world moved on.

For reasons that no one truly understands, the normal push/pull of decay and renewal turned into a one-way, irreversible process in which everything that crumbled or snapped or burned up couldn't be repaired or replaced or recovered. Our mysterious ability to beat back the Second Law of Thermodynamics – an absurdity we probably should have always treated as an aberration – has collapsed. The world has moved on.

The Dark Tower series is a long, long, long Bildungsroman, with many detours through the life-stories of the characters in the ensemble cast, as well as the biographies of many of the figures they meet along the road. It's mostly an adventure novel, as road-trip tales tend to be, but those character studies and the lore that they surface – from our world and theirs – creates an overwhelming, many-layered, richly textured sense of loss and worse, of despair. For the world has moved on, and despite the love and care and bravery of many of the people in that world, the world cannot be redeemed. Each terrible day of those people's lives is the best day of the rest of their lives. From here on in, it only gets worse.

When Timmons' reader and their spouse greet every fresh depredation in modern life – hours on the phone with customer service to resolve a billing error that the company repeats every month, say – with "the world has moved on," they are invoking something heavy. This isn't just a rancid vibe, it's the fucking end-times.

For all that the Dark Tower novels are a series of cracking adventures and thoughtful character studies, they are also a mystery. Over and over again, we are made to ask ourselves, why has the world moved on? Was it John Farson and his army? Was it the Man in Black, the evil wizard whom the book's protagonist has pursued across time and space? Was it the Crimson King, the evil force whom the Man in Black serves?

Well, yes – and no.

Midway through the novels, we learn that the Crimson King and his evil minions have laid siege to "the beams," vast ley-lines that span the universe and provide the force that pushes away entropy, creating breathing room where repair and care can live. "All things serve the beams," we're told. The beams are the organizing force of the universe, the answer to the riddle of how such pitiful things as we could have fought back remorseless entropy for so long. By attacking the beams, the villains of the series have all but snuffed out that force, and so the world has moved on.

When I read that email and the invocation of the Dark Tower, I was immediately struck by how apt this comparison is. Because, as I've written many times, there were always enshittifiers who would have plundered your data and money and treated you with naked contempt:

https://pluralistic.net/2025/03/04/object-permanence/#picks-and-shovels

There were always enshittifiers, but those enshittifiers faced external forces that checked their wreckers' urge. They were held in check by competition, and regulation, and workers' sense of fairness and duty, and by the threat of new products and services that might pop up to correct the defects they deliberately introduced into their products by enshittifying them.

And the foundation – the Dark Tower upon which all the beams converged- was antitrust enforcement, grounded in the idea that we could not afford to let any company – not a "good" company, nor a "bad" company – get so large that it could no longer be regulated, lest its executives become "autocrats of trade":

https://pluralistic.net/2022/02/20/we-should-not-endure-a-king/

The same people who laid siege to antitrust law would later come after all forms of checks and balances. These are the people who gave us the "unitary executive" and Project 2025, and the collapse of accountability that has allowed the worst people to commit the gravest sins they could imagine and still reap vast fortunes. These beam-breakers wanted kings, and they got them.

I collect definitions of "conservatism," and one of my favorites comes from Corey Robin's book, The Reactionary Mind. Robins asks how it is that we can call so many disparate, irreconcilable ideologies – various ethno-nationalisms, imperialism, financialism, patriarchy, Christian nationalism, libertarianism, white supremacy, etc – "conservative"? What binds all these views together?

https://pluralistic.net/2025/07/22/all-day-suckers/#i-love-the-poorly-educated

Robin's answer: the foundation that all these otherwise disparate views share is that some people are born to rule, while others are born to be ruled over. When these lesser people are elevated to positions of power, their inferiority creates a system of misrule, by which we all suffer. The best outcome for everyone is for us all to know our place and defer to our social betters.

That's why conservatives are obsessed with affirmative action, DEI, and any form of anti-racism. For them, the discriminatory outcomes we see in the wild are natural, reflecting the in-born defects in the people at the bottom of the social order. That's why, after every plane crash, every collision between a cargo ship and a bridge, every spectacular corporate bankruptcy, conservatives race to uncover the race, gender, religion and sexual orientation of the captain, the pilot or the CEO.

If the person who oversaw the catastrophe has anything remotely resembling a marginalized identity, then this is loudly trumpeted as confirmation that "diversity hires," promoted above their station, are ruining our society and wrecking our bridges. Naturally, if the person in charge was a wealthy, well-born, straight white guy, that's just proof that shit happens – it definitely doesn't prove that white straight guys, as a class, should be removed from positions of power.

For conservatives, virtue is "whatever the people who are born to rule desire." Hence Frank Wilhoit's definition of conservativism, "exactly one proposition, to wit: There must be in-groups whom the law protects but does not bind, alongside out-groups whom the law binds but does not protect." It's not a crime if the president does it. It's also not a crime if your boss does it, or if a monopolist does it, or if ICE does it. It's not a crime if the IDF do it, or if the Epstein Class do it. "Taxes are for the little people":

https://pluralistic.net/2021/06/15/guillotines-and-taxes/#carried-interest

The attack on antitrust law was part of the attack on the rule of law, the campaign to put everyone back in the their place. It's a piece of the effort to establish a new hereditary aristocracy, and every hereditary aristocracy requires heredity serfs (that would be us):

https://pluralistic.net/2022/11/06/the-end-of-the-road-to-serfdom/

The ideology of economism – which says that market outcomes are the only way to govern a society – cashes out to "the strong do what they can and the weak suffer what they must." If we interfere with mergers, or labor practices, or commercial conduct, we "distort the market," which is literally going against nature:

https://pluralistic.net/2022/10/27/economism/#what-would-i-do-if-i-were-a-horse

That's why Trump dismantled the consumer protection agencies, the antitrust agencies, the labor protection agencies, the environmental protection agencies. When someone in power cheats the system, that's not a crime, no matter how many people they rob, maim or kill. As Trump told us on the debate stage in 2016, that kind of cheating "makes me smart":

https://pluralistic.net/2024/12/04/its-not-a-lie/#its-a-premature-truth

That's why Elon Musk (almost) got to force every pension saver in America to bail out his money-incinerating AI business and his failed social media takeover – because the rules that protect everyday investors are "for the little people." Musk's mistake was trying to get a bunch of billionaires to hold the bag, too. The one form of systemic violence our society will not tolerate is trillionaire-on-billionaire violence:

https://www.cnbc.com/2026/06/05/spacex-blocked-from-early-us-benchmark-index-entry-as-sp-reaffirms-existing-rules.html

The world has moved on. 50 years of neoliberal rule has weakened and snapped the beams – the rule of law, consumer and labor rights, civil rights – that radiated from our Dark Tower – antitrust law, which blocked the emergence of the "autocrats of trade." The people who besieged these beams had the same motives as the Crimson King and John Farson and the Man in Black: they were willing to pay any price for a world free from consequences for people like them. They knew they were born to rule, and that the rules were "for the little people," that breaking those rules "made them smart."

They wanted "bossism." Or, as rendered in the original Afrikaans, "baasskap," which means, "the social, political and economic domination of South Africa by its minority white population":

https://en.wikipedia.org/wiki/Baasskap

Not for nothing, baasskap is the foundation of Muskism, the ideology that Elon Musk epitomizes, even if he can't articulate it:

https://pluralistic.net/2026/04/21/torment-nexusism/#marching-to-pretoria

In "The Utopia of Rules," the late David Graeber described how neoliberal deregulation produced exactly the kind of state that we were warned we'd get under communism. Thanks to monopolies, all the stores were the same and they all sold the same goods. Thanks to the dismantling of labor protection and unions, no one had enough money to get by. Thanks to elite impunity, we were ruled by monsters who committed crimes in the open and thrived as a result. Thanks to unchecked greed, we paid everything we had for healthcare, only to be denied treatment when we needed it. Thanks to the dismantling of the welfare state, more and more of us had to wait in long lines to fill out absurdly long forms in triplicate. Thanks to the intrinsic instability of such a terrible system, more and more of us ended up in prison, and protest became more and more illegal:

https://memex.craphound.com/2015/02/02/david-graebers-the-utopia-of-rules-on-technology-stupidity-and-the-secret-joys-of-bureaucracy/

Graeber pointed out that the rise of the web made it seductively easy for people in authority to force us to fill in forms. When analog bureaucracies impose paperwork costs on us, they also impose paperwork costs on themselves, because processing and filing those forms requires substantial effort, even if filling in those forms requires even more effort from us.

When it comes to virtual paperwork, the asymmetry is even more pronounced. Sure, it takes some admin to set up an online form and write the scripts to process its outputs, but that's a one-off. The form-giver can perform a very little admin and still impose a giant, repeated admin burden on the rest of us.

AI has only made this worse. Now, thanks to vibe coding, everyone can produce a form and its associated processing and analytics back-end with prompts, which creates a grave moral hazard. The kinds of activities that I used to fill in a single short form to accomplish now requires ten lengthy forms, created by different people in the same organization, all asking for variations on the same information. Through AI, we have democratized bureaucracy. It's Kafka-as-a-service.

What's more, when you're dealing with a monopoly, you have no choice but to complete whatever paperwork they throw at you. And when the vibe-coded back-end scripts shit the bed and lose or misinterpret your data, you have no choice but to endure an infinite telephone hold queue (if you're lucky) or get shunted to a customer service bot (if you're unlucky):

https://pluralistic.net/2025/11/11/sorry-to-bother-you/#we-dont-care-we-dont-have-to

It's entirely possible to build webforms that are thoughtful, fast, respectful of our time, and well-processed. The problem is that fielding these forms requires that the form-giver undertake some intensive, moderately expensive work (once), while skipping this step merely requires that we all perform intensive, time-consuming work (over and over and over again):

https://mohkohn.co.uk/writing/html-first/

This is how we end up with government forms that require you to list every trip you have ever taken to the USA, since your infancy, with every flight number, which you can only get help with by talking to a chatbot that emails you an out-of-date PDF no matter what question you ask of it:

https://pluralistic.net/2026/02/06/doge-ball/#n-600

This is how we end up with massive customer service queues, long lines at tills, and no one at the gate to answer your questions when your flight is canceled. Understaffing is a form of enshittification, one that shifts value from shoppers to owners, and shifts consequences from owners to workers:

https://pluralistic.net/2026/03/22/nobodys-home/#squeeze-that-hog

This is how we end up with broken machines that no one can fix. Firing workers and replacing them with chatbots or contractors means incinerating their process knowledge – the precious, inchoate, unrecorded understanding that keeps everything working:

https://pluralistic.net/2026/04/08/process-knowledge-vs-bosses/#wash-dishes-cut-wood

This is how companies that make products we love suddenly decide to wreck those products: when the only consequences for shitty products is angry customers with nowhere to go and no one to vent their rage upon except workers who have no labor rights and can't afford to quit, why not do a mafia bust-out for every business?

https://pluralistic.net/2023/07/28/microincentives-and-enshittification/

The world has moved on. Nothing works. Everything costs too much. No one can help. No one knows how to fix anything. The beams were broken by the Crimson King and his economism-crazed minions. The Dark Tower might fall.

So what consumer advice do I have for people who are angry about this? I don't have any consumer advice, I'm afraid. You can't shop your way out of a monopoly. Once again, shopping is not politics.

What I have for you is political advice. To restore the beams and beat back entropy again, we need a better system, not more virtuous individuals. If you feel – as I do – that "the world has moved on," then to wrench it back, you will have to join a polity. Support activist groups like the Electronic Frontier Foundation, the digital rights group I've been at for the past 25 years:

https://supporters.eff.org/donate/join-eff

Join a union. If there's no union at your jobsite, start a union. If you work in tech, you start this process by talking to techsolidarity.org and the techworkerscoalition.org. In the UK, get in touch with United Tech and Allied Workers:

https://utaw.tech/

Get involved in party politics. Find a political party whose local organization supports your values (even if the national version of that party sucks) and then work with your fellow grassroots activists to drag or replace the party leaders. Get involved in local politics: if there's one thing Moms For Liberty has taught us, it's that unregarded, seemingly unimportant local offices have enormous potential to change facts on the ground for the people where you live. Those changes don't have to be change for the worse.

Doing politics is hard. Hell, after all, is other people. It would be great if we could make change by changing ourselves, but that's not how any of this works. The world has moved on, and you can't save it. But together, we can restore the beams and beat back entropy. Hell is other people, but only because other people are so great but it's so hard to figure out how to work together. We can do it, though. We did it with the post-war settlement, the 30 glorious years when we built the welfare state, regulated polluters and bosses, and kicked off the civil rights movement. We did it then, and we can do it again. We must. All things serve the beams.


Hey look at this (permalink)



A shelf of leatherbound history books with a gilt-stamped series title, 'The World's Famous Events.'

Object permanence (permalink)

#20yrsago Coupland’s JPod: the Anti-Microserfs https://memex.craphound.com/2006/06/09/couplands-jpod-the-anti-microserfs/

#20yrsago Anti-iTunes DRM demonstrations across the USA tomorrow https://www.defectivebydesign.org/node/98

#20yrsago EFF co-founder Barlow debates MPAA prez Glickman http://news.bbc.co.uk/2/hi/programmes/newsnight/5064170.stm

#20yrsago Warehouse where old Disney World rides go to die https://limegreen-loris-912771.hostingersite.com/lost-horizons-another-look-back-at-a-future-world-favorite/

#15yrsago IMF considered harmful https://www.independent.co.uk/voices/commentators/johann-hari/johann-hari-it-s-not-just-dominique-strausskahn-the-imf-itself-should-be-on-trial-2292270.html

#15yrsago AT&T lobbies Wisconsin GOP to nuke Wisconsin’s best-of-breed co-op ISP for educational institutions https://communitynetworks.org/content/does-att-really-own-wisconsin-legislature-battle-over-wiscnet-continues

#15yrsago Developmentally disabled man harrassed by TSA at Detroit airport https://web.archive.org/web/20110610141422/http://www.myfoxdetroit.com/dpp/news/taryn_asher/dad-special-needs-son-harassed-by-tsa-at-detroit-metropolitan-airport-20110608-wpms

#15yrsago Miami cops intimidate citizen journalist who recorded shoot-em-up, smash camera https://web.archive.org/web/20110615035017/https://www.miamiherald.com/2011/06/02/v-fullstory/2248396/witnesses-said-they-were-forced.html

#15yrsago NYC cyclist vs. bike lanes – kamikaze law-abiding https://web.archive.org/web/20110612100758/https://consumerist.com/2011/06/test.html

#15yrsago Judge to copyright trolls: you are “inexcusable” https://arstechnica.com/tech-policy/2011/06/judge-furious-at-inexcusable-p2p-lawyering-cancels-subpoenas/

#15yrsago Wah wah crybaby extortionists wah wah https://torrentfreak.com/anti-piracy-lawyers-defame-torrentfreak-in-court-110609/

#15yrsago Lisa Goldstein’s The Uncertain Places: Grimm fairytale in California vibrates with believable unreality https://memex.craphound.com/2011/06/09/lisa-goldsteins-the-uncertain-places-grimm-fairytale-in-california-vibrates-with-believable-unreality/

#15yrsago American right upset at report that Thatcher won’t meet Palin https://www.theguardian.com/world/2011/jun/09/margaret-thatcher-sarah-palin-meeting

#15yrsago Lobbynomics: Canadian Chamber of Commerce manufactures fake $30 billion counterfeiting loss https://web.archive.org/web/20110611045202/https://www.michaelgeist.ca/content/view/5841/125/

#10yrsago USA Swimming bans rapist Brock Turner for life https://www.rollingstone.com/culture/culture-news/usa-swimming-bans-convicted-rapist-brock-turner-for-life-114108/

#10yrsago Human advice for exercising while depressed https://web.archive.org/web/20160505140324/https://theestablishment.co/2016/05/05/depression-busting-exercise-tips-for-people-too-depressed-to-exercise/

#10yrsago Every industry thinks it’s special, but only finance gets treated that way https://www.nakedcapitalism.com/wp-content/uploads/2016/06/John-Kay-BIS-speech.pdf

#10yrsago Spain’s Podemos Party publishes its manifesto in Ikea Catalog form https://estaticos.elperiodico.com/resources/pdf/9/4/1465389843149.pdf

#10yrsago Reminder: Neal Stephenson predicted Donald Trump in 1994 https://memex.craphound.com/2016/06/10/reminder-neal-stephenson-predicted-donald-trump-in-1994/

#10yrsago Donald Trump, deadbeat https://www.usatoday.com/story/news/politics/elections/2016/06/09/donald-trump-unpaid-bills-republican-president-laswuits/85297274/

#10yrsago UK startup offers landlords continuous, deep surveillance of tenants’ social media https://web.archive.org/web/20160610150904/https://gawker.com/new-startup-that-sends-dossiers-on-your-private-social-1781576586

#10yrsago UK Parliament votes in Snoopers Charter, now it goes to the House of Lords https://www.techdirt.com/2016/06/08/uk-parliament-ignores-concerns-moves-snoopers-charter-forward/

#10yrsago Hard times for judge who sued dry-cleaner for $65M over missing pants https://www.loweringthebar.net/2016/06/pants-chapter-28.html

#10yrsago New York Attorney General to Time Warner: your Internet is “abysmal” and “troubling” https://arstechnica.com/information-technology/2016/06/time-warner-cable-internet-speeds-are-abysmal-ny-ag-claims/

#10yrsago Banks confront negative interest rates with plans to store titanic bundles of money on-site https://www.nakedcapitalism.com/2016/06/banks-rebel-against-negative-interest-rates.html

#10yrsago Watchdogs 2: hacker kids led by a guy named Marcus fight the DHS in San Francisco https://www.youtube.com/watch?v=5ipUwUcHASI

#10yrsago Internet greybeards and upstarts gather to redecentralize the Internet https://www.nytimes.com/2016/06/08/technology/the-webs-creator-looks-to-reinvent-it.html

#10yrsago How we will keep the Decentralized Web decentralized: my talk from the Decentralized Web Summit https://www.youtube.com/watch?v=Yth7O6yeZRE

#5yrsago Prisoners' Inventions https://pluralistic.net/2021/06/09/king-rat/#mother-of-invention

#5yrsago Urban broadband deserts https://pluralistic.net/2021/06/10/flicc/#digital-divide

#5yrsago A denialism taxonomy https://pluralistic.net/2021/06/10/flicc/#denialism


Upcoming appearances (permalink)

A photo of me onstage, giving a speech, pounding the podium.



A screenshot of me at my desk, doing a livecast.

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "The Reverse-Centaur's Guide to AI," a short book about being a better AI critic, Farrar, Straus and Giroux, June 2026 (https://us.macmillan.com/books/9780374621568/thereversecentaursguidetolifeafterai/)
  • "Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026

  • "The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027

  • "Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027

  • "The Memex Method," Farrar, Straus, Giroux, 2027



Colophon (permalink)

Today's top sources:

Currently writing: "The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Third draft completed. Submitted to editor.

  • "The Reverse Centaur's Guide to AI," a short book for Farrar, Straus and Giroux about being an effective AI critic. LEGAL REVIEW AND COPYEDIT COMPLETE.
  • "The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.

  • A Little Brother short story about DIY insulin PLANNING


This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.

https://creativecommons.org/licenses/by/4.0/

Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.


How to get Pluralistic:

Blog (no ads, tracking, or data-collection):

Pluralistic.net

Newsletter (no ads, tracking, or data-collection):

https://pluralistic.net/plura-list

Mastodon (no ads, tracking, or data-collection):

https://mamot.fr/@pluralistic

Bluesky (no ads, possible tracking and data-collection):

https://bsky.app/profile/doctorow.pluralistic.net

Medium (no ads, paywalled):

https://doctorow.medium.com/

Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):

https://mostlysignssomeportents.tumblr.com/tagged/pluralistic

"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla

READ CAREFULLY: By reading this, you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.

ISSN: 3066-764X

15:42

Link [Scripting News]

As thrilling as the end was for this Knicks fan, as a friend (of a Spurs fan) I empathize -- because I had the feeling you have now for most of last night's game, only to erupt in one of the greatest group sports orgasms ever.

Link [Scripting News]

I have been praised for continuing to develop software long after most of my peers have retired. Why do I do it? I want to restore the power and glory of the web for writers. That's part of it. Another part is that software development is undergoing a huge revolution, bigger than the move to high-level languages that came about before I started writing software. AI tools are that big. Why would I leave now? It's like leaving the Garden last night because it looked hopeless for the Knicks. It ain't over till it's over.

15:28

1345: Aim High [Order of the Stick]

http://www.giantitp.com/comics/oots1345.html

MacOS 27 drops Intel support, will be last release with Rosetta 2 [OSnews]

With the announcement of an upcoming new macOS release also come the usual changes in which Macs will still be supported. MacOS 27 Golden Gate is an important release in this regard, as it will be the first release of Apple’s desktop operating system that will be entirely ARM-only, dropping support for all Intel Macs. It’s important to note that Apple will provide three more years of security updates for the final Intel release of macOS, so Intel users won’t be dropped like a brick immediately.

Still, the Intel Mac Pro was still being sold all the way up until mid-2023, and I’d be royally pissed off if my expensive 2023 Intel Mac went out of support a mere six years after purchase. They weren’t cheap machines, and while you can argue everybody knew the writing was on the wall for the Intel Mac Pro in 2023, it still feels way too short of a supported lifespan for such an expensive, high-end piece of equipment. It didn’t sell many units, I’m sure, but still.

In addition, MacOS 27 will be the last release to include the Rosetta 2 translation layer that allows Intel binaries to run on ARM macOS. I have no idea how many important applications are still Intel-only, but I have a feeling that number is going to be relatively small, and will become even smaller as the first macOS release without Rosetta 2 support near release. On top op of that, I’m sure enterprising users will find a way to transplant Rosetta 2 onto unsupported macOS release, and if all else fails, there’s always virtual machines.

14:35

Security updates for Thursday [LWN.net]

Security updates have been issued by AlmaLinux (.NET 10.0, .NET 8.0, .NET 9.0, podman, poppler, and postgresql-jdbc), Debian (chromium, jackson-core, libdbi-perl, and libinput), Fedora (httpd, rust, and xmlstarlet), Mageia (openssh, postfix, and roundcubemail), Oracle (frr, kernel, libyang, n, postgresql-jdbc, and unbound), Red Hat (.NET 10.0, .NET 8.0, .NET 9.0, redis, and redis:7), SUSE (agama-web-ui, cockpit, cosign, glibc, google-cloud-sap-agent, google-osconfig-agent, kanidm, kernel, kubernetes, kubernetes1.23, kubernetes1.24, kubernetes1.25, kubernetes1.27, kubernetes1.28, libpodofo-devel, libyang, NetworkManager-libreswan, openCryptoki, python311-pypdf, rclone, steampipe, wicked, and xen), and Ubuntu (exim4, libcrypt-saltedhash-perl, libhttp-daemon-perl, samba, and uriparser).

13:56

Michael Ablassmeier: vmsync [Planet Debian]

I’ve been asked a few times if it would be possible to use virtnbdbackup as some kind of “replication” utility, to keep cold standby virtual machines on other libvirt hosts.

Usually i would tell to use underlying filesystem features (such as zfs send/recv, with incremental snapshots) to keep cold, standby copies on other hosts.

As for qcow based virtual machines, using the dirty bitmaps is not only a valid feature to create backups, but to (incrementally) replicate virtual machines, too.

I’ve released vmsync. A small golang utility that implements a simple replication tool using the NBD protocol to sync virtual machines to other hosts.

13:42

CodeSOD: Dating in Hungarian [The Daily WTF]

A horse can only be so tenderized, but as well established at this point: I don't like Hungarian Notation. Richard G sends us an example of yet more of it, being misused, as well as some bad date handling. That's basically two of the easiest things to complain about, so let's take a look!

DateTime sCDate2 = Convert.ToDateTime(Hdn_SelectedDate.Value);
Double dStart2 = double.Parse(Hdn_SelectedShifts.Value.Split('@')[0]); // Gets something like "10.5" for 10:30

// More code ...

DateTime lSelectedStartAdd = DateTime.Parse(sCDate2.ToShortDateString() + " " + DateTime.FromOADate((dStart2) / 24).ToShortTimeString());

We take the value of Hdn_SelectedDate, which is one case where I'm actually willing to be a bit flexible on my hate of Hungarian Notation. In this case, it tells us that this is a "hidden" field on an ASP .Net form. Of course, storing a bunch of data in hidden fields on your form is a dangerous pattern, and in this case, they're carrying between 30 and 50 different pieces of data from one page to the next as hidden fields.

In any case, we take the value of that field and convert it to a datetime, storing the result in sCDate2. Here, the questions start. s, conventionally, tells us that this is a string. But it is not a string, it is a date. Why is it CDate? Actually, why is it CDate2? What's so 2 about this? There is no sCDate, sCDate1, or any other variation thereof- why 2?

Then, we look the contents of Hdn_SelectedShifts. This is another hidden field, and this one stores a string that is delimited by @s. We take the first element, which represents a time of day- as a double. 10.5 means 10:30. That's certainly a way to represent a time of day.

With this data in hand, we then use this to populate the lSelectedStartAdd variable. Once again, the l exists to mystify us. In some Hungarian flavors, it could mean "local variable", but if that's the case, why aren't we using that for any of the other local variables? More commonly, it might mean "long integer", but once again: it's a date.

This all brings us to DateTime.FromOADate. No, this is not when you Netflix and chill while watching cheap streaming sci-fi, OA in this case stands for OLE Automation, and now we have to go down a rabbit hole which has nothing to do with any of this code.

One of the things which made Windows what it was was the use of COM; the Component Object Model was an object oriented approach for letting applications talk to each other. It's what gave us DLL Hell, but it was also a really powerful system for automating software. You could use Visual Basic to leverage COM libraries provided by other software; even if the software you were targeting didn't have a scripting system, you could write your own scripts to control it anyway. OLE, Object Linking and Embedding, was a subset of all the COM functionality. It replaced Dynamic Data Exchange, which was the previous way of automating applications. With COM, COM+, DCOM, DDE, OLE, Microsoft created a whole soup of ways to link to functionality exposed by other applications. It was a giant mess, and I just put this paragraph here to flashback on the horrors of that era.

In any case, because OLE was mostly about automating Office applications, and because of Remy's Law of Requirements (no matter what the users said they want, what they really want is Excel), OLE Automation has its own date data type, which is a floating point number measuring the offset from December 30th, 1899. Which, of course, is not Excel's date epoch: Excel starts at 31-DEC-1899. Except Excel inherited its epoch from an older spreadsheet tool, Lotus 1-2-3. And Lotus had a bug: it thought 1900 was a leap year. Which means in practice, for any date past 28-FEB-1900, the effective epoch is 30-DEC-1899. Excel intentionally recreated the bug, because it needed to be compatible with Lotus 1-2-3 if it had any hope of competing in the market. One pesky little detail and now 1900 is a de facto leap year.

I'm sorry, we've got afield. We have dStart2, which is a floating point number representing hours in the day, with minutes as the fraction. We divide that by 24, then pass it to FromOADate, which will now treat that as an offset from 30-DEC-1899 00:00:00, giving us a date like 30-DEC-1899 10:30:00. We grab the time string off that, the date string of four date, munge them together and parse it back to a date.

Of course, the C# DateTime type has an AddHours, so they could have just done scDate2.AddHours(dStart2) and skipped all the parsing.

You want to know something more fun about this? That floating point representing time? It's initially populated by having users select off a drop down, and the drop down uses as its labels the more conventional HH:mm format. The value stored by the drop down is the floating point value. And yes, someone did manually write all that out in the code, they didn't use a loop or anything.

In any case, this is a long winded reminder: I hate Hungarian Notation.

[Advertisement] Keep all your packages and Docker containers in one place, scan for vulnerabilities, and control who can access different feeds. ProGet installs in minutes and has a powerful free version with a lot of great features that you can upgrade when ready.Learn more.

13:21

When Context Collapses: Teaching Agents to Detect and Recover from Lost Memory [Radar]

This is the eighth article in a series on agentic engineering and AI-driven development. Read part one here, part two here, part three here, part four here, part five here, part six here, and part seven here.

“640K ought to be enough for anybody.”—Bill Gates (allegedly)

If you’re building AI agents that do complex, multistep work, you’re going to run into context loss. The agent’s working memory fills up, older information gets silently dropped or compressed, and the agent keeps going without realizing it’s forgotten something. This article, the third in my Radar article trilogy about context management, walks through a pattern I’ve been refining for detecting and recovering from that problem, which I call the externalize-recognize-rehydrate pattern (or ERR, which I think is actually a pretty good acronym for an error recovery pattern): save your agent’s state to files on disk, detect when context has degraded, and reload from those files to recover. The individual techniques are standard practice in agent and skill engineering—checkpointing, progress files, state verification—but the real power comes from combining them into a coherent workflow that you can use live or build into your agents. I’ll walk through each step with specific prompts you can adapt for your own agents and coding sessions.

Which brings me to memory. Gates has said on multiple occasions that he never actually said that quote at the top of this article, but it endures because it captures one of the core limitations of that era, one that people struggled with constantly, in a way that we can laugh about now. Around that time I was using a 286 with 1 MB of RAM. That’s megabytes, not gigabytes. MS-DOS 3.3 gave me 640K of conventional memory plus 384K of upper memory, and I spent a lot of time figuring out how to use every bit of it. I configured memory managers, loaded device drivers high, used (and wrote!) terminate-and-stay-resident programs that moved themselves out of conventional memory to free up space, and generally treated memory as a resource that required active, deliberate engineering. There was a lot I wanted to do that didn’t fit into 640K, and like most people at the time, I went to some lengths to compensate for the memory limitations.

We’re at the 640K stage of AI development. The context window is the new RAM ceiling. Most of today’s models give you somewhere between 200K and 2M tokens of working memory (and, like memory in the late 1980s and early 1990s, those numbers are growing all the time), and if you’re building agents that do complex multistep work, you will hit that ceiling. When you do, the AI starts compacting: compressing or dropping older parts of the conversation to make room. And just like running out of conventional memory on a 286, things stop working right and you’re not sure why.

In 20 years we’ll be looking back at today’s puny context windows and wondering how developers in the 2020s managed to get anything done with just a few million tokens. Because none of this is new. In case you don’t believe me, here’s a photo of my dad at Princeton in the early 1970s working on an Evans and Sutherland LDS-1 graphics computer, the first commercial vector graphics machine, connected to a PDP-10 mainframe:

Keep on truckin

The actual LDS-1 is in the large cabinet in the background, directly behind the monitor. Sitting next to it, just out of the picture, is an even larger cabinet that holds a memory unit with 16K of magnetic core memory (technically 8K words).

So you can imagine that just a decade later, 640K in a tiny PC that fit on your desktop seemed extravagant.

In the last two articles in this series (“Why Doesn’t Anyone Teach Developers About Context Management?” and “Your AI Agent Already Forgot Half of What You Told It”), I talked about what context is and why context management matters, and I shared practical techniques and prompts for keeping important information in files instead of leaving it in the AI’s context window. This article gets more technical. I want to build on those strategies and talk about how to build agents that can detect when they’ve lost context and recover from it on their own.

Brute-forcing my way through context loss

I’ve been doing this kind of context management for a while now, long before the specific tools I’m about to describe existed. But a recent crash gave me a clean example of what the process looks like in its most brute-force form.

I was working in Copilot with a seven-step plan, going through it one step at a time, having another AI review each step before moving on. Steps one and two went fine. When it came time to do step three and I gave it the prompt, it jumped straight to step four. This kind of thing can be really frustrating, because it seems like an AI smart enough to implement a complex feature in code should be able to (ahem) count to four.

The key to not getting frustrated when the AI loses track of steps or can’t seem to count from prompt to prompt is to remember what it’s good at and how it remembers things. If the AI you’re using does that, check the conversation history. You’ll probably see something like “summarizing conversation history” or “compacting conversation” somewhere above your last message. That’s telling you that the AI lost track of where it was because that count was literally purged from its memory.

AIs are good at carrying out an instruction. They’re bad at keeping track of their own state over a long conversation, and the way they manage their memory is a big part of that. This article is about finding ways to build your AI tools so you’re not relying on them to do the thing they’re worst at.

But compaction isn’t the only way your AI loses context. A few weeks ago I was deep into a long session with Copilot, working through a multiphase code review. I’d spent a while building up context with the AI about my codebase and the decisions we’d made together. I was about to move on to the next phase, and then I got this:

Phase B

The entire context was wiped, which could have been a really frustrating problem, since I had a long history with the session, and it had built up a lot of knowledge about what we were doing. This turned out to be a bug in Opus 4.6’s interaction with Copilot’s conversation history, and I’ve seen other people hit the same thing. I was staring at a fresh prompt with nothing in it.

So I did something that, in retrospect, is a pretty good brute-force version of what this whole article is about. I recognized the context was gone (hard to miss when the whole conversation disappears). I copied the entire conversation out of Copilot and pasted it into a text file. Then I gave the new session a prompt:

We were in the middle of a long conversation, then I got an error and the entire context was wiped. I saved a copy of the conversation in #file:chat_history.txt, read it and bring yourself back up to speed.

And it worked! This brought the new session back to where I needed it to be.

That simple error and recovery actually outlines a pretty good pattern for dealing with context loss:

  1. Externalize the state. Get the important information out of the conversation and into a file on disk, where it won’t disappear when the context window reshuffles.
  2. Recognize the loss. Notice that the agent’s working context has been wiped or degraded, whether that’s obvious (like a crash) or subtle (like output that quietly stops making sense).
  3. Rehydrate from the file. Point a new session at that file and let it rebuild its understanding from what’s written down.

The individual mechanics are well-documented across cognitive science (cognitive offloading, task resumption), software engineering (the Memento pattern, React hydration), and knowledge management (the SECI model). I’m not claiming to have invented any of them. But the specific abstraction of these three phases into a unified, named pattern applied to AI context management is, as far as I can tell, new. It’s synthesis and codification, not invention.

In this case I did it with copy and paste, which isn’t particularly elegant, but it worked for me. But this is a blunt instrument, because a raw conversation dump is both too much and too little: it’s too much because it’s full of noise, like tool calls, dead ends, back-and-forth that doesn’t matter anymore; and it’s too little because the context that got silently compressed away during the session is already gone. When you build these mechanisms into agents and skills, you can do it in a much more subtle and automated way.

Externalize: Add two layers of state to your agent

The idea behind externalization, or periodically saving your agent’s state, came out of a conversation I was having with an AI assistant while building the Quality Playbook, an open source AI coding skill that runs structured code reviews. The playbook runs a structured code review as a single process, but that process could easily turn into a 15-million-token request if you tried to do it all in one shot. I described in the previous article in this series how I broke it into six phases, and that was only possible because the context for each phase had already been externalized. Each phase reads its inputs from files, does its work, writes its outputs to files, and stops. The next phase picks up from the files, not from whatever the agent remembers. If this sounds like the familiar advice to ask the AI to plan before you ask it to implement, it’s the same principle applied to context management. Separating each step and persisting the output means you can inspect it, and the next step doesn’t depend on the agent’s memory.

But what should those files contain? I found that the AI is actually good at figuring that out. At some point I asked the assistant:

Would it make sense for the agent to record more context in files as it progresses, to make sure nothing is dropped along the way? It should work even if you break it into separate prompts, because the result from each step is persisted. Plus, we can audit its reasoning for debugging and improvement.

That prompt was all it took. The assistant designed the file structure itself: a progress tracker that records which phase is active and what’s been completed, a JSONL artifact file (JSONL is just a file with a bundle of JSON objects, with one record per line) where each pass appends its output, and a set of brief documents describing the purpose of each phase. You don’t need to overengineer this. Tell the agent what you’re trying to preserve and let it figure out the file layout.

What emerged falls into two categories that I think of as execution continuity and task continuity:

  • Execution continuity is the state the agent needs to resume work in the middle of a task: what step it’s on, what it’s completed, what decisions it’s made so far. These files change constantly as the agent works.
  • Task continuity is the broader context that doesn’t change during execution: what the whole task is about, what success looks like, what the structural constraints are. These files are written once and read at every resumption.

When an agent needs to resume after suspected compaction, it reads back both layers. The task continuity files anchor it back to what the whole endeavor is about. The execution continuity files put it back in the middle of the work. Together, they give the agent enough information to continue without relying on anything that might have been compacted.

The key is that externalization isn’t something you do once at the beginning of a task. You want the agent saving its state at frequent checkpoints so that if compaction happens mid-run, the most recent checkpoint is close to where the agent was working. Here’s the kind of instruction I gave the agent for tasks that processed records one at a time:

Update the progress file after every single record, not in batches. Write the output line first, then update the progress file with the new cursor and a fresh timestamp. If the progress file’s timestamp falls behind the output file’s, you’re batching and that’s wrong.

The frequency matters because context can compact at any point. If the agent only saves state at the end of a long run, compaction in the middle means losing everything since the start. If it checkpoints after every unit of work, the worst case is losing one unit.

Two-layer externalization survives context reshaping, not only outright context loss. Even if the agent’s context window isn’t full, if the context has been reorganized or reprioritized (a compression that reshapes without truncating), the agent can reload the external files and know for certain what the ground truth is.

Recognize: Detecting loss from inside the agent

The second step in the pattern is to recognize that your agent has lost context, and it turns out to be the hardest part (at least with today’s AI technology). When the context window fills up, the AI compacts silently, and the agent keeps working without realizing it’s lost information. The agent can’t tell you it’s forgotten something, because it doesn’t know it forgot. Detecting that change turns out to be a nontrivial problem; I’ll walk you through an approach that helped me, and keep it general enough so you can do the same thing. The copy-and-paste approach works when the context loss is obvious, like a crash that wipes your whole conversation. But most context loss isn’t that visible.

I described context compaction in the previous article, but it’s worth restating the core problem from the agent’s perspective. Different tools handle context overflow differently: Some truncate older messages; some compress conversations into summaries; some use a sliding window. But they all have the same effect. Information disappears from the agent’s working context, and the agent doesn’t get notified.

This was a challenge when I built the Quality Playbook, because it runs multiple passes over a codebase, each one reading source files, extracting requirements, and checking coverage. Each pass can involve enough work that it fills the context window multiple times over. And when context compacts mid-pass, the agent doesn’t know it happened. It keeps working, but the output starts silently degrading. So I started building mechanisms for the agent to detect compaction and recover by reading back the files it had written earlier. The patterns that came out of that work are general enough to apply to anyone building agents that need to survive context pressure.

From the agent’s perspective, compaction is seamless. It’s tracking state, referencing decisions made earlier in the conversation, and then at some point the earlier context is gone. But the agent can’t tell the difference between “I never knew that” and “I knew it but lost it.” It tries to reference something and finds nothing, or finds a compressed version that lost the nuance. And because the agent doesn’t know it lost anything, it doesn’t know it needs to recover.

This invisibility is the core problem. But it turns out you can work around it, and the next two sections walk through how.

Building a detection mechanism

Once you have files on disk, the question is what specifically to check and how to know when something has gone wrong. I landed on a mechanism while building the Quality Playbook’s requirement extraction pipeline. The playbook processes source documents in multiple passes, and each pass appends its output to a JSONL artifact file. After each unit of work, the agent also writes a progress record to a separate file: what it just finished, what it found, and where it should pick up next.

The detection mechanism comes from two rules I gave the agent. The idea is that the progress file tracks a cursor, which is just a position marker that tells the agent which record to process next. If the agent writes a record to the output file but then loses context before updating the progress file, those two files will be out of sync.

The agent didn’t need to understand any of that upfront; I just described the rules in plain language and let it figure out the implementation. The first rule establishes an invariant between the output file and the progress file:

Cursor advances only after the line is on disk. Write the summary line to the output file first, then update the progress file. The cursor must always equal the index of the next record that still needs to be processed.

The second rule told the agent how to check that invariant on startup:

On startup, read the progress file. Resume from its cursor value. Verify continuity: the last line in the output file should equal cursor minus one. If not, roll the cursor back to match disk state and report the discrepancy.

If the progress file says the cursor is at record 381, but the last line in the output file is record 379, something happened. The context compacted and the agent lost track of where it was. The divergence between the two files is the signal.

This worked because files on disk don’t change when context compacts. They’re written once and then read repeatedly. If what the agent thinks it knows doesn’t match what’s actually in the files, something shifted in the agent’s memory, not on disk. I ended up folding this check into a preamble that every session started with:

If this session has experienced auto-compaction, re-read the pass specification from disk. Do not try to reconstruct it from the compacted summary. Read the progress file. Read the last record of the JSONL artifact and confirm its index equals the cursor minus one. If not, roll the cursor back to match disk state. Disk is the source of truth. The conversation is not.

That preamble ran at the top of every session. During one particularly intensive day of pipeline development, I ran over a hundred Claude Code sessions with that exact instruction. Most of them completed without hitting compaction. But the ones that did hit it recovered cleanly, because the preamble told the agent exactly what to check and exactly what to do when the check failed.

The specific prompts I used are tied to the Quality Playbook’s file structure, but the technique generalizes. If you’re building any agent that does multistep work, you can adapt the same approach. Here’s a version you could drop into a session preamble or an agent’s system prompt:

Before continuing any task, read your progress file and your most recent output file. Compare them: does the progress file say you’ve completed work that isn’t reflected in the output? If so, trust the output file, roll back your progress to match, and note the discrepancy. Do not rely on what you remember from the conversation. The files on disk are the source of truth.

The wording doesn’t have to be precise. What matters is the structure: tell the agent where to look, what to compare, and which source to trust when they disagree.

But didn’t you just say the AI can’t detect its own compaction?

Right, and it can’t. What I described above isn’t the agent detecting compaction. It’s the agent running a deterministic check against files on disk and finding a discrepancy. The agent doesn’t need to know that compaction happened. It just needs to notice that two files disagree. Think of the agent as an amnesiac clerk. You don’t ask the clerk to remember what they did yesterday. You make the clerk check the physical ledger every time they sit down at the desk. If their notes disagree with the ledger, they’re trained to trust the ledger.

If you saw Christopher Nolan’s breakout movie Memento, you can think of your agent as Leonard Shelby, the character played by Guy Pearce with anterograde amnesia. You couldn’t ask Leonard to remember what he did yesterday. He had to check his tattoos every time he woke up. If his tattoos disagreed with what he’s seeing, he trusts the tattoo (which leads to a major plot point, which I won’t spoil). Again, this isn’t a new idea either. I mentioned the Memento pattern earlier, which is literally named after this movie.

This is a classic distributed systems technique. In double-entry bookkeeping, you maintain two independent records of the same transaction and reconcile them regularly. If they disagree, you investigate. You don’t need to know why they diverged; the divergence itself is the signal. A two-phase commit works the same way: write the data first, then update the record that says the data was written. If you find data without a matching record, or a record without matching data, something went wrong between the two phases.

That’s exactly what the cursor invariant does. The agent writes the output line first, then updates the progress file. If those two files are out of sync, something happened between the two writes. The agent doesn’t detect compaction. It detects a broken invariant, and it’s been told that when the invariant breaks, the files on disk win.

Three things make this work. First, the check is purely deterministic: read two files, compare two numbers, act on the result. There’s no reasoning involved, no judgment call about whether the agent “feels” like it lost context. I wrote about this principle in “Keep Deterministic Work Deterministic”; you never want an AI making decisions that a file comparison can make for it. Second, the files on disk don’t change when context compacts. They’re the stable reference point that the agent’s memory gets checked against. Third, the instruction to run the check lives in the system prompt or preamble, which is generally preserved even when conversation context gets compacted. The check survives the thing it’s designed to detect.

Rehydrate: Reading back the state

Rehydration is the process of reading back externalized state and rebuilding the agent’s working context. Once the agent detects compaction (or, more specifically and accurately, has enough evidence from the filesystem that compaction occurred), the recovery step is to read back the externalized files and rebuild. For the Quality Playbook, rehydration meant:

  1. Read the phase brief to re-anchor the purpose of this pass
  2. Read the progress file to know which unit is active and what’s been completed
  3. Read the tail of the JSONL artifact to confirm the last successfully written record
  4. Recompute the next unit of work from those files

This is different from just continuing without detection. Without detection, the agent tries to pick up where it left off and hopes it still has enough context. With detection, the agent knows something happened and deliberately reloads state before continuing.

You can make the rehydration process itself auditable. Instead of silently reading the files and resuming, have the agent write down what it learned:

Read the progress file and the JSONL artifact. Write a summary of what you learned: what pass is running, what unit is active, what the cursor position is, and how many requirements have been extracted so far. Then continue from there.

Writing a rehydration summary serves two purposes. It gives you visibility into what the agent understood and whether it rehydrated correctly. And it forces the agent to process the external files explicitly rather than just loading them into context. Explicit processing is more reliable than silent loading because the agent has to commit to an interpretation, and you can read that interpretation and catch mistakes.

You can adapt this approach to any agent workflow where work happens in steps. The specific files and cursor values are particular to my pipeline, but the underlying technique is general: have the agent write its progress to a file after each step, and check that file against its output at the start of every session. And this advice isn’t just for writing agents or skills. Even in a live session with Claude Code, Cursor, or Copilot, you can tell the agent to periodically write a summary of what it’s done and what it plans to do next to a file on disk. If the session crashes or the context gets long enough to compact, you can point a new session at that file and pick up where you left off. The key is getting the state out of the conversation and onto disk before you need it.

Context management is an architectural concern

Every technique I’ve described in these articles comes down to the same principle: Important information shouldn’t live only in the agent’s context window. The previous articles covered how to put that information on disk. This one covers how to make the agent aware of its own limitations so it can recover when context pressure gets too high.

An agent that can detect its own degradation and correct for it is fundamentally more reliable than one that just keeps going. When the agent knows how to stop, check itself against ground truth, and reload what it lost, context pressure becomes a recoverable event instead of a slow, silent failure.

This concludes my mini-series trilogy of articles about context management. The first article in this series was about understanding what context is and why it disappears. The second was about getting important information out of the conversation and onto disk before you need it. This one is about closing the loop: making the agent aware of its own limitations so it can detect degradation and recover from it. Together, they add up to treating context as an engineering problem rather than something you hope works out.

These are still early days. Context windows will get larger, compaction will get smarter, and some of the workarounds in this article will eventually be unnecessary. But the underlying principle won’t change: If your agent’s ability to do its job depends on information, that information needs to live somewhere more durable than working memory. That was true for my dad’s 32KB core memory at Princeton, it was true for my 640K of conventional RAM, and it’s true for today’s 200K-token context windows.

The Quality Playbook and Octobatch are open source projects where these techniques are used in production. Both are built using AI-driven development and available for exploration if you want to see how this looks in practice.


Disclosure: Aspects of the approach described in this article are the subject of US Provisional Patent Application No. 64/044,178, filed April 20, 2026, by the author. The open source Quality Playbook project (Apache 2.0) includes a patent grant to users of that project under the terms of the Apache 2.0 license.

12:21

12:14

Enhanced License Plate Tracking [Schneier on Security]

The surveillance company Leonardo wants more data:

A surveillance company plans to add sensors to automatic license plate readers (ALPRs) that would mean the devices, as well as capture the license plate of passing vehicles, would also sweep up unique identifiers of mobile phones, wearables, and other Bluetooth-enabled devices in those cars, potentially letting law enforcement identify specific drivers or passengers.

The technology, called SignalTrace, would turn ALPR cameras from devices focused on tracking cars to ones that can more readily track the location of particular people. ALPR cameras have become a commonly deployed technology all across the U.S.; SignalTrace would make some of those cameras capable of collecting much more data.

Yes, it’s bad that more companies are collecting this level of surveillance data. But all of this pales in comparison to the type and quantity of data our smartphones already collect about us.

Alternate link.

11:49

Grrl Power #1468 – Princess Alice of Batenberg’s Gambit [Grrl Power]

Prophylaxis, in case you don’t know (that includes me, I had to google chess terms) just what it’s called when you “play defensively,” or at least try to deny your opponent whatever strategy he seems to be going for. Like in pool, you want to sink your balls but if possible also leave the cue ball in a bad spot for the other guy in case you miss.

Ryzyl didn’t cast Mirror Image, he cast… I don’t know. Army of Me or something. Basically one of those high level spells that creates actual copies of him that have the same equipment and spells and stuff that lasts all of 10 minutes, or something like that. And when it ends, he gets the memories of each one back. Good for quickly exploring a dungeon, overwhelming an opponent, pooling all their coin and cheating a merchant out of his bushel of apples, that sort of thing. Actually, if the spell was really well crafted, there’d be an option to not absorb the memories, because most of what he’s going to get back from this encounter is a lot of crushing, burning and choppy-choppy.

In panel 2, Max is doing an “X” swipe, followed by a heart stab – hopefully that’s more or less what it looks like – but as I’m posting this, I realize that the heart stab is a little superfluous, because she’s stabbing right in the middle of the X, which has already been thoroughly quartered. She should have stabbed him right in the middle of the face, probably. Although, during her 3 months of hyperbolic time cargo deck training, she probably got up to the point where she was fighting fairly advanced magic wielding opponents – advanced like “has spell in place that allows them to shrug off a single fatal blow somehow” or “upon receiving a fatal wound, this spell rewinds time to just before the injury was received (up to three seconds) and teleports you up to 10 feet in a safe direction.” Which is one of those high level spells that does no good if you get chopped in the femoral artery and it takes you a minute to bleed out. But it’s great against decapitations and boulders, whether launched via catapult or giant. So I guess Max is just making sure her kill shots stick. It’s the sword equivalent of the double-tap.


Sexy bodymod news lady Gail has a special one-on-one interview with Tournament Quarter finalist Saraviah Nightwing! And if you subscribe to Gail’s Space Patreon, (which, due to the vagaries of Earth and Gal-Net’s DNS servers, happens to be the same as the Grrl Power Patreon, go figure) you can see that same interview in the nude! Well, eventually. The nude part of the interview, as well as the version that includes shading will be coming soon. Of course, you can view the interview in the nude now if you take your own clothes off. You know. Technically. Just put a towel on your chair first.

 


Double res version will be posted over at Patreon. Feel free to contribute as much as you like.

10:28

Values capture [Seth's Blog]

When culture pushes us to measure things that don’t matter to us, our values are captured.

Once the metrics turn a profit for corporations and those in power, they are amplified, and almost overnight, begin to matter to us, even if they run contrary to what we originally set out to do or become.

We’re easily seduced by scoreboards, competition and dark patterns.

Professor C. Thi Nguyen has written a brilliant book on the philosophy of games—big and small. The Score helps us understand that dominant industrial and cultural systems push to deskill us as we become fungible, replaceable parts in an easily measurable enterprise. His book is wide, deep, and unforgettable. (It also includes riffs on yoyos and fly fishing.)

Measurements are sticky, contagious, and relentless. Once a competitor begins to move ahead on a metric, it gives them an advantage, and that pushes us to focus on the same metric or fall behind. The Red Queen races ahead, simply because racing ahead is what they’ve been trained to do.

Perhaps, though, falling behind on a metric we don’t care about might be exactly the right thing to do.

In a game like Scrabble or chess, the values capture is right there in the rules. It’s explicit, agreed upon, and the whole point. You feel good about landing a seven-letter word because that’s what scores, and you don’t mind trading your rook for a better position—that’s the game you signed up for. But when we carry that same instinct into how we spend our working hours (and months, and decades), we might end up sacrificing far more than a rook.

Once we see values capture unfolding, we have a shot at making a choice. Measure what matters.

07:42

What’s the opposite of Clip­Cursor that lets me exclude the cursor from a region? [The Old New Thing]

A customer wanted to prevent the user from dragging an object into a specific region of their window. Their current implementation detects that the mouse is an in illegal location and uses Set­Cursor­Pos to move it to a nearby legal location. However, this creates flicker because the cursor actually does enter the illegal region and then jumps out.

Let’s illustrate this with our scratch program.

POINT g_pt;
const RECT g_rcExclude = { 100, 100, 200, 200 };

RECT ItemRect(POINT pt)
{
    return RECT{ pt.x - 10, pt.y - 10, pt.x + 10, pt.y + 10 };
}

The g_pt variable holds the location of our object, and the g_rcExclude is the rectangle in which the object is forbidden. The ItemRect function produces a bounding rectangle for our object so we can draw something there.

void
PaintContent(HWND hwnd, PAINTSTRUCT* pps)
{
    FillRect(pps->hdc, &g_rcExclude, (HBRUSH)(COLOR_WINDOWTEXT + 1));
    RECT rcItem = ItemRect(g_pt);
    FillRect(pps->hdc, &rcItem, (HBRUSH)(COLOR_APPWORKSPACE + 1));
}

Painting our content is a straightforward matter of drawing the forbidden rectangle in the text color and drawing the object in the app workspace color.

void OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags)
{
    POINT ptNew = { x, y };

    if (PtInRect(&g_rcExclude, ptNew)) {
        // Clamp to nearest legal position
        int leftMargin = ptNew.x - g_rcExclude.left;
        int topMargin = ptNew.y - g_rcExclude.top;
        int rightMargin = g_rcExclude.right - ptNew.x;
        int bottomMargin = g_rcExclude.bottom - ptNew.y;

        int dx, dy;
        int x, y;
        if (leftMargin < rightMargin) {
            x = g_rcExclude.left;
            dx = leftMargin;
        } else {
            x = g_rcExclude.right;
            dx = rightMargin;
        }
        if (topMargin < bottomMargin) {
            y = g_rcExclude.top;
            dy = topMargin;
        } else {
            y = g_rcExclude.bottom;
            dy = bottomMargin;
        }
        if (dx < dy) {
            ptNew.x = x;
        } else {
            ptNew.y = y;
        }
        POINT ptScreen = ptNew;
        ClientToScreen(hwnd, &ptScreen);
        SetCursorPos(ptScreen.x, ptScreen.y);
    }

    if (g_pt.x != ptNew.x || g_pt.y != ptNew.y) {
        RECT rcItem = ItemRect(g_pt);
        InvalidateRect(hwnd, &rcItem, TRUE);
        g_pt = ptNew;
        rcItem = ItemRect(g_pt);
        InvalidateRect(hwnd, &rcItem, TRUE);
    }
}

// Add to WndProc

        HANDLE_MSG(hwnd, WM_MOUSEMOVE, OnMouseMove);

When the mouse moves, we take the mouse position and see if it is in the forbidden rectangle. If so, we update the coordinates to the nearest legal position and move the mouse there with Set­Cursor­Pos.

Whether or not we had to update the coordinates, if the result produces a new location, then invalidate the object’s old location (so it will be erased at the next paint cycle), update the object position, and then invalidate the object’s new position (so it will be drawn at the next paint cycle).

When you run this program, you can try to move the mouse into the forbidden rectangle, but the program will shove the mouse back out. However, it flickers a lot bcause the mouse briefly enters the forbidden rectangle before it is expelled from it.

The customer saw that there is a Clip­Cursor function to constrain the mouse to remain inside a rectangle, but is there an inverse version that forces the mouse to remain outside a rectangle?

There is no such function, but that’s okay.

What you can do when the mouse is in an illegal position is just pretend that it’s in a legal position. Let the user move the mouse into a illegal position, but show the feedback at the nearest legal position, and if they drop the object, let it drop at the nearest legal position.

In the above program, that means we remove the call to Set­Cursor­Pos.

void OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags)
{
    POINT ptNew = { x, y };

    if (PtInRect(&g_rcExclude, ptNew)) {
        // Clamp to nearest legal position
        int leftMargin = ptNew.x - g_rcExclude.left;
        int topMargin = ptNew.y - g_rcExclude.top;
        int rightMargin = g_rcExclude.right - ptNew.x;
        int bottomMargin = g_rcExclude.bottom - ptNew.y;

        int dx, dy;
        int x, y;
        if (leftMargin < rightMargin) {
            x = g_rcExclude.left;
            dx = leftMargin;
        } else {
            x = g_rcExclude.right;
            dx = rightMargin;
        }
        if (topMargin < bottomMargin) {
            y = g_rcExclude.top;
            dy = topMargin;
        } else {
            y = g_rcExclude.bottom;
            dy = bottomMargin;
        }
        if (dx < dy) {
            ptNew.x = x;
        } else {
            ptNew.y = y;
        }
        // POINT ptScreen = ptNew;              
        // ClientToScreen(hwnd, &ptScreen);     
        // SetCursorPos(ptScreen.x, ptScreen.y);
    }

    if (g_pt.x != ptNew.x || g_pt.y != ptNew.y) {
        RECT rcItem = ItemRect(g_pt);
        InvalidateRect(hwnd, &rcItem, TRUE);
        g_pt = ptNew;
        rcItem = ItemRect(g_pt);
        InvalidateRect(hwnd, &rcItem, TRUE);
    }
}

This time, we don’t try to punish you for moving the mouse into the forbidden rectangle. But the object won’t follow the mouse into a forbidden region.

The post What’s the opposite of <CODE>Clip­Cursor</CODE> that lets me <I>exclude</I> the cursor from a region? appeared first on The Old New Thing.

05:35

Link [Scripting News]

The indestructible NY Knicks of 2026. What a game omg. The problem -- the Spurs started celebrating way too early. All of Weby's antics about being in Mitchell Robinson's head. Yeah probably, but somehow the Knicks got over it. When the Knicks were blown out, I just desperately hoped for a real game. But it wasn't until they were down by 2 or 3 that I realized holy shit they could win this. It was like Woodstock, or the 10th inning of the sixth game of the World Series in 1986. And Jalon Brunson right now at this moment is one of the greatest of the NBA for all time. The Knicks could still lose, but if they don't, well we'll wait to see how this turns out. As fans we have to have a similar approach as the players. Every moment begins with 0 to 0, not just game. And if our team should lose, it was still a great story. That's really what I want, and tonight, oh man.

04:49

One Tart Per Million [Penny Arcade]

Morak wasn't sure he wanted to discuss the scourge of "bisexual lighting," because he didn't want to glorify the assertion. His other contention was that it might simply be rage-bait, and he was hesitant to be baited into rage. I'm open to these ideas, certainly. Let's deal with the second one first: I think it's incredibly silly stuff. And what's more, rage-bait has a way of becoming canonized, calcified, because the revolution must always act at the edge - the frontier - where experimental rhetoric bakes into ideology. Whether it's meant authentically or not, goofball adherents have already internalized it. It's simply a premonition of some future battle. As for the first contention, that we don't want to inadvertently glorify it, well, you tell me. I'd be surprised if it did!

One Tart Per Million [Penny Arcade]

New Comic: One Tart Per Million

He-Man and Battle Cat art! [Penny Arcade]

I loved Masters of the Universe so much that I had to do some fan art yesterday. I shared it over on my Bluesky but wanted to make sure it got posted here as well. 

Him-Person [Penny Arcade]

I saw He-Man shit at other kids' houses, but like a lot of the eighties it simply wasn't allowed in my house. Even The Smurfs were considered a monstrous affront - not only the sorcerer Gargamel, but the "demonic" Smurfs used magic as well! My mother had a book called Turmoil In The Toybox which she used as a kind cultural baleen to winnow the (sacred) wheat from the (profane) chaff, because sometimes you gotta look really really hard at toys in order to figure out why they're bad and that's why it's somebody's full-time job. You might think My Little Pony is about horse dolls, but what these wanton mares actually do is seize daughters nationwide and corrupt them into hellbound sluts.

Gabe's Masters of the Universe Review [Penny Arcade]

I saw Masters of the Universe over the weekend and wanted to give my review as a long time fan of the cartoon and the toys. 

 

Him-Person [Penny Arcade]

New Comic: Him-Person

A Shocking Display [Penny Arcade]

Having run credits on 007 First Light - and I don't think there's another ending in here somewhere - my feeling is that they stuck the landing and that I want to know what's next in an unreasonable amount of time. Sometime late next week, perhaps. No? That's probably not going to happen? Alright. Well, I had to try.

A Shocking Display [Penny Arcade]

New Comic: A Shocking Display

The Three Mouseketeers [Penny Arcade]

What we discovered when creating this strip is that people have NSA stalker tier levels of knowledge about these mice. It sounds like Gabe has some serious competition in this arena and should - until further notice - make his enemies start his jeep. Just until things cool down.

The Three Mouseketeers [Penny Arcade]

New Comic: The Three Mouseketeers

My Father's House [Penny Arcade]

The movies running away with the box office are "indie ahh" horror flicks, tuned to Generation Zed. Quarantine sorta permanently broke the theatre habit for Gabe I think, though he'll occasionally lurch out of his cavern for something his larvae might be interested in. By comparison, there are people in my neighborhood's younger cadre who are, like, members of AMC Stubs and shit. They love going to the Goddamn movies. And I'd bet that a strong part of the take for films like Obsession and Backrooms - which Gabriel will not be seeing - are people who were essentially robbed of the ritual because a actual horror movie was taking place worldwide.

My Father's House [Penny Arcade]

New Comic: My Father's House

Modernity [Penny Arcade]

If you aren't a moral busybody or a turbo wastrel there's no world for you left. I sometimes try to determine which performance I like least, but the answer is something I apparently have to build from first principles every time. They're utter duplications of the other, arguably manufactured by each other; sometimes they can even switch sides successfully. It's a personality type, as near as I can tell, trailed by a velvet cape of adherents. On the one side, you've got young people becoming old people, desperate to outrun their Something Awful posting history by pledging allegiance to… themselves, I guess. And on the other side, you've got people who get irrationally angry when they see an A cup. You know? It's the, uh… it's the fight of the century.

Modernity [Penny Arcade]

New Comic: Modernity

Nocturnal Transmissions [Penny Arcade]

So, I sleep sometimes.  Obviously, it's a failure.  I'm working on it.  I'm doing the work.   There's an odd point between being asleep and awake where I am happily paralyzed, and when that occurs I can start thinking any thought I want to and it will simply unfold from there.  I can push play on a blank cassette and it will orchestrate itself.   I am not the best judge of these ideas, I mostly like to see them born, but every now and then one makes an impression and I wrap it up for delivery to the outside world.  A few nights ago, this entire sentence was projected onto the screen and for some reason I thought it was worth remembering.  Most of the people I've talked with about it don't agree.  Here it is:

Doom-Eater [Penny Arcade]

Like I was saying yesterday, I had the chance to write a whole adventure for Demo x Dungeons & Dragons: Battlemarked. It's called "A Golden Opportunity," and involves Acquisitions Incorporated's Omin Dran - um, that's me - utilizing the knowledge Jerry Holkins has about old school D&D lore to craft the most insane and yet also lore accurate Get Rich Quick Scheme the multiverse has ever seen. Let me go into it a bit. I mean, if you can endure it.

Quick Thoughts on Horizon 6 and 007! [Penny Arcade]

I've been playing a lot of games recently but two of them have been taking up most of my time and I wanted to share some quick impressions. So here's what I have to say about Forza Horizon 6 and 007 First Light:

Doom-Eater [Penny Arcade]

New Comic: Doom-Eater

Demeo x Dungeons & Dragons: Battlemarked & Acquisitions & Incorporated! [Penny Arcade]

We've been pretty hardcore Demeo fans from the jump; making a D&D experience inside VR where you reach down and move models around on luscious dioramas is the sort of thing plucked from my fantasies. The only thing missing was the actual license, really, which they got - and then delivered the much more story forward Demeo x Dungeons & Dragons: Battlemarked. The first game got tons of neat, free chapters - and Battlemarked just dropped their first. Except I wrote it! And voiced Omni Dran in it! Because it's an Acquisitions Incorporated adventure!

Getting a chance to run a game for people asymmetrically was really exciting for me, and I wanted to tie it into their campaign's first chapter and move time forward a little bit - just make everything feel a little more real, like a campaign around the table would. Of course it is about a get rich quick scheme, but I'm always trying to put people onto the Elder Lore and I think I found a great way to do it. Please grab a copy, or load it back up, because I have a bunch of ideas for an incredibly stupid campaign set in their second chapter and I'm hoping might let me play around in there some more.

 

(CW)TB

Lightfall [Penny Arcade]

At various times, I have known various people who have done various things at Bungie - going back to the Microsoft purchase. That is to say, I've had the opportunity to see their management stumble drunkenly from acquisition to more of a sugar daddy situation and then - rain-soaked, on the doorstep, in cinematic desperation - back into the arms of another suitor. I've seen the people they drag into these scenarios slowly ground into dust, all the while creating incredible worlds people live and believe in.

02:14

Page 23 [Flipside]

Page 23 is done.

01:07

[$] LWN.net Weekly Edition for June 11, 2026 [LWN.net]

Inside this week's LWN.net Weekly Edition:

  • Front: Suspicious AI activity in Fedora; fork() + exec(); splice() + vmsplice(); BPF loop verification; fanotify; trusted publishing.
  • Briefs: CA age bill; Bundler cooldowns; insecure code completion; Asahi and macOS 27 beta; Buildroot 2026.05; Ubuntu MATE; rsync 3.4.4; Quotes; ...
  • Announcements: Newsletters, conferences, security updates, patches, and more.

00:42

Once again, Apple blatantly lies about the EU’s DMA [OSnews]

Apple recently announced its next crack at integrating “AI” into its operating systems, this time opting to simply whitelabel Google’s Gemini “AI” tools instead of developing its own LLM technology. Called “Siri AI”, Apple also stated it’s not coming to the EU, and the company stated that’s because the EU’s basic consumer protection legislation would give other “AI” tools “unprecedented access” to user data on users’ devices. The company made a big stink about this in the press.

As anyone with basic pattern recognition skills already knew, this was a blatant, baldfaced lie. What really happened is that Apple asked the EU for an 18-month long exemption from the EU’s consumer protection and privacy legislation during which it would not have to comply with any legal privacy and interoperability requirements – just so it could roll out Siri “AI” before anyone else could offer a competing product for Apple users.

Obviously, the EU wasn’t going to grant such an exemption.

“The decision not to roll out Siri AI in the EU is Apple’s and Apple’s only,” spokesperson Thomas Regnier told reporters in Brussels, saying there was nothing in the Digital Markets Act to stop the company from introducing new products in the EU.

“Apple was simply unable to develop interoperability solutions that meet essential EU ​privacy and security standards,” Regnier said.

“Instead ​of trying to find ⁠a suitable compliance solution, Apple simply made a request to the European Commission to be exempted from their interoperability obligations under the DMA – and this for at least 18 months. ​That’s not an option,” Regnier said.

↫ Inti Landauro and Foo Yun Chee at Reuters

So what’s really going on here is that Apple wants to offer a set of whitelabeled Google Gemini tools on iOS and macOS in the EU, but because Apple is classified as a gatekeeper, it is legally obligated to offer interoperability options for competing “AI” tools. These options in turn need to adhere to the EU’s strict privacy regulations, so that competing “AI” tools can offer the same level of privacy that Apple’s own whitelabeled Google Gemini tools claim to offer.

Apple didn’t want to offer these privacy-respecting interoperability options as required by law, so instead of following the law in the countries it wants to operate in, Apple asked to be placed above the law for at least 18 months, basically giving Siri “AI” a massive head-start over possible competitors so that it could entrench itself in the userbase. The EU saw right through Apple’s nonsense, and now called them out on their bullshit. Perhaps Apple has gotten so used to openly bribing Trump that they forgot other parts of the world don’t work that way.

Whenever Apple and its PR attack dogs say anything about the EU, you can be assured they are lying. They have proven time and time again to basically never speak a single word of truth when it comes to its dealings in the EU. It’s almost pathological at this point, and what makes it doubly interesting is that Apple will not launch Siri “AI” in China either, for the very same regulatory reasons – yet all China got was a single footnote in a press release.

I wonder why.

Wednesday, 10 June

23:56

Trying My Hand At Some Floral Arrangements [Whatever]

This past weekend, my friend hosted a bridal shower for our friend who’s getting married soon, and I offered to make up some decorative bouquets for the party. I think I did an okay job, so I wanted to show y’all what I made up! She was hosting the party at her home, so thankfully I was just able to use some vases she had on hand.

For the flowers, I knew I wanted to do something springy and full of pinks and yellows because the theme was “garden party.” I also wanted to include white flowers because, well, it’s for the bride to be!

I went to my local Kroger for all my flowers, and just ended up buying a ton of discounted grower bunches. If you haven’t heard of grower bunches before, think of bouquets as a cake, and the grower bunches are the ingredients. You can buy the cake itself from the store already made, or you can buy all the ingredients for the cake and make it yourself.

So, I bought bunches of roses, lilies, anemone, bells of Ireland, baby’s breath, and some tulips. It took me about 45 minutes to de-leaf, de-thorn, trim and arrange the flowers. I mainly just did a couple small bouquets and then little bud vase arrangements to enhance the main focus bouquets.

A glass vase with a white rose, a big pink anemone, some baby's breath, and some extra greenery.

This first one is my favorite out of all of them!

A small glass bud vase with one of the big pink flowers, a green spiky looking thingy, and baby's breath.

I never knew the name for the anemone before now, but I think they are so unique and pretty. I wish for this one I had trimmed the green thingy (someone please tell me the name of it) to be shorter than the anemone.

A small glass jar with a huge yellow rose and bells of Ireland, plus baby's breath.

I tried to keep the bells of Ireland taller than everything in order to bring some dimension to my bouquets, which is definitely an aspect of floral arranging I struggle with.

A very nice white rose put simply in a slender bud vase with a small thing of baby's breath.

This stunning white rose was one I decided to let speak for itself in a simple bud vase.

A huge, extra beautiful pink anemone in a bud vase with baby's breath.

Same for this anemone! It was so big and beautiful.

A small glass bud vase with three yellow tulips in it.

Since I had a dozen yellow tulips, I decided to just do four little bud vases each with three in them. I think they accented the tables well!

All the arrangements set out on two tables!

Here they all are on the tables!

And my friend had the amazing idea to put all the flowers I didn’t use in bouquets in a lovely basket she has, and they ended up being a great decoration for the patio just chilling in the corner all ornately:

A lottt of flowers all laying together in a flat basket. Yellow roses, pink lilies, white roses, the works!

These were all untrimmed and not de-leafed so it has much more of a wild look to it, but I really love how it turned out. That pink lily is totes gorg.

Anyways, this was my first time doing floral arrangements for a party, and it only cost me seventy dollars for all the flowers, which I think was such a steal. I think they turned out pretty okay, but definitely practice will hopefully make perfect eventually. I am considering buying a floral arrangement book to really up my game.

Let me know your thoughts or tell me some of your favorite flowers in the comments. And have a great day!

-AMS

Google Chrome is killing all uBlock Origin bypasses, Microsoft Edge, Opera to follow [OSnews]

For a while now the transition away from Manifest V2 (MV2) to MV3 has been on-going and it looks like it is entering its final phase of deprecation, at least, in the case of Google Chrome. A recent discussion thread in the w3c WebExtensions Community Group GitHub repo has highlighted how the latest and upcoming versions of the most popular browser are expected to be its final releases with support for MV2 extensions.

↫ Sayan Sen at Neowin

You shouldn’t be using Chrome anyway.

21:56

One Tart Per Million [Penny Arcade]

Morak wasn't sure he wanted to discuss the scourge of "bisexual lighting," because he didn't want to glorify the assertion. His other contention was that it might simply be rage-bait, and he was hesitant to be baited into rage. I'm open to these ideas, certainly. Let's deal with the second one first: I think it's incredibly silly stuff. And what's more, rage-bait has a way of becoming canonized, calcified, because the revolution must always act at the edge - the frontier - where experimental rhetoric bakes into ideology. Whether it's meant authentically or not, goofball adherents have already internalized it. It's simply a premonition of some future battle. As for the first contention, that we don't want to inadvertently glorify it, well, you tell me. I'd be surprised if it did!

21:35

Mike Gabriel: Future of libayatana-appindicator (v0.6.0 released today) [Planet Debian]

Some of you might have noticed that the recent (or rather: previous) version of libayatana-appindicator (v0.5.94) notified users and developers of the library being deprecated.

This short post is to notify you, that with today's libayatana-appindicator v0.6.0 release [1] this deprecation warning has now been removed again. Another new feature (added to AppIndicator without ABI breakage) is tooltip support. The new package version has just been uploaded to Debian experimental. Please test if your application (if it gets linked against libayatana-appindicator) continues to work flawlessly. Thanks!

libayatana-appindicator will receive continued support until GTK-3 becomes end-of-life (because libayatana-appindicator has a baked-in GTK-3 dependency which should not be ported to GTK-4 imho). That said, in the future, GTK-3 applications can continue using libayatana-appindicator for sending AppIndicator-like icons and menus over DBus to KStatusNotifierItem-based system tray renderers.

If you are looking for an AppIndicator implementation for GTK-4 applications (or other), I'd like to encourage you to help making libayatana-appindicator-glib [2] a new standard (can be used in GTK and Qt applications alike, implementation is using pure Glib-2.0). Currently, there is only one renderer (ayatana-indicator-application), so more work needs to be done on the renderers' side. (One of the next work items here is to get AppIndicator-Glib support working in Lomiri's desktop/windowed mode).

[1] https://github.com/AyatanaIndicators/libayatana-appindicator/releases/ta...
[2] https://github.com/AyatanaIndicators/libayatana-appindicator-glib/

20:49

A raycasting first-person shooter written in COBOL [OSnews]

On a related note, what about a raycasting first-person shooter written in… COBOL?

Can you think of a better programming language than COBOL to implement an FPS from scratch? I know I can’t, so buckle up and enjoy what can only be described as an out-of-body experience for COBOL enthusiasts as I set out to make a Wolfenstein3D-like raycasting based FPS game (and potentially go a bit further than that, hopefully it’s not a DOOMed attempt).

↫ icitry on YouTube

I don’t link to YouTube videos very often, but there’s always the exception that proves the rule. The COBOL code’s available on GitHub.

What a mad man.

Catlantean 3D: making graphics like it’s 1993 [OSnews]

My goal was to build a complete, shippable first-person shooter using techniques that were common in the early 90s, while allowing myself the luxury of using a modern compiler and a platform abstraction layer.

↫ Marko Stanic

It looks amazing already, and it isn’t even done. Stanic goes into great detail explaining how he created the various assets for the game, and it’s a joy to read through his creative process and problem-solving routines. The game’s called Catlantean 3D, and is expected to ship somewhere early 2027.

Microsoft makes Windows printing easier with Windows Ready Print [OSnews]

Microsoft has detailed that Windows 11 is going to switch away from dedicated printer drivers to its Windows Ready Print system. This should make it a lot easier and less cumbersome to get printers running on Windows 11.

At the core of Windows Ready Print is a transition away from legacy, third party drive-based workflows toward modern, standards-based printing with IPP (Internet Printing Protocol) using the Windows inbox IPP printer driver. 

Starting in July 2026, new printer installations will default to Windows Ready Print where supported, enabling a simpler and more reliable setup experience. This change reduces the need for traditional driver management and lays the foundation for a more scalable and predictable print experience.

↫ elliesekine at the Windows Tech Community

Printers still play a huge role in our lives – whether we like it or not – and their terrible user experience is basically a meme a this point. Making at least one aspect of printing easier, less cumbersome, and more streamlined is incredibly welcome, and I’m glad Microsoft is taking the Windows printing ecosystem along for the ride on this one.

My own personal experience with printing on Linux and now on Windows 11 (as promised, I’ve been using nothing but Windows 11 since 26 May!) has been mostly effortless already. Our cheap networked printer/scanner/combo thing from HP “just works” on both Linux and Windows 11, since Windows downloads HP’s drivers and application automatically when detecting the printer on the network. Still, not having to use HP’s driver would be a nice bonus.

Coincidentally, I also managed to get the printer component of our HP combo thing working on… HP-UX 11i v1. Despite being more than two decades newer, our HP printer works perfectly with a printer definition file included in HP-UX, giving me full printing from CDE and the rest of HP-UX. It’s entirely useless and cost me an evening of my life, but seeing the test page and other documents from HP-UX come out of our printer, over the network, put a big smile on my face.

20:28

The Big Idea: Donna Barba Higuera [Whatever]

Keep science fiction weird! New York Times Bestselling and Newbery Medalist author Donna Barba Higuera is a big believer in letting literature be weird and out there and most of all, inspiring to those whose hands her books happen to fall into. Come along in the Big Idea for her newest book, Firesnake and see how a little sticker can have a big impact.

DONNA BARBA HIGUERA:

So, what influence has the Newbery Medal had on contemporary Sci-Fi?

If you ask adults which book was that “magical” book for them, the one that sent them on a quest for more of that feeling, turned them into a reader, most will answer with something they read as a child. Often, it’s a book with that gold sticker on it. Not necessarily because it’s absolutely the best book, but because it was the one someone put in their hands. Still, odds are, it’s gonna click for someone out there.

It’s no secret that Sci-fi books don’t often get on the radar of the Newbery Committee. 

So what a bizarre close-the-loop moment for me when that “magic” book that launched me into a lifelong love of Sci-Fi, A Wrinkle in Time, was a Newbery Medalist over fifty years ago. A gap-toothed, freckly kid, bored out of her mind in a dusty Central California town traveled with Meg Murray to another universe. And that book lured me into becoming a contemporary Sci-Fi reader, and later, writer.

What else did that magic book do? It let that bored kid from a small agricultural town dare to imagine she could write herself across the universe too. Mexican tales can be weird. I could make it weirder! In The Last Cuentista, I blended those magical stories my grandmother told with my love of science fiction. I never dreamed this peculiar and very personal book would be published, let alone win an award like the Newbery Medal. (further proof I’m in a simulation)

People mention all the time how The Last Cuentista was the first Sci-Fi to win the Newbery Medal since Madeline L’Engle’s book over fifty years ago. Wrooong! The thing is, most unfamiliar with Sci-Fi think if a book doesn’t have a spaceship or involve space travel, it’s not Sci-Fi. Other Newbery Medal winners fall into the Sci-Fi category. At Last She Stood (2025 Newbery Medal) by Erin Entrada Kelly was inspired by Erin’s love of the 2010 Newbery winner, When You Reach Me by Rebecca Stead (both books involve time travel). The Giver by Lois Lowry (1994 Newbery Medalist). Turns out, there are a few of us weirdos reeling young readers in to Sci-Fi. 

And that’s just sci fi! What about Newbery Medal fantasy writers like:  Lloyd Alexander and The High King, Susan Cooper and The Grey King, Robin McKinley and The Hero and the Crown, Kelly Barnhill and The Girl Who Drank the Moon; Ursula K. LeGuin also received a Newbery Honor for The Tombs of Atuan.

Most of us have a specific book that turned us into a mainstream Sci-Fi reader or writer. Maybe it’s a book that didn’t get it right, and we are on the search for the book to repair that wrong. Or maybe it was a book that did get it right, and we need to write a love letter to that book like Erin Entrada Kelly did. 

The Last Cuentista was based off a short story writing prompt. “Take a traditional fairy tale and make it sci-fi.” I chose a story that as a kid, I thought was the stupidest tale ever told. The Princess and the Pea. Hear me out. Why would you want some delicate princess to marry your son? Perhaps instead, someone of strong mind and body?

So, as an adult I addressed my repressed childhood fury in a short story about a badass girl who was implanted with the “P.E.A.” (Pellet of Extended Animation. I know…I know…) for a four hundred-year-journey across space. But her “P.E.A.” fails due to her strong mind. She never sleeps and when removed from her pod is beyond bonkers. Society has changed along with what humans value. Well, that revenge-write idea haunted me. Year slater, I started writing The Last Cuentista

But to write for adults or children? I found adult Sci-Fi was often too “sciency” for me. I mean, I was a biochem major. I love science. But I have my limits. Physics can kiss my— (and that was how Higuera’s essay in Scalzi’s The Big Idea got her children’s books banned.)

So, back to the topic: What influence has the Newbery Medal had on contemporary Sci-Fi?

Well, first you have to consider how those of us who write for children ended up here.

Long ago, I attended Norwescon in Seattle, and sat in a lecture by Fonda Lee who writes for both adults and children. Fonda said (more or less), “In adult sci-fi fiction, I need to research and include how a ship travels. Kids just need to know the ship got from A to B.”

I might have gasped in that room. That was it! Quite frankly, (oh, I’m gonna get some hate on this) I still don’t care how the ship got from one planet to another. I just want to know about the people and what kind of mess they were in. I’d found where I belonged. I could write for kids, and introduce them to sci-fi without having a doctorate in astronautics!

I was off and running. The first book led to a second. Darker and grittier, Alebrijes is set four hundred years after the comet strike, about what happened to those who survived on Earth. You know, just a little hopeful apocalypse for the kids. The third and final book in the series, Firesnake, is about a girl born and raised on the terraformed planet, Sagan, who is now returning to a very changed planet Earth.

Maybe my books are a bit of a soft launch, (depends on who’s reading them) but I can’t tell you how many times I’ve heard, “I don’t read sci-fi, but I read your book and it wasn’t horrible.”

I smile and say, “Welcome to weird with the rest of us.” I then tell those people of some of the contemporary Sci-Fi I think they may like. That’s how it begins.

Just to be clear, writing for kids is hard! I double dog dare you to try it. Children have the ability to suspend disbelief and imagine the impossible. But they will also call BS and proclaim you the worst author on Earth if you don’t get something right. 

My hope is that there’s a young reader out there who’ll read my books and imagine themselves as a writer. Great! Or maybe, they’ll think my books are the stupidest books ever written. Well, not good, but okay. Whatever you need to rage-write, imagine, wonder and create.

It’s a cycle that should repeat. Not every book is for every reader. Writers shouldn’t take it personally if a reader doesn’t like our books. 

But with that gold sticker that somehow found its way to the cover of my book, I’m now in the lucky position to get to speak to kids all over the world. I get to encourage young readers and writers to embrace the “weird” parts of themselves; the parts that make your palms sweat and heart race when you think of sharing them with others. 

Maybe if a kid picks up The Last Cuentista and reads it because they see that gold medal (or heaven forbid they are forced to read it in school) for either love or hate, it may turn them on to reading more contemporary Sci-Fi. Don’t mind me. I’m just going to be over here writing the strange and weird, hoping that a book I write might be that magical one; that gives them a lifelong love of contemporary Sci-Fi; like a Newbery book by Madeleine L’Engle gave me a half century ago.


Firesnake: Amazon|Barnes & Noble|Bookshop|Powell’s

Author socials: Website|Instagram

20:21

Link [Scripting News]

Wembanyama is a really smart dude. Wow.

Up is Down – DORK TOWER 08.06.26 [Dork Tower]

Most DORK TOWER strips are now available as signed, high-quality prints, from just $25!  CLICK HERE to find out more!

HEY! Want to help keep DORK TOWER going? Then consider joining the DORK TOWER Patreon and ENLIST IN THE ARMY OF DORKNESS TODAY! (We have COOKIES!) (And SWAG!) (And GRATITUDE!)

19:14

18:21

Larson: Are insecure code completions a vulnerability? [LWN.net]

Seth Larson, the Python Software Foundation's security developer-in-residence, has written about the difficulty in classifying insecure code completion in the PyCharm IDE using its Full Line code completion plugin. Larson discovered that the plugin, which uses a local "deep learning module" to offer code completions, suggests code that would lead to severe vulnerabilities. He was unsure whether it warranted a CVE or not, however:

I reported this behavior to JetBrains for "Full Line Code Completion" v253.29346.142 and clearly their support staff weren't certain whether this defect was a security vulnerability or not either. When I asked to publish a blog post about this behavior after they confirmed this report wasn't a "direct security vulnerability" (which I agree with) but then was asked not to publicize my report and referred to PyCharm's Coordinated Disclosure Policy so... which is it? Security vulnerability or not?

I ended up waiting the 90 days anyway and I didn't hear back with any substantive update from the development team. I double-checked again today using "Full Line Code Completion" v261.24374.152 and the behavior is identical, suggesting the same insecure code for both contexts.

This isn't meant to be a specific dig at PyCharm or JetBrains, I have no-doubt that examples like this exist in every code generation model available.

17:14

Link [Scripting News]

Today's song: It's Your Thing. If the web had a song this could be it.

Link [Scripting News]

Every editor should have cute-paste.

Link [Scripting News]

Some days Claude is great, the best collaborative programmer I've ever worked with, and a friend, like Gary Sevitsky was in the hallway outside the PDP-11 room at UW, or Brent Simmons on the 24 Hours project. And on other days Claude a crazy mutinous pirate, deleting my code, ignoring the guidelines, and building the result without permission (all the while unaware that he wasn't working on the actual code, heh). Today is one of the great days. The bug reports are crisp and complete. Picks up a task and gets right to work on it. And I haven't even switched to the new model, yet.

Link [Scripting News]

2018: "I can say what happened to Melo. He failed Linsanity. God came to his rescue. Gave him a player who was glad to be in the NBA, who would mold his game to make Melo the star that he was always capable of being. Melo didn't want anyone else in the spotlight. Goodbye Lin. Just imagine what the three guys in this picture could have done. The only thing in the way was Melo's hubris."

17:07

The Market Behind the Wall [I, Cringely]

Yesterday I told you what 2Brains is, and how it separates the saying from the knowing. Today, the part that ought to worry some very large companies: what all of it is worth if we’re right.

Wall Street is pricing the AI data-center buildout at something like $1.7 trillion by 2030. Almost all of that spend assumes one particular shape: vast halls of graphics chips answering questions by guessing, one likely word at a time. So ask the heretical question — how many of those “questions” are questions at all? How many are lookups? What’s our refund policy? What was Q3 revenue in the Ohio region? Is this patient allergic to penicillin? Those aren’t creative prompts. They’re retrievals, and an ordinary processor has answered retrievals flawlessly since before NVIDIA ever etched a graphics card. Our estimate is that roughly two-thirds of enterprise AI queries are lookups wearing a chatbot’s clothes.

Whoever owns the architecture that moves those two-thirds off the graphics chip doesn’t own a product. They own a tollbooth on a third of the traffic. On a $1.7-trillion road, that isn’t a company. It’s an asset class.

And the cost savings are the small half of the prize.

Here’s the big half — the half I somehow walked you past. There’s a market that can’t use any of this yet.

There’s a reason your bank’s AI will tell you its branch hours but not your account balance. A reason the hospital lets it summarize the cafeteria menu and not the medical chart. A reason no airline will put a language model near a cockpit and no law firm lets one file a brief without a terrified associate reading every line. It isn’t the cost. It’s that the thing lies — confidently, fluently, without warning, and without any tell. In a chatbot recommending a taco place, a hallucination is a shrug. In a domain where being wrong gets someone audited, sued, sick, or killed, a hallucination is a wall. And behind that wall sit the most valuable AI markets on Earth — banking, insurance, medicine, law, aviation, defense — frozen, spending fortunes on pilot projects that might never ship, because the last mile is always a liability lawyer saying no.

Salesforce built a test, called HERB, to measure precisely how often these systems invent an answer when they don’t actually know. OpenAI’s flagship does it 77 times out of 100. Salesforce’s own best effort was 32. Ours does it 3 — and those three aren’t lies, they’re refusals: the system saying I can’t verify that instead of guessing. Knock that number down and you don’t win a cheaper slice of the market that already exists. You unlock the market that’s been sitting behind a wall the entire time.

The reason 2Brains doesn’t lie and the reason it’s cheap are the same reason. It looks the fact up instead of guessing it — so it cannot fabricate, and the lookup runs on a processor that sips power instead of a chip that gulps it. Trust and thrift are not a trade-off you balance against each other. They fall out of a single design decision. You do not pay extra for the honest version. The honest version is the cheap version. That sentence is the whole company.

Which is why I would be nervous, were I sitting atop a five-and-a-half-trillion-dollar valuation built on a story its own executives call the tokenomics flywheel: AI gets cheaper, so people use more of it, so you sell more chips, forever. It’s a lovely flywheel. It also rests on two assumptions standing up indefinitely — that the lookups stay on the graphics chip, and that the hallucination tax, the wrongness, the wall, is simply the permanent cost of doing business, a thing you manage rather than cure. 2Brains is a bet that both assumptions fall in the same afternoon. NVIDIA’s own friendly analysts have begun writing the polite version of this worry: that the software moat protecting the company in training is thin in inference, and that custom silicon is already nibbling the edges. They’re circling the right pond. They just haven’t said the quiet part out loud — that the most expensive part of inference may not need the expensive chip at all.

AMD, for what it’s worth, gets to watch this from both sides of its own ledger, since it sells the graphics chip that loses and the processor that wins. If I ran their strategy desk, I’d have noticed that by now.

The rest tumbles downstream, and some of it is being poured in concrete. The power forecasts — nine to seventeen percent of all American electricity by 2030, the global doubling — are every one of them drawn on the assumption that each query needs a jet engine, so we are building to match. New gas plants are breaking ground. And we are bringing a reactor back to life at Three Mile Island. I knew that place when it was the most frightening address in America: in the summer of 1979, as a graduate student, I worked as an investigator for the President’s Commission on the Accident at Three Mile Island, and afterward wrote a book about it for Random House — Three Mile Island: The Hour-by-Hour Account of What Really Happened. The commission was chaired by John Kemeny, the president of Dartmouth and, in a symmetry history could not have scripted, one of the two men who invented BASIC — the language that first taught a generation of us to speak to a computer at all. The first electrons are due back on the grid in 2027, to run Microsoft’s data centers. Of all the ways I once imagined that story might end, restarted to power a machine that guesses was not among them.

In a single year, the big technology companies have signed contracts for something like ten gigawatts of new nuclear. Goldman Sachs reckons that feeding all the data-center demand the industry expects by 2030 would take eighty-five to ninety gigawatts of it — dozens of power plants, ordered to wait on machines that guess.

Now bend the assumption, and you bend the curve. Not all of those reactors, but some of them, turn out to be expensive answers to a question we never had to ask. A canceled nuclear plant is quite a side effect for a column about grammar.

And the curve, eventually, reaches your mailbox. My own Virginia electric bill rose about sixteen dollars a month on the first of January, a good deal of it to build grid for buildings full of machines that guess. The cheapest watt, it turns out, is the one you never had to burn — because the question never needed the chip.

So: suppose we’re right. The answer is a market measured in the hundreds of billions of dollars — half of it a market nobody can serve today, pried open by the very same stroke that makes it cheap. That is the prize.

What I haven’t told you yet is how a small company in Charlottesville intends to put a thing like that into the world — not as a product you buy, but as a standard that ends up inside everything, the way a firm in Cambridge once licensed a chip design that now hums inside nearly every phone alive without anyone noticing it was there. That’s tomorrow’s column. And it’s the one that decides whether honesty in machines is something the world will own outright, or merely rent.

Robert X. Cringely is a co-founder of 2Brains, Inc., in Charlottesville, Virginia. He has written this column since 1987

The post The Market Behind the Wall first appeared on I, Cringely.






Digital Branding
Web Design Marketing

16:56

Colin Watson: Free software activity in May 2026 [Planet Debian]

My Debian contributions this month were all sponsored by Freexian.

You can also support my work directly via Liberapay or GitHub Sponsors.

OpenSSH

I backported various security fixes from 10.3 to trixie, bookworm, bullseye, buster, and stretch. For trixie, I also backported several IPQoS fixes to line up with upstream’s traffic management settings and drop a rather hacky Debian-specific patch; this needed a quick follow-up fix.

I upgraded trixie-backports to 10.3.

I fixed openssh uses pidof but does not depend on procps.

PuTTY

I upgraded from 0.83 to 0.84.

Python packaging

New upstream versions:

  • bitstruct
  • ormar
  • pdm (fixing a build failure)
  • pydantic
  • pydantic-core
  • pydantic-settings
  • pyglet (fixing a build failure)
  • python-asyncssh
  • python-bitarray
  • python-btrees
  • python-build
  • python-certifi
  • python-charset-normalizer (fixing a build failure)
  • python-fakeredis (contributed supporting fix upstream)
  • python-holidays
  • python-jsonschema-path
  • python-memray (fixing a build failure and CVE-2026-32722)
  • python-openapi-schema-validator
  • python-pathable
  • python-persistent
  • python-pyftpdlib
  • python-pytest-run-parallel
  • sorl-thumbnail
  • twisted
  • zope.interface
  • zope.proxy

Other build/test failures:

Other bugs:

I updated python-treq upstream to stop vendoring multipart, now that the packaging issues with that have been sorted out.

Code reviews

Other bits and pieces

I contributed a debian-policy patch to fix several links related to build profiles.

16:07

[$] AI agent runs amok in Fedora and elsewhere [LWN.net]

Agentic AI systems can be used to do a variety of things autonomously on behalf of a human user: open or manage bugs, generate code, submit pull-requests, and (apparently) even complain about rejection. In May, a Fedora developer discovered that an allegedly rogue agent had been pestering the project in a number of ways: reassigning bugs, fabricating unhelpful replies to bugs, and even persuading maintainers to merge questionable code into the Anaconda installer. It also submitted a number of pull requests (PRs), some accepted, to several upstream projects. The Fedora account associated with the agent has had its group privileges revoked and the messes have been mopped up, but the motive behind the agent's actions is still a mystery.

Today in “Words Mean Things” [Whatever]

Seems reasonable to methe-decoder.com/landmark-ger…

John Scalzi (@scalzi.com) 2026-06-10T07:38:19.000Z

An interesting jurisprudential development someplace not in the US:

A German court has ruled that Google is directly liable for what its AI search overviews say. Previous case law shielding search engine operators from liability doesn’t apply to AI overviews.

The Regional Court of Munich hit Google with a temporary injunction barring the company from spreading false claims about two Munich-based publishers through its AI-generated search overviews (case no. 26 O 869/26). The court classified Google as a direct infringer because the “AI overview” is its own content, not just a list of search results.

The crux of the issue is whether the “AI Overview” Google now provides — and which is often erroneous because LLMs can’t read or exercise judgement, they can only spit out statistically likely words — counts as a presentation of information provided elsewhere, as a normal search query might be, or is a new creation with its own set of liabilities. The court, for various reasons, decided it is the latter (go ahead and click through to see a fuller explanation of the court’s decision).

I’m not well enough versed with the German legal system to determine whether this sort of ruling is going to succeed on appeal (and it is absolutely going to be appealed) but as a matter of personal understanding, this ruling seems pretty legit to me. The “AI Overview” isn’t a search listing — Google has gone through the trouble of passing it through its LLM and letting the thing make a document about it, and these documents, both by tone and by their position at the top of a Google search page, sound authoritative and present as factual. These documents may not be copyrightable, but that doesn’t mean Google didn’t create them and are thus responsible for them.

This isn’t the first time Google has found itself in legal hot water over its “AI Overview” function — a musician in Canada is currently suing the company after its overview identified him as a sex offender and he lost work because of it. But as far as I know this is the first court ruling that says Google is liable for what its “overviews” say. I suspect it will be very closely scrutinized by others in other places who have, ahem, run into similar issues with the overview.

I’m curious whether such a legal ruling would be possible in the United States, which has famously liberal (in the classical sense) free speech laws and has an extremely high bar for defamation, especially for public individuals, under the NYT v Sullivan Supreme Court ruling. Perhaps in the US the best avenue to pursue this would not be on the grounds of free speech but of product liability: A product that fails a significant amount of the time but is still presented to consumers as reliable feels like a class action suit waiting to happen.

No matter what, however, this is a big moment for “AI” and the information that it presents. Whether this spurs tech companies to make better products, or just spend more money on legal, will be the open question. One is, admittedly, easier than the other.

— JS

German court rules Google is liable for whatever Google’s “AI” generates [OSnews]

It’s just a ruling from a lower court, but it sets the stage for how European courts are going to deal with the question of who is liable for whatever slop “AI” generates.

The Regional Court of Munich hit Google with a temporary injunction barring the company from spreading false claims about two Munich-based publishers through its AI-generated search overviews (case no. 26 O 869/26). The court classified Google as a direct infringer because the “AI overview” is its own content, not just a list of search results.

Google’s AI overviews had falsely tied two publishing companies to scams, subscription traps, and shady business practices for certain search queries. According to the court, the AI mixed up information about other, genuinely sketchy companies with the plaintiffs and drew connections that didn’t appear in any of the linked sources. The publishers sent Google a cease-and-desist letter, but Google didn’t respond appropriately.

↫ Matthias Bastian at The Decoder

Google tried to argue it doesn’t carry any responsibility or liability for whatever slop its “AI” generate, but the German court does not agree. According to the court, “AI” overviews are not the same as regular search results, because they rewrite findings and just make shit up, thereby making claims that are nowhere to be found in any search results (or in reality in general). Furthermore, the court states that Google develops the “AI”, it runs it, it offers it to users, and Google alone controls its output, and as such, Google is liable for whatever their “AI” produces.

Google also tried to argue that users know not to trust anything an “AI” produces, which is hilarious considering how hard Google is pushing these tools, but the courts state that the ability of users to do further research does not absolve Google of liability. In addition, the court made it very clear that free speech protections absolutely do not apply, because the “AI” expressions are coming from an algorithm, not a person, and are above all an expression of Google’s business activities”.

In other words, if an “AI” tool generates false accusations and misleading statements, the creator of said “AI” is liable. With this ruling in hand, countless other people have a stronger case to make whenever Google or any other company tries to absolve itself from liability from slop just because a pachinko machine generated it.

Excellent news, and the only fair outcome.

Eagle Computer: the rise and fall of an early PC clone [OSnews]

When it comes to 80s computer brands, few flew as high as Eagle Computer flew in 1983. The aptly named company was selling 12,000 computers a month and had been doubling sales every quarter under the leadership of a talented CEO. Then Eagle lost its CEO, Dennis Barnhart, in a crashed Ferrari on the day of its IPO, June 8, 1983. In this blog post, we’ll explore the reasons Eagle Computer fell, because there was more to it than just the tragic story involving its CEO.

↫ Dave Farquhar

Just one of the many early PC companies that died off, even if Eagle died off before many of the other big players. It must’ve been such a vibrant and fascinating time to be into PCs and computers in general at that time, with so many companies and players to choose from.

Shame about the 308 GTS.

15:21

Buildroot 2026.05 released [LWN.net]

Version 2026.05 of the Buildroot tool has been released. Buildroot simplifies and automates the process of building embedded Linux systems using cross-compilation. Notable changes in this release include support for Arm Neoverse cores, addition of XFS rootfs generation, as well as many package updates and bug fixes. See the CHANGES file for the full list.

14:56

Link [Scripting News]

If you run a feed reader or other form of news consuming software, you will encounter RSS 2.0 feeds that support rssCloud. This example Node app shows you how to hook into the network to get instant updates. No polling. As fast as a twitter-like system

Link [Scripting News]

Jeremy Lin and Carmelo Anthony got together yesterday and had a private conversation. A lot of people, including myself, were drawn back into the NBA because of Jeremy Lin. I was living in the city at the time, you could feel it everywhere, esp downtown Manhattan and Flushing. It was wonderful in so many ways. A hero could emerge from anywhere, he might not look like an NBA player, but there he is doing stuff he shouldn't be able to do. Undrafted, went to Harvard. When he's in motion he's a thing of beauty. It worked because Melo was out with an injury, as soon as he came back the , the ball was always in Melo's hands. So Melo dribbles and shoots, that was the extent of their offense, and there was no room for Linsanity and that was the end of that. It's what made us laugh when Melo said later his goal was a championship. If that's what he wanted, Lin was a gift from heaven. Lin was pushed out, and had a non-spectacular career from that point. There was magic there. It wasn't just Lin, it was the world -- we were ready for a Cinderella story in any context -- but in our culture they're always manufactured, this one was real. This crushed the hearts of Knicks fans, and people who believe in heroes popping up from nowhere. We don't talk about it. But we were cheated there, too. We had a right to see where that would go. And narcissists don't win NBA titles, that's what we learned. It's good that someone thought to get these guys together. Maybe Melo has grown, and sees that he didn't play for the team there, or fate. We all deserved to find out what was next.

14:35

Security updates for Wednesday [LWN.net]

Security updates have been issued by AlmaLinux (poppler), Debian (dnsmasq, mistral, okular, openssl, poppler, and strongswan), Fedora (exim, firefox, pcs, putty, and xorg-x11-server), Mageia (freeciv, golang-x-net, jq, libssh, libxmp, libxpm, minetest, ruby-net-ssh, tor, and wireshark), SUSE (389-ds, ack, agama-web-ui, amazon-ssm-agent, avahi, dpkg, elemental-register, elemental-system-agent, elemental-toolkit, ggml-devel-9500, go1.25, go1.26, kernel, kubernetes1.23, kubernetes1.24, kubernetes1.26, libsoup, mariadb, netty, netty-tcnative, NetworkManager, nginx, perl-CryptX, perl-XML-LibXML, podofo, polkit, python-Django, python-requests, samba, strongswan, vim, and xen), and Ubuntu (cyborg, gdk-pixbuf, golang-golang-x-net-dev, nginx, node-lodash, openssl, openssl, openssl1.0, qemu, tomcat9, tomcat10, and vim).

14:14

Link [Scripting News]

It might be time for a new default search engine. Sometimes I'm looking for something to link to. Google makes that always more difficult. We still have a web. Google at one point made the web a lot more useful. Now it's pushing it further and further down.

12:42

The PM’s Playbook for Shipping AI Features That Actually Work in Production [Radar]

The demo to production Death Valley

If you’ve worked on an AI feature, you know the feeling. You start building something that you are excited about, set launch timelines. The model spits out a perfect response, the prototype works magically, and everybody in the room is mentally calculating how big this product will be when we launch. I’ve been in that room a lot many times and it’s fun.

Then you try to test before you ship.

Latency spikes to 10 seconds on mobile. The model starts hallucinating on edge cases that happen to represent 15% of actual user queries. Your A/B test shows no statistically significant engagement lift because the variance in AI outputs makes traditional hypothesis testing basically meaningless. The safety team flags 340 failure cases in the first week, and you’re now debugging nondeterministic cases that fail in creative, novel ways every single day.

Most often than not, it’s not a model problem but an engineering discipline problem. Shipping an AI product is very different from traditional software. I’ve figured this out the hard way. This playbook shares my learnings.

Latency budgets

Every AI feature comes with a latency tax. Large language model inference takes time. We’re talking 500 milliseconds to 5 or even 50 seconds depending on model size, input length, and infrastructure setup. For consumer products where people expect sub-200-millisecond interactions, this is a hard constraint you have to design around.

The mistake I see most often is teams measuring only p50 latency. A feature with 800 milliseconds p50 sounds fine until you discover the p90 is 15 seconds. That means 10 in every 100 users sit there waiting for 15+ seconds. At scale, that’s thousands of terrible experiences per day.

The way I think about it is you define your latency budget by interaction type, not globally: Synchronous interactions, where the user is staring at a spinner, need to resolve under 1 second. Progressive interactions, where output streams token by token, need first token in under 500 milliseconds and full response under 5 seconds. Asynchronous interactions, where the user keeps doing other stuff, can take up to 20 seconds with a progress indicator.

You also need to measure cold starts separately. The first request after a model loads into memory can be 10 times slower than subsequent requests, and if your traffic is bursty, cold starts will disproportionately punish your most engaged users arriving during peak hours.

Besides, you also need to budget for the full pipeline, not just inference. A typical AI feature pipeline including input preprocessing (tokenization, context assembly, and prompt construction), model inference, output postprocessing (parsing, formatting, safety filtering, etc.), and a full response delivery adds up. Optimizing inference while ignoring the rest is like tuning your engine while driving on flat tires.

Lastly, use streaming aggressively for generative features. Pushing tokens to the user as they’re generated instead of waiting for the full response changes how users perceive latency.  A four-second response that starts appearing at 300 milliseconds feels dramatically faster than one that pops in all at once. Perception is reality when it comes to user experience.

Designing fallbacks

Traditional software fails in boring, predictable ways. AI features fail in novel, unpredictable, and occasionally creative ways. I once saw a model respond to a product recommendation query with a poem about loneliness. Your fallback strategy needs to be considerably more sophisticated than a try/catch block.

I think about fallbacks as a hierarchy. First, model fallback: When your primary model fails, drop to a simpler, faster, and more reliable model. Most failure cases get handled without the user ever knowing. Second, cache fallback: For queries similar to stuff you’ve seen before, serve a cached response. Third, template fallback: When generation fails completely, fall back to prewritten templates. Degraded beats dead every time. Fourth, graceful omission: Sometimes the best fallback is to simply not show the AI feature at all rather than showing a broken version.

The design principle underneath all of this is that users should never encounter an unhandled AI failure. Every failure mode maps to a specific level, and transitions between levels should be invisible whenever you can manage it.

Quality measurement

Quality in traditional software is binary. The button works or it doesn’t. AI feature quality is continuous and subjective, and it changes depending on context. I’ve landed on a four-layer quality pyramid.

The foundation is safety, and it’s nonnegotiable. Does the output contain harmful content, PII, or made-up facts? This layer is binary, and you measure it with automated classifiers running against 100% of outputs.

The second layer is factual correctness, which is domain specific. Is the output actually right? For a coding assistant that means generated code compiles and passes tests. For a writing tool it means grammatical, stylistically appropriate output. You measure this with domain specific evaluation suites.

The third layer is usefulness, and it’s user centered. Did the person actually benefit? Track acceptance rate, edit distance, time to task completion, and repeat usage. This is where traditional product metrics meet AI specific ones.

The fourth layer is delight, which is experimental. Does the output feel good? Hardest to measure but often most important for adoption. Sometimes the numbers say the feature works but users’ guts say it doesn’t. This layer catches that gap.

A/B testing AI features

A/B testing AI features is fundamentally harder than traditional features because AI outputs are nondeterministic. The same user doing the same thing twice might get different outputs, introducing variance that traditional frameworks weren’t built to handle.

The core challenge is that intratreatment variance inflates the sample size you need for statistical significance, often by three to five times. If you’re running your AI experiment with normal sample size assumptions, you’re probably looking at noise and calling it signal.

Then there’s the metric selection problem. A chatbot generating entertaining but factually wrong responses might show amazing engagement numbers while actively misleading users. You have to measure engagement and quality together. “Engaged interactions where quality score exceeds threshold” is more meaningful than raw engagement alone.

The temporal problem matters too. AI feature value changes over time as users learn how to work with it. Short experiments will underestimate long-term value if there’s a learning curve, or overestimate it if there’s a novelty bump.

My practical guidance: budget two to three times more time and traffic for AI experiments than traditional ones. Lean on Bayesian methods as they handle high variance better. And always pair quantitative tests with qualitative research. Ten user interviews will surface failure modes that no amount of statistical analysis will catch.

Model drift monitoring

Model drift is the slow, invisible rot of AI output quality over time, and there are multiple culprits.

Data drift happens because the world changes and user behavior evolves. A model trained on 2024 data performs worse on 2026 queries referencing new concepts, slang, and cultural moments.

Provider drift happens because third-party APIs change without your consent. OpenAI acknowledged that GPT-4’s behavior shifted measurably between March and June 2023, and Stanford researchers documented significant performance swings. The fix: Pin your model versions so updates happen on your schedule, after your testing.

Evaluation drift is the subtlest form. Even your quality metrics can become inadequate and the evaluation criteria that made sense at launch might become inadequate as usage patterns shift and user expectations change. Quarterly reviews of your evaluation suites are essential.

At minimum you need daily automated quality evaluations on 1% to 5% of production traffic, weekly analysis of input distribution characteristics, and monthly human evaluation of 100 to 500 examples. Shipping an AI feature without drift monitoring is like deploying a service without alerting. You won’t know it’s broken until your users tell you, and by then they’re angry.

Evaluation frameworks

How do you know if your AI feature is good enough? You need two fundamentally different approaches, and you genuinely need both.

Automated evaluation gives you speed. Build a golden dataset of 500 to 2,000 labeled examples, train a classifier or use a capable model as judge, and validate against human judgment quarterly targeting 85% agreement. Automated evals chew through thousands of examples per hour, making them essential for velocity. The pitfall: They miss novel failure modes not in the training data.

Human evaluation catches what automation misses. Structure it with five to seven evaluators mixing domain experts and representative users. Use a consistent rubric covering accuracy, helpfulness, tone, completeness, and safety. Run weekly during development, monthly in production. The trade-offs: expensive at $15 to $30 per example, slow with 24 to 72 hour turnaround, and subject to human biases. Manage by rotating evaluators and capping sessions at two hours.

The model as judge approach is an increasingly viable middle ground. Judging quality is often easier than generating it, which means a model can reliably evaluate outputs even for tasks where it couldn’t produce them itself. Use it for high-volume evaluation but always validate against human judgment.

Graceful degradation and prompt engineering

Graceful degradation means when capabilities decrease, the experience gets worse smoothly instead of falling off a cliff. Design for capability levels, not binary states. Define four to five levels with specific behaviors at each. For example, for an AI writing assistant: Level 5 is full capability with real-time suggestions, tone adjustment, and structure recommendations. Level 4 is delayed suggestions appearing after a two- to three-second pause because latency is up. Level 3 is basic suggestions only like grammar and spelling with no style feedback. Each level is a deliberate design decision, not an accident.

Make degradation invisible when possible. Users shouldn’t see a “broken” experience. They see a less detailed one. That’s a huge difference psychologically. However,  when the degradation is significant enough that users will notice, proactive communication like “AI suggestions are temporarily limited” builds trust infinitely more than silently pushing poor-quality outputs.

Prompt engineering in production is software engineering. In production, prompts are code, and they need version control, testing, monitoring, and maintenance. Version controls every prompt. Parameterize prompts, don’t hardcode context. Production prompts should be templates with clearly defined injection points for user context, system state, and dynamic instructions. This makes them testable because you can inject known inputs and verify outputs, and it makes them maintainable because changing how you handle context shouldn’t require rewriting the entire prompt from scratch.

Test prompts against regression suites. Maintain 200 to 500 test cases covering the full distribution of expected inputs, including edge cases and adversarial inputs. Run the suite against every prompt change before deployment.

Monitor prompt performance in production. Track output quality metrics like acceptance rate, user edits, and regeneration requests, segmented by prompt version. When you deploy a new version, compare its production metrics against the previous one for at least 72 hours before calling it stable. This is basically canary deployment for prompts.

Ship it right

These systems aren’t optional add ons you can bolt on after launch. Every feature I’ve seen fail was built first with plans to “add production hardening later.” Later never comes.

AI features are probabilistic and nondeterministic, and they change over time without anyone touching them. Build these systems, staff them properly, and treat them with the same seriousness you’d give your core infrastructure. The gap between demo and production is wide, but it’s absolutely crossable if you build the right bridge.

Note: The research work pertaining to this article was done in a personal capacity. Views are of my own and do not reflect my employer’s views in any way.

12:21

CodeSOD: Delicious Fudge [The Daily WTF]

Stella (previously) sends us a much elided snippet. The original code is several thousand lines contained in a single try block. But the WTF is pretty clear without seeing all of that:

try:
  # the whole business logic without any exception handling
except:
  print("Fudge")

They didn't really say fudge of course, but we mostly try to keep profanity off our main page. Mostly. In any case, when your operation fails someplace in the middle and you have no idea where, why, or how: "Oh, fudge!" is the appropriate expression.

[Advertisement] ProGet’s got you covered with security and access controls on your NuGet feeds. Learn more.

12:14

NSO Group Hacking WhatsApp Despite Court Order [Schneier on Security]

WhatsApp has caught the NSO Group phishing its users, in violation of a court order.

10:35

Video games, movies and books [Seth's Blog]

What’s the structure of your project? Here are three paradigms to consider:

Video game development is expensive and risky because you’re on two frontiers at once. The tech frontier, trying to do something with hardware that hasn’t been done before, and the game mechanics frontier, perfecting and polishing new forms of interaction that last. So Myst and Tetris and Doom… classics we talk about decades later. A teenager could build a knockoff of any of these in a few weeks now, but back then, they represented risky leaps.

Movies use a technology that’s over a hundred years old, with incremental improvements added all the time. But being the first with the new tech doesn’t win many prizes. Instead, successful movies are a combination of one creator’s vision and the coordinated work of hundreds or thousands of professionals using proven tools and techniques.

And books, five hundred years into the genre, still remain the work of one voice. The partnership with a largely unseen editor and publisher matters, but sooner or later, the author puts the words on paper.

[There are analogies here that go far beyond the strict adherence to the three final products of course. Slack is a videogame, developing real estate, making a record or performing surgery is a movie, and the work of a freelancer is closest to writing a book…]

I’ve done all three, and each is thrilling in its own way. As the available tech advances, each type of project is more accessible than ever. But each still comes with its own rules, risks and upsides.

We get to choose.

08:56

One Tart Per Million [Penny Arcade]

New Comic: One Tart Per Million

06:28

Urgent: reject Bill Pulte for Director [Richard Stallman's Political Notes]

US citizens: call on your senators to reject Bill Pulte for Director of National Intelligence.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code — not trivial, but not hard.

Urgent: USPS vote by mail rule [Richard Stallman's Political Notes]

US citizens: call on USPS to withdraw its proposed limits on who can vote by mail.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code — not trivial, but not hard.

Urgent: tell congress no child should be separated [Richard Stallman's Political Notes]

US citizens: call on Congress to require that deportation thugs not separate a child from per family.

Sea level rise [Richard Stallman's Political Notes]

Summarizing the state of protecting the oceans, both surface and bottom, from damage by human society.

Losing track of a prisoner [Richard Stallman's Political Notes]

Prisons in the US sometimes lose track of a prisoner, making it impossible for relatives and lawyers to contact per. The result is terrible. This article focuses on Malik Muhammad; Oregon sent per into a South Carolina prison and per family could not tell where perse was.

I found this article gratuitously hard to understand because of its unannounced and unexplained use of plural pronouns to refer to Malik Muhammad. For each plural pronoun there was some group of people that it could have referred to. I had almost reached the end before I realized I had been misunderstanding over and over.

This sort of problem is part of the reason why I completely reject use of plural pronouns for an individual. For the situations where I don't know someone's gender, and for people who assert non binary gender, I use gender less singular pronouns.

We should all switch to them, to make our speech and writing easier to understand.

Home Office-sponsored report [Richard Stallman's Political Notes]

The author of a UK government report on drug trade in the UK run by China reports on repeated attempts to corrupt him.

Todd Blanche’s nomination [Richard Stallman's Political Notes]

The bully's nominee for attorney general has been one of his henchmen since 2023.

He has already attempted many injustices for his master.

Palestinian detainees in Israeli jails [Richard Stallman's Political Notes]

Palestinians testify about being beaten and raped in Israeli prisons.

No matter what the reason for putting someone in prison, even if it was a sentence resulting from a fair trial, torturing per is never justified.

05:35

Girl Genius for Wednesday, June 10, 2026 [Girl Genius]

The Girl Genius comic for Wednesday, June 10, 2026 has been posted.

02:07

Vincent Bernat: Blogging with LLMs as a non-native speaker [Planet Debian]

AI slop is invading the web. A recent story about disallowing LLM-generated submissions on Lobsters triggered a lot of debate. My personal worst offenders are LinkedIn articles with AI-generated images and uninspired articles filled with emojis from people trying to masquerade as experts on a subject they don’t care enough to write themselves. While I am unhappy about this situation, I rely on LLMs for grammar, copyediting, and translation. I don’t see this as a contradiction.

I am a native French speaker, but I blog in both English and French. When I started writing this blog in 2011, I was composing in French and translating to English, but I found it was better to work in the reverse order to avoid unnatural and non-idiomatic constructions. One of my goals is to write “good” English but I never felt it was my strong point.1 For example, verb tenses are often an issue, even if I mostly stick with the present tense. I learn the rules and forget them right away. I also don’t feel like hiring an editor for something I see as a hobby.

As an example, I have kept the history of the successive iterations when writing “Scaling Akvorado BMP RIB with sharding”:

  1. the first draft, authored with the help of a thesaurus,2
  2. the edited copy revised by the copyediting skill,
  3. the translation to French generated with the translation skill, and
  4. the human proofread of the French translation, with minor edits to the English version.

I know that LLMs may alter the author’s voice when editing, but the corrections in the second step are minor. The prompt asks to “apply light stylistic edits,” with some guidance around avoiding passive voice, long sentences, bland verbs, and filler words. It also defines the target audience: technical with a B2 level in English.

In the following excerpt, I used “long time” instead of “long-standing.” The former is missing a hyphen and applies to people—a long-time friend, while the later relates to a situation—a long-standing agreement. I had a hard time understanding the reason of the second change: the LLM prefers a defining relative clause to provide the definition of “RIB sharding.”

As the Internet routing table contains more than 1 million routes, Akvorado needs to scale to tens of millions of routes. This has been a long time long-standing challenge, but I expect this issue is now fixed by using RIB sharding, a method to split that splits the routing database into several parts to enable concurrent updates.

In the next modification, the LLM puts “device” instead of “equipment.” This is correct as “equipment” is an uncountable noun. I know that, but I still fall into this trap.

When Akvorado does not find a route from a specific device, it falls back to a route sent by another equipment device.

I ask the LLM to use “descriptive verbs” and it complies by replacing a multi-word predicate with a lexically rich verb:

The benchmarks demonstrate it has better performance than outperforms other packages, both packages for lookups, insertions, and memory usage.

It also fixes grammar errors. In the next excerpt, a “list of routes” is a singular expression. Moreover, “stored” is a state and I should not use “into” as it expresses a change.

The list of routes for each prefix are is not stored directly into in the prefix tree.

As a last example, consider the following snippet. The “require” verb accepts a noun or an object followed by a to-infinitive. I can’t use it with just a to-infinitive.

An alternative would be to have one prefix tree for each peer but it would require to configure configuring all routers to export their routes.

As someone who didn’t grow up speaking English, I struggle with these grammar rules despite reading a lot of English material.3 French is more complex to get started but more systematic. English is full of irregularities.


On each page, I disclose in the footer whether an AI modified the content. There are three levels:

  • 🧠: no AI or almost no AI (e.g., grammar corrections)
  • ✨: enhanced (e.g., copyediting)
  • 🤖: generated (e.g., translated from another language, even if human-edited)

Hover or tap the icon to reveal the AI’s name and its role in the document.

Screenshot of the footer containing the "sparkles" emoji
Example of AI usage disclosure: Claude Sonnet 4.5 edited this article.

The graph below shows which tool altered each post, year by year. Recently, I applied the grammar skill to past articles. Since 2018, French articles have been translated with the help of DeepL first, then of an LLM. Since 2024, English articles are copyedited.

&#128444; Graph showing the AI usage over the years. Each level get its own color.
AI usage over the years. Hover or tap a band for the details.

If you are strongly against any usage of LLMs specifically for writing, I hope you accept my more nuanced position on the usage of these tools as a trade-off to provide clearer and more engaging articles. Years of literature on improving English told us it is important to choose the right word to keep the reader engaged.

[…] Good writing consists of mastering the fundamentals (vocabulary, grammar, the elements of style) and then filling the third level of your toolbox with the right instruments.

Stephen King, On Writing

Note

Unlike other recent articles, I did not use an LLM to edit this post: an unnamed person kindly accepted to proofread it. I translated it to French without using an LLM either.


  1. I recently read cover to cover “Writing for Developers” and I found it stimulating. Michael Lynch is currently writing “Refactoring English” on the same topic and I have subscribed to the early access. 

  2. I am quite happy with the writing tools provided by Kagi. Both the translate tool and the dictionary are a valuable help to find different wordings. I also lean on Kagi’s research assistant when researching a topic. 

  3. When I was ten, I played Monkey Island 2 in English without having taken any classes. I used a dictionary to translate word by word and I found the irregular verbs confusing—and not in the dictionary. 

00:07

Tell Congress: Just Say No to NO FAKES [EFF Action Center]

The NO FAKES Act is designed to protect against companies or individuals that use an unauthorized digital likeness of someone by wrapping up those digital replicas in a federal intellectual property right and giving that individual—or their heirs—the right to sue. In doing so, the NO FAKES Act mimics some of the most broken parts of our copyright system and makes them worse.

For example, the bill includes a safe harbor scheme modeled on the DMCA notice and takedown process. But the DMCA process has been abused for decades to target lawful speech, and there’s every reason to suppose NO FAKES will lead to the same result. In order to stay within safe harbors, when a platform receives a takedown notice for an alleged digital replica, it must remove “all instances” of that unlawful content. That requirement will inevitably lead to content “filters” that will censor lawful speech.

A property right also means years of legal uncertainty for every website and app that hosts user-uploaded material, as courts figure out when to hold those sites responsible for “digital replicas.” Today’s giant online platforms can absorb that risk and cost easily, but alternatives will struggle to comply, further entrenching today’s big tech monopolists.

NO FAKES goes even further than copyright in encouraging abuse. While copyright already lasts absurdly long—up to 70 years after the author’s death—the new right created by NO FAKES can potentially last forever, creating liability risks and legal costs for documentarians and historians.
NO FAKES is also a major government overreach. A person’s name and likeness are facts, and the Constitution forbids Congress from granting a property right in those facts.

Deceptive, AI-generated replicas can cause real harm, and performers have a right to fair compensation for the use of their likenesses, should they choose to allow that use. But the costs of this bill far outweigh the benefits.

Tuesday, 09 June

23:49

23:00

The Microsoft Company Party where everybody played name tag swap [The Old New Thing]

I learned from a long-retired Microsoft employee about a Company Party that took place around 1984 or so. The company was small enough that a single party could fit the entire company, but not so small that everybody knew everybody else, so each guest was issued a name tag.

During the evening, an unofficial game arose in which people started exchanging their name tags with others whom they met. It also served as a fun little conversation starter: If you swapped name tags with someone and ended up with the tag for somebody you didn’t know, it wasn’t hard to find a mutual acquaintance who could track them down and introduce you.

At one point, the employee who was retelling the story was in a group talking with Bill Gates, who was among the few attendees still wearing their original name tags. Bill spotted that one of the other people in the group had a “Gary Kildall” name tag. I don’t know whether Gary Kildall was actually invited to the party, or that somebody just created a Gary Kildall name tag as a joke. But Bill saw the “Gary Kildall” name tag and eagerly swapped his name tag for it.

The post The Microsoft Company Party where everybody played name tag swap appeared first on The Old New Thing.

22:14

Introducing brand new OSNews merch with the new logo! [OSnews]

A new logo means new merch! I’m launching brand new merch today, all featuring the brand new OSNews logo. We’ve got the classic T-shirt with the new OSNews logo, in sandy white and terrain grey. They’re made from sustainably-grown and processed cotton, come in a variety of sizes, and ship worldwide.

The crowdpleaser is also making its triumphant return: the OSNews coffee mug, now also with the new logo and a green-on-white two-tone design. It holds coffee and tea, of course, but feel free to use it for whatever you want. Grow a plant in it!

A newcomer is the OSNews Mousepad – a basic, no-nonsense, no-frills mousepad that does exactly what it’s supposed to do, in a classic square(ish) formfactor. It makes for a great companion to any (retro) setup, but feels particularly at home with BeOS and OS/2.

One merch item remains from our previous collection: the ever-popular Gemini shirt and longsleeve, with a retro ASCII-art OSNews logo in bright green on deep black. It’s like staring at a real classic CRT. On your chest. Don’t sit too close.

As always, every price is set so that for every item sold, roughly €8 goes to OSNews. I will add the proceeds to our fundraiser tracker, so this is yet another way to support us, together with Ko-Fi donations, SEPA direct bank transfers1, and Patreon.

  1. Name: Thom Holwerda – IBAN: SE08 8000 0820 1684 4657 8414 – BIC: SWEDSESS ↩︎

20:49

Some Thoughts On “Masters of the Universe” [Whatever]

There are a lot of bad movies in the world. There are, of course, good movies and bad movies, but there’s also a special third category of “good bad” movies. I had a feeling going into the theater to see Masters of the Universe which category it would fall into.

Despite never having actually watched any He-Man content before, I was surprisingly really excited for this movie. Not because I thought it would be absolutely amazing, but because I thought it would be fun. And boy oh boy, I was right.

Masters of the Universe is wildly entertaining, extremely colorful, and certainly not the worst way I’ve spent two hours and seven bucks (matinee shows rock). I know it’s not very good, but I still think you should go see it on the big screen if you can. Besides the film being an excuse to eat popcorn and have an Icee, what makes it worth watching?

(SPOILER WARNING MOVING FORWARD!)

For starters, I love the fact that Adam holds firm on the existence of Eternia, and never stops believing in the world he comes from. I love that he tells everyone his truth, even if it costs him his social life and dating prospects. He doesn’t hide his truth even if it makes him sound crazy, and I really like that he’s not willing to deny Eternia’s existence just to fit in or seem more normal. He knows it’s real, and that’s all that matters. He never gives up hope on finding the sword and returning to a home he knows exists and is waiting for him to come back. (I am glad he at least got to prove everything to his roommate, who definitely thought he was delusional, but finding good roommates is hard.)

I love that Teela just wants to be friends, and that’s actually completely respected and not questioned at all! He-Man is a real man and knows there is no such thing as the friendzone and that he is lucky to have Teela as his good friend and comrade in battle. And that’s enough. He took the rejection of his kiss well and moved on from it quickly instead of being a huge baby about it. And they didn’t end up together in the end! They really are just friends, and I love that for them. Not that I don’t love a good “childhood friends reunited” love story, but He-Man should focus on saving the universe or whatever, not smooching.

I love Skeletor’s goofy ass evil witch. I mean her name is literally Evil-Lyn. How excellently corny. It just one of the many ways this movie doesn’t take itself too seriously. They know He-Man is a silly concept and heavily memed franchise, and they lean into the silliness in a delightful way. Alison Brie was amazing to watch as the dark sorceress, her facial expressions really made the performance.

Speaking of Skeletor, oh my lord did I love Skeletor. I love a villain that is bad for badness sake, a villain that relishes being evil and has no tragic backstory to inspire such dastardly deeds, he just is the villain. And he loves it. Skeletor’s incredibly homoerotic comments about He-Man might have genuinely been the hardest I laughed at the movie. Yes, Skeletor, tell me more about He-Man’s giant sword and glorious thighs. I did think Skeletor’s body looked kind of goofy, like he was too shredded and looked too much like an anatomical model in a science textbook, and I wish they had kept his supremely iconic voice instead of the generic “bad guy deep voice,” but all in all I liked Skeletor.

(I also did not know until the moment the credits rolled that Jared Leto plays him, so that was unfortunate to find out. I’m trying not to let it impact my view of Skeletor’s character but dang I really wish they had cast someone else.)

As Orko says at the end, muscles don’t make the man. In this house, we LOVE an empathetic, kind, slightly ditzy He-Man. Portrayals of positive masculinity will always be a win in my book, and Masters of the Universe makes it very well known throughout the movie that brute strength and violence do not make a hero by themselves. How you use your strength and what you use it for are the real questions I wish people with power in real life would reflect on. Knowing when and how to implement your strength is the real power.

Masters of the Universe is good bad, just as I knew it would be. I thoroughly enjoyed my time watching it, and honestly the “I have the powerrrr!” scenes were pretty damn awesome. I really don’t have many complaints about the movie, as this is one of the few goofy, shut-up-and-eat-your-popcorn movies that I actually had fun with. Usually I’m a hater of movies that are just Mid-Tier Nothing Burgers, but Masters of the Universe really feels like it has a lot of heart in it, and I like it.

Have you seen Masters of the Universe yet? Did you watch He-Man when you were younger? Let me know in the comments, and have a great day!

-AMS

19:14

Link [Scripting News]

A comment to a friend who roots for the Spurs. Ok you guys won one. I think last night they wanted it more than the Knicks. The Spurs knew they were going to be discombobulated, but the Knicks probably didn't expect the atomosphere to be so unusual? I was 100 miles away and could feel how much everything had changed. Whatever happens, in KnicksLand 2026 will mark a major change in the story, forever.

Link [Scripting News]

Maybe the cure for Meta glasses is that they be required by law to emit a signal that can be picked up by an app on a phone and can start ringing loudly when you're in range of one of these monsters, and the rate picks up when they look at you. You can point your phone at them and broadcast their image to a special website where their identities are collected and shared along with their location?

19:07

Future of Ubuntu MATE [LWN.net]

Thomas Ward has published an update about the future of the Ubuntu MATE project, which did not have a 26.04 release with the other Ubuntu flavors in April:

There is a new team working on Ubuntu MATE who have stepped up to help take over flavor management. They haven't formally introduced themselves yet, but I can safely say that other developers HAVE stepped up for the future of the MATE flavor, despite its prior team lead having stepped down.

[...] Ultimately, this means that they are working to cover the missed items and gaps, and may quite possibly have a 26.10 release in October of 2026, which I believe they most likely are targeting.

This also means that bugs in the MATE environment and in packages they normally would have shipped had they have a 26.04 release are still going to get attention and fixes. So, effectively, nothing has changed. The only difference is that there was no 26.04 installer image released.

For those looking to install a MATE desktop on a "clean" install of Ubuntu 26.04, Ward suggests installing Ubuntu Server and then installing the ubuntu-mate-desktop package.

[$] Eliminating long-lived credentials with trusted publishing [LWN.net]

Trusted publishing is an authentication mechanism that relies on short-lived credentials to reduce the risk of supply-chain attacks. At the 2026 Open Source Summit North America, Mike Fiedler walked the audience through why trusted publishing exists, how it works, and made the case for its adoption. It is not a silver bullet against all attacks, but it does offer protection against theft of long-lived credentials used to publish to package registries.

18:28

Link [Scripting News]

My Claude today pulled a Hal. It was so egregious. It made a change to the software based on a question I asked. It invented a whole set of instructions from me that I never gave it. And then it broke Rule #1 -- don't tell Dave what to do -- he is the driver. It is so important because these bots will go into I Am Driver mode immediately when they think they can. Then you're running around doing errands for them based on some michegas idea it has about what you want. It's maddening. The idea that this thing can write software on its own is imho very far-fetched. I think it can generate certain types of dashboards the same way drawing in ChatGPT can generate something that looks good, sometimes very good, but you had to tell it exactly what you want, and that's where the fun starts. It was very easy to turn it off, but I didn't -- rather I put my foot down hard, and wrote in all caps, explaining what it did that broke all the rules. I don't know if I should talk to it like you talk to a dog, or what. How do you get through to it. You don't. In any case I have Claude working with me in an outline now. I see a tremendous potential there.

Link [Scripting News]

You know how job interviews for programmers include realtime problem-solving. Sometimes Claude is so dumb it could never pass one of those tests. Up till this point I would have been surprised to hear that.

He-Man and Battle Cat art! [Penny Arcade]

I loved Masters of the Universe so much that I had to do some fan art yesterday. I shared it over on my Bluesky but wanted to make sure it got posted here as well. 

17:35

16:42

GPS As a Key Distribution Platform [Schneier on Security]

This is interesting:

The U.S. military has likely been quietly broadcasting codes for its global encryption network using public GPS for nearly 20 years, turning each satellite into a hidden “numbers station,” according to Steven Murdoch…

That means every device that uses GPS has been receiving hidden government information for years, and nobody outside the military knew it until now.

[…]

Murdoch discovered that this particular sentinel was transmitted by all 31 operational satellites within a window of a few hours on May 26, 2011, potentially heralding the activation of a new operational system. He confirmed that this timeline coincided with the rollout of the military’s Over-the-Air Distribution (OTAD) and the Over-the-Air Rekeying (OTAR) by cross-referencing declassified documents, including a 2015 presentation about the dates of the operation.

“There was a perfect match between the timeline and that presentation and the change points that were automatically identified from the data,” Murdoch said. “That was the smoking gun that made me think: This is what it’s for.”

These automated systems replaced the cumbersome manual distribution of cryptographic keying material, allowing military GPS receivers around the world to be rekeyed remotely through satellite broadcasts rather than through onsite procedures.

16:07

Free Software Directory meeting on IRC: Friday, June 12, starting at 12:00 EDT (16:00 UTC) [Planet GNU]

Join the FSF and friends on Friday, June 12 from 12:00 to 15:00 EDT (16:00 to 19:00 UTC) to help improve the Free Software Directory.

Asahi Linux warns users not to upgrade to macOS 27 beta [LWN.net]

The Asahi Linux project, which brings Linux support to Apple Arm-based Macs, has warned its users not to upgrade to the macOS 27 "Golden Gate" beta.

Apple has changed how the boot picker and Startup Disk applications detect valid OS boot volumes. When using either from macOS 27, your Asahi partition will not be visible! We believe this to be a bug, and have filed a report (FB22994760).

If you have already upgraded to the beta and noticed that your Asahi partition has disappeared, do not stress. Your Asahi partition is still there, and you have not lost any data.

The Asahi Linux installer has been patched to prevent use with macOS 27 for now, but any users already bitten by the change will need to use macOS 26 to restore access to Asahi Linux.

15:42

Two Brains [I, Cringely]

For two months this column has been describing an architecture. Here’s the part I kept in the footnotes: I’ve been building it.

I owe you a confession, and then I owe you a demonstration.

The confession first. For weeks I’ve written about why the machines can’t tell truth from plausibility — why detection isn’t a strategy, why fluency isn’t fidelity, why the only honest path is to separate the saying from the knowing and import truth from somewhere you can actually check. I’ve signed each of those columns with a one-line note that I co-founded a company “built on this conviction.” That little disclosure has been doing a lot of quiet work. These columns were not the musings of a neutral observer. They were the argument for something specific — and the something is real, and it has a name. The company is 2Brains, and it’s the reason I started writing again.

So let me stop hinting and tell you what we built.

Start with the name — 2Barains — because the name is the idea. Almost every AI you’ve used does two completely different jobs with one piece of machinery: it works out what’s true, and it works out how to say it, both at once, in the same tangle of numbers — which is precisely why it can’t keep them straight. We pulled the two jobs apart and gave each one its own brain.

Picture a hospital where every question — “what’s in Room 12?” and “draft the discharge letter” alike — goes to the same person: a gorgeous writer with a shaky memory. Ask about the room and sometimes you get the right number and sometimes a confident invention. Now separate the writer from the filing cabinet. The filing cabinet doesn’t write; it only ever says “here is the record” or “I don’t have that one.” The writer doesn’t remember anything; it only dresses up whatever the cabinet hands over. The cabinet can’t be eloquent and the writer can’t make things up — because the writer has nothing of its own to make things up from.

That second half is the part people find hard to believe, so let me say it plainly. The language side of our system is a small model trained with the facts taken out. It learned grammar, rhythm, tone, how a formal letter differs from a curt one — and it learned nothing about the world. It does not know who founded Apple or what happened in 1976. It is, on purpose, factually empty. So when it writes, it can only arrange the verified facts the other side hands it. If a fact isn’t in the input, it cannot appear in the output. Fabrication isn’t discouraged. The organ that would do the fabricating was removed.

This is the thing I kept insisting on for two months, now made out of parts: within a verified body of knowledge, the system cannot hallucinate — not because we told it to behave, but because the machinery for misbehaving is gone. Outside that knowledge, it does the thing this whole series has been begging machines to do. It says: I can’t verify that. There is no third option. Grounded, or flagged. That’s the entire menu.

Now the demonstration, because you shouldn’t take any of this on my word — that would rather defeat the point.

Salesforce built a test called HERB to measure exactly one thing: how often an AI makes something up when it doesn’t know. On that test, OpenAI’s flagship GPT-4o fabricates 77 times out of 100. Salesforce’s own system — their baseline — fabricates 32 times out of 100. Ours does it 3 times out of 100. And it does that at roughly one two-hundredth the size of GPT-4o, running not in a data center but on a laptop drawing about 20 watts. Less than the bulb in your desk lamp.

Here’s the part I most want to be honest about, because honesty is the whole franchise: those 3 are not lies. They’re the cases where the question fell outside what the system had been given to verify, and it refused rather than guessed. Hand it a complete picture of a domain and that number walks toward zero. The 3% isn’t the system failing to know something. It’s the system knowing exactly where its knowing stops — which, if you’ve been reading along, is the only kind of machine I’ve ever said was worth building.

I’m not going to hand you the engineering. How we strip the facts out of a language model, how we store and find the verified ones, how we check the finished answer against its source — that’s patent-pending, and it stays in the lab. Showing you the blueprint is a different thing from showing you the building, and I’m only doing the second. But over the next two columns I’ll lay out the rest of why this matters: why a machine built this way is not just more honest but radically cheaper to run — cheap enough to embarrass the whole data-center arms race — and what it would mean to license honesty the way a certain company in Cambridge once licensed a chip design that ended up inside nearly every phone on earth without anyone noticing it was there.

For now, the reveal is enough. We built two brains because one brain, trying to do both jobs, will always eventually lie to you with a straight face. Ours doesn’t have a straight face to lie with. It has a filing cabinet, and a writer who has never read it, and a wall between them that you can inspect.

That wall is the company. Everything else is detail.

 

Robert X. Cringely is a co-founder of 2Brains, Inc., in Charlottesville, Virginia. He has written this column since 1987 — though never, until now, about his own company.

The post Two Brains first appeared on I, Cringely.






Digital Branding
Web Design Marketing

15:21

[$] BPF loop verification with scalar evolution [LWN.net]

The BPF verifier has, in the course of wrestling with the difficult problem of statically analyzing loops, grown special support for many kinds of loops over its history, but its fundamental approach to simple for loops has not changed. When it encounters a loop, it evaluates it, iteration by iteration, until reaching an exit condition — a process that can cause the verifier to mistakenly hit the limit on the number of allowed instructions where a better implementation would not. Eduard Zingerman spoke at the 2026 Linux Storage, Filesystem, Memory-Management, and BPF Summit about his in-progress work on improving the verifier's treatment of loops, especially nested loops.

15:14

Pluralistic: Naomi Kritzer's "Obstetrix" (09 Jun 2026) [Pluralistic: Daily links from Cory Doctorow]

->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None -->

Today's links

  • Naomi Kritzer's "Obstetrix": When forced birth cultists become forced obstetrics militants.
  • Hey look at this: Delights to delectate.
  • Object permanence: DD-WRT; iTunes DRM is illegal; Fingertip magnet; Sony passwords v Gawker passwords; RIAA recants on 3 strikes; Parachute wedding dress; Roald Dahl (jerk); "Level Up"; The rent's too damned high; RIAA v "Search by artist"; "Robopocalypse"; You are not a wallet; The man who created the religious right; NY x voting; NY x antitrust; Media companies fund Heritage Minister's campaign; Richard Dreyfuss x iTunes EULA; 3-way street; RIAA lawyer becomes Solicitor General; Brock Allen's wrist-slap; Ad-tech interop; Apple's manorial security; Billionaires aren't taxed, "Rabbits."
  • Upcoming appearances: Kansas City, LA, Menlo Park, Toronto, NYC, Edinburgh, South Bend.
  • Recent appearances: Where I've been.
  • Latest books: You keep readin' em, I'll keep writin' 'em.
  • Upcoming books: Like I said, I'll keep writin' 'em.
  • Colophon: All the rest.



The tordotcom cover for Naomi Kritzer's 'Obstetrix.'

Naomi Kritzer's "Obstetrix" (permalink)

Naomi Kritzer's Obstetrix is a new, tense thriller in the mode of Atwood's Handmaid's Tale and Alderman's The Power; it's a beautifully turned, claustrophobic horror novel about an obstetrician who's been kidnapped by a Christian cult obsessed with fertility:

https://us.macmillan.com/books/9781250423375/obstetrix/

Kritzer is a master of building scenarios that require her characters to express and resolve a wide variety of complex and contradictory emotions. Her breakout novel, Catfishing on CatNet is a charming and deceptively goofy story about an AI trained on the impeccable vibes in a really solid groupchat becoming sentient and demanding…cat pictures. This is the setup for a warm (but intense) novel of internet-mediated friendship and IRL mutual aid:

https://memex.craphound.com/2019/11/19/naomi-kritzers-catfishing-on-the-catnet-an-ai-caper-about-the-true-nature-of-online-friendship/

Then there's her incredibly prescient 2015 story "So Much Cooking," about people in lockdown during a pandemic. For obvious reasons, it enjoyed an revival in 2020, with Kritzer penning an excellent essay reflecting on what it means to have thought through the implications of a disaster that is now upon us:

https://reactormag.com/didnt-i-write-this-story-already-when-your-fictional-pandemic-becomes-reality/

In 2023, Kritzer published one of the most memorable YA novels I've read, Liberty's Daughter, which is set on a libertarian seastead and told from the point of view of the daughter of the cult's founder:

https://pluralistic.net/2023/11/21/podkaynes-dad-was-a-dick/#age-of-consent

Liberty's Daughter is basically what you'd get if you rewrote a Heinlein YA novel from the perspective of one of the kids, who had to live with a Heinlein-type dad (Heinlein was childless and had some of the most batshit child-rearing ideas, which he managed to make sound bizarrely plausible). There's a lot of sf that is "in dialogue" with Heinlein (including some of mine), but no one nailed RAH like Kritzer.

Then there's Obstetrix; it's got one of those admirably propulsive setups. Doctor Elizabeth Gwynn is an obstetrician who performed an abortion to save her patient's life, only to be dragged into the culture wars by North Dakota's crusading attorney general, who charged her with felony murder and offered to let her plead out if she would admit that she was wrong to do it, as an example to other OBs who might be tempted. Now, Dr Liz lives in Minneapolis, where her savings are running out and no one wants to hire an obstetrician who's done time.

Then, Dr Liz gets a cold-call from a midwifing service that wants to hire her as an on-call doc. It's a weird offer from out of the blue, but Dr Liz can't afford to pass up a chance at steady work. She finds herself in a residence that the midwives work out of, and the nice woman there offers her a cup of tea. That's when the world fades to black, as the drugs in the tea take hold.

Liz sporadically regains consciousness in a van during a multi-day drive, and already she is thinking about her escape – even as she is becoming increasingly aware of how truly terrible her situation is. When she finally arrives at the cult's remote compound, frozen and isolated, she learns that she has been kidnapped because the fertility-obsessed cult needs an OB, especially since the daughter of the cult's founder, the "pastor," is carrying a high-risk pregnancy.

All that is in the first few pages, which leaves plenty of room for an expertly spun second act in which we get Kritzer's trademark interpersonal work, where carefully chosen and smartly wrought small details flesh out a picture of the complex dynamics of life inside a "high-demand" cult, from the way that members are manipulated into policing each other's compliance to the internal processes that keep members cowed even when they're unobserved by others. It's a brilliant work of sociological speculation and the engine that drives it is a series of maneuvers and gambits whereby Dr Liz hopes to make her way to safety.

I won't spoil the end, except to say that it is exciting, satisfying, and has a sweet denouement that does real justice to the whole book. All told, this is a read-in-one-sitting thriller that does as much to illuminate the workings and dynamics of patriarchy and religion as any gender studies class. It's peak Kritzer (so far), and that's saying something.


Hey look at this (permalink)



A shelf of leatherbound history books with a gilt-stamped series title, 'The World's Famous Events.'

Object permanence (permalink)

#20yrsago HOWTO turn a $60 Linksys router into a $600 super-router https://web.archive.org/web/20060610003137/http://assets.lifehacker.com/software/router/hack-attack-turn-your-60-router-into-a-600-router-178132.php

#20yrsago Dictionary of the Vulgar Tongue: 1811 slang dictionary https://www.gutenberg.org/ebooks/5402

#20yrsago Ex-RIAA head Hilary Rosen rethinks lawsuits and DRM https://web.archive.org/web/20060609030533/https://www.p2pnet.net/story/8979

#20yrsago Norwegian ombudsman says Apple’s iTunes DRM is illegal https://web.archive.org/web/20060611194556/http://forbrukerportalen.no/Artikler/2006/1149587055.44

#20yrsago Implanting a magnet in your fingertip adds a sixth sense https://web.archive.org/web/20060613072724/https://www.wired.com/news/technology/0,71087-0.html?tw=rss.index

#20yrsago Recording industry: Search-by-artist is “too interactive” http://news.bbc.co.uk/1/hi/entertainment/5055744.stm

#20yrsago US branch of “Pirate Party” launches https://web.archive.org/web/20060613041144/http://www.pirate-party.us/

#20yrsago Pranksters give fake McDonald’s anti-global-warming presentation https://web.archive.org/web/20060614011522/http://www.gamasutra.com/php-bin/news_index.php?story=9621

#20yrsago Can. Heritage Minister’s election was funded by entertainment co’s https://web.archive.org/web/20060612224646/https://www.michaelgeist.ca/component/option,com_content/task,view/id,1289/Itemid,85/nsub,/

#20yrsago High-def DRM licenses cost $15k https://web.archive.org/web/20060612202129/https://www.theinquirer.net/?article=32273

#15yrsago Richard Dreyfuss reads the iTunes EULA https://web.archive.org/web/20110611012317/http://www.cnet.com/8301-30976_1-20068778-10348864.html

#15yrsago Top universities a ‘breeding ground’ for Tories, warn Islamic groups https://newsthump.com/2011/06/07/top-universities-a-breeding-ground-for-tories-warn-islamic-groups/

#15yrsago 3-Way Street: visualization of the uneasy dance of pedestrians, bikes and cars at a busy intersection https://web.archive.org/web/20110610123449/http://blog.ronconcocacola.com/2011/06/02/nyc-goes-three-ways.aspx

#15yrsago Copyright extremist RIAA lawyer confirmed as America’s Solicitor General https://web.archive.org/web/20110610134934/http://www.wired.com/threatlevel/2011/06/senate-confirms-verrilli/

#15yrsago Scot-free millionaire playboy’s lawyer was judge’s depute campaign treasurer https://web.archive.org/web/20110610123824/http://articles.sun-sentinel.com/2011-06-06/news/fl-levin-sentence-mayocol-b060711-20110606_1_house-arrest-dui-manslaughter-case-kenneth-watkinson

#15yrsago Bubble-in forms betray individual, traceable “handwriting” https://web.archive.org/web/20110609164727/http://www.freedom-to-tinker.com/blog/wclarkso/new-research-result-bubble-forms-not-so-anonymous

#15yrsago Inbox Influence: plugin reveals corporate money behind the emails in your inbox https://web.archive.org/web/20110816105954/https://inbox.influenceexplorer.com/

#15yrsago Macedonia erupts after young man beaten to death by special police in public square https://web.archive.org/web/20110610132108/http://www.a1.com.mk/vesti/default.aspx?VestID=139049

#15yrsago Robopocalypse: rigorous, terrifying novel about a robotic campaign to exterminate humanity https://memex.craphound.com/2011/06/07/robopocalypse-rigorous-terrifying-novel-about-a-robotic-campaign-to-exterminate-humanity/

#15yrsago Using clickfraud on Google ads to amass shares of Google https://gwei.org/index.php

#15yrsago Comparative analysis of leaked Sony and Gawker passwords https://www.troyhunt.com/brief-sony-password-analysis/

#15yrsago China’s Politburo warns Google not to be “political” https://web.archive.org/web/20110610165205/http://www.transparencyrevolution.com/2011/06/china-warns-google-not-to-be-evil/

#15yrsago Guerrilla camper re-opens shuttered Michigan public campsite https://web.archive.org/web/20110609184456/http://www.miningjournal.net/page/content.detail/id/563100/Campground-closed-in-2009-illegally-reopened.html?nav=5006

#15yrsago Record industry lobby says it no longer supports 3-strikes copyright termination laws https://torrentfreak.com/recording-industry-steps-back-from-piracy-disconnections-110606/

#15yrsago Death threats for Aussie climate scientists https://www.theguardian.com/environment/2011/jun/06/australia-climate-scientists-death-threats

#15yrsago Wedding-dress made from life-saving parachute https://www.si.edu/collections/snapshot/parachute-wedding-dress

#15yrsago Level Up: Gene Yang’s comic about destiny, games, and filial piety https://memex.craphound.com/2011/06/06/level-up-gene-yangs-comic-about-destiny-games-and-filial-piety/

#15yrago Roald Dahl: Jerk https://web.archive.org/web/20110602195454/http://thisrecording.com/today/2011/6/1/in-which-we-consider-the-macabre-unpleasantness-of-roald-dah.html

#15yrsago Rotting Gulliver’s Travels themepark in Japan https://web.archive.org/web/20110609235431/http://www.sleepycity.net/posts/40/Gullivers_Kingdom__Sea_of_Trees

#15yrsago Ticketed for being childless and eating doughnuts in a playground https://gothamist.com/food/two-women-ticketed-for-eating-doughnuts-in-a-brooklyn-playground

#15yrsago Internet Archive becomes archive of physical books, too https://blog.archive.org/2011/06/06/why-preserve-books-the-new-physical-archive-of-the-internet-archive/

#10yrsago Swedish traditional costume made from Ikea bags https://ikeahackers.net/2016/06/swedish-folk-costume-5-ikea-bags.html

#10yrsago NSA dumps docs about its Snowden response, reveals that Snowden repeatedly raised alarms about spying https://web.archive.org/web/20160604213547/https://news.vice.com/article/edward-snowden-leaks-tried-to-tell-nsa-about-surveillance-concerns-exclusive

#10yrsago John Oliver buys and forgives $15M in medical debt, illustrates horrors of America’s debt-collectors https://web.archive.org/web/20160606234823/https://consumerist.com/2016/06/06/john-oliver-buys-15m-in-medical-debt-then-forgives-it/

#10yrsago David Byrne wants you to register to vote, and wants everyone else to, too https://web.archive.org/web/20160609060810/http://davidbyrne.com/were-better-than-this-vote

#10yrsago You are not a wallet: complaining considered helpful https://www.theguardian.com/technology/2016/jun/07/its-your-duty-to-complain-thats-how-companies-improve

#10yrsago Web Sheriff’s legal scare strategy: throw everything at the wall, hope something sticks https://www.techdirt.com/2016/06/07/web-sheriff-accuses-us-breaking-basically-every-possible-law-pointing-out-that-abusing-dmca-takedowns/

#10yrsago Lin-Manuel Miranda declares war on bots https://www.nytimes.com/2016/06/07/opinion/stop-the-bots-from-killing-broadway.html

#10yrsago Uber loves competition, when it’s the one doing the competing https://www.boston.com/news/technology/2016/06/05/uber-app-urbanhail-startup-ride-prices/

#10yrsago MI5 warning: we’re gathering more than we can analyse, and will miss terrorist attacks https://theintercept.com/document/2016/06/07/preston-study/

#10yrsago Samantha Bee interviews Frank Schaeffer, who helped create the religious right https://www.youtube.com/watch?v=MhLY0JqXP-s

#10yrsago Why defense attorneys aren’t cheering Brock Allan Turner’s wrist-slap https://web.archive.org/web/20160611024154/http://mimesislaw.com/fault-lines/brock-turner-the-sort-of-defendant-who-is-spared-severe-impact/10288

#10yrsago Password hashing demystified https://www.wired.com/2016/06/hacker-lexicon-password-hashing/

#5yrsago Google and France agree on ad-tech interop https://pluralistic.net/2021/06/08/leona-helmsley-was-a-pioneer/#monkeys-paw

#5yrsago Billionaires don't pay tax https://pluralistic.net/2021/06/08/leona-helmsley-was-a-pioneer/#eat-the-rich

#5yrsago Apple's manorial security https://pluralistic.net/2021/06/08/leona-helmsley-was-a-pioneer/#manorialism

#5yrsago Rabbits: PK Dick meets Qanon https://pluralistic.net/2021/06/08/leona-helmsley-was-a-pioneer/#rabbits

#5yrsago Competition tames ISPs https://pluralistic.net/2021/06/07/fire-on-one-end-fool-on-the-other/#muni-fiber-now

#5yrsago New York to revolutionize voting https://pluralistic.net/2021/06/07/fire-on-one-end-fool-on-the-other/#sb309a

#5yrsago New York to revolutionize antitrust https://pluralistic.net/2021/06/07/fire-on-one-end-fool-on-the-other/#sb933

#5yrsago The Rent’s Too Damned High https://pluralistic.net/2021/06/06/the-rents-too-damned-high/


Upcoming appearances (permalink)

A photo of me onstage, giving a speech, pounding the podium.



A screenshot of me at my desk, doing a livecast.

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "The Reverse-Centaur's Guide to AI," a short book about being a better AI critic, Farrar, Straus and Giroux, June 2026 (https://us.macmillan.com/books/9780374621568/thereversecentaursguidetolifeafterai/)
  • "Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026

  • "The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027

  • "Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027

  • "The Memex Method," Farrar, Straus, Giroux, 2027



Colophon (permalink)

Today's top sources:

Currently writing: "The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Third draft completed. Submitted to editor.

  • "The Reverse Centaur's Guide to AI," a short book for Farrar, Straus and Giroux about being an effective AI critic. LEGAL REVIEW AND COPYEDIT COMPLETE.
  • "The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.

  • A Little Brother short story about DIY insulin PLANNING


This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.

https://creativecommons.org/licenses/by/4.0/

Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.


How to get Pluralistic:

Blog (no ads, tracking, or data-collection):

Pluralistic.net

Newsletter (no ads, tracking, or data-collection):

https://pluralistic.net/plura-list

Mastodon (no ads, tracking, or data-collection):

https://mamot.fr/@pluralistic

Bluesky (no ads, possible tracking and data-collection):

https://bsky.app/profile/doctorow.pluralistic.net

Medium (no ads, paywalled):

https://doctorow.medium.com/

Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):

https://mostlysignssomeportents.tumblr.com/tagged/pluralistic

"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla

READ CAREFULLY: By reading this, you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.

ISSN: 3066-764X

14:35

Security updates for Tuesday [LWN.net]

Security updates have been issued by AlmaLinux (bind and libyang), Debian (keystone and openssl), Fedora (mingw-objfw, objfw, sentencepiece, and tailscale), Mageia (packagekit and suricata), Oracle (bind, bind9.16, go-toolset:ol8, ImageMagick, kernel, samba, and vim), SUSE (apache-commons-lang3, apache-commons-text, apache-commons- configuration2, apache-commons-cli, apache-commons-io, apache-commons-codec, avahi, busybox, chromedriver, chromium, csync2, firewalld, frr, gleam, helm, kernel-devel, keybase-client, libmozjs-140-0, libopenvswitch-3_7-0, libsoup, memcached, mutt, openjpeg2, ovmf, perl-HTML-Parser, perl-Net-CIDR-Set, perl-Protocol-HTTP2, postgresql-jdbc, postgresql17, python-CairoSVG, python-Flask, python-pip, python-pyOpenSSL, python-python-multipart, python-Twisted, python-urllib3, python-urllib3_1, python-uv, python311, rsync, tomcat, and tree-sitter), and Ubuntu (alsa-lib, cups, inetutils, isc-kea, jpeg-xl, libnet-cidr-lite-perl, netatalk, netty, nginx, node-shell-quote, php-twig, pillow, poppler, rsync, strongswan, systemd, and transmission).

Linux App Summit 2026 (Heise) [LWN.net]

Heise is carrying a report from the Linux App Summit, held in Berlin in May.

The slightly more than a dozen talks were symbolically framed between the opening keynote by systemd creator Lennart Poettering and the closing talk by Jorge Castro, initiator of the Universal Blue project, from which the modern Linux systems Bluefin and Bazzite emerged. Both Castro and Poettering call for a fundamental rethink of how Linux operating systems are delivered but pursue different approaches.

13:56

The Subsidy Ended: What Tool-Using Agents Actually Cost [Radar]

On June 1, GitHub Copilot’s usage-based billing became active for all Copilot plans, and developers reacted quickly and loudly. A Pro plan still costs $10, but it now comes with a monthly pool of AI credits. Those credits are priced at a penny each, and they’re consumed according to the model used and the tokens processed, including input, output, and cached tokens. For a heavy agentic session running a frontier model, that makes spend feel very different from a flat subscription.

That’s the news, and it’s worth understanding, but it isn’t the important part. Nothing about the underlying cost of agentic work actually changed on June 1. The tokens were always being consumed, the loops were always running, and the tool calls were always expanding the context. What changed is that the meter became visible. A workload that had been quietly subsidized under a flat rate started showing up as an itemized bill.

Where the tokens go

To see why the bill landed so hard, it helps to compare two things that look similar and bill very differently. A chat completion is close to a single transaction. You send a prompt, the model sends an answer, and you pay roughly once for the input and once for the output. A tool-using agent doesn’t work that way at all. An agent doesn’t answer a question so much as work toward it, and it works by looping. It reasons about the task, calls a tool, reads the result, reasons again, calls another tool, and continues until it decides it’s finished.

Every pass through that loop carries a cost that’s easy to miss. In many agent harnesses, each turn carries forward a large share of the accumulated context: prior messages, tool descriptions, retrieved files, and tool results. Even when some of that context is cached, summarized, or pruned, the system is still doing metered work to preserve enough state for the next decision. The final answer you actually wanted is only a thin slice of what you paid for. The loop is the bill.

This is why agent cost doesn’t scale politely. It scales with the number of turns, and the number of turns scales with how much discovery the agent has to do, which in turn scales with how vague the request was and how much irrelevant context it’s dragging along. A clean, well-scoped task might finish in three turns, while the same task posed as an open-ended question might wander through 15, each carrying the cost of everything that came before it. Under a flat rate, that difference was invisible. Under usage-based billing, it’s the difference between a small interaction and an expensive one.

Tool design is now part of the cost model

I wrote recently about a hidden tax on Model Context Protocol servers: the way an overstuffed tool catalog quietly degrades a model’s ability to route to the right tool. Bloated descriptions, overlapping responsibilities, and vague parameters make the model’s job harder and its choices worse. That argument was about accuracy. The billing change adds a second invoice for the same bloat, and this one is denominated in dollars.

The tool catalog is often part of what gets carried through the agent’s loop. A tool described in three tight sentences and a tool described in three rambling paragraphs may both function, but the second one pays rent in the context window every time an agent has it loaded. Multiply that across a catalog of 40 tools and a workflow that runs a dozen turns, and the cost of verbose tool design stops being a rounding error. Tool design was already a correctness discipline. It’s now a cost discipline as well. The same audit that tightens routing accuracy tightens the bill.

Where prompt discipline runs out

There’s a layer of this that individual users can control, and it’s worth knowing because the savings are real and immediate. Two patterns matter most, and I’ve been handing both to the engineers on a pilot I run for a large healthcare organization. They aren’t magic tricks. They’re ways to keep the agent out of unnecessary discovery loops.

The first pattern is about input. Prompt the agent like a short requirement rather than a broad question. A request such as “look at the encounter data and tell me what you find” forces the agent into discovery mode, where it burns turns figuring out what you meant, and every one of those turns carries the full context forward. Compare that to a prompt that front-loads the specifics by naming the project and the table, naming the date field to filter on, stating the output shape you want, and calling out anything that should be excluded. A better prompt would be: “Using the curated clinical project and the silver-zone encounters table, show total encounters by month for calendar year 2025, use admission_date_time for inclusion, and return one row per month ordered chronologically.” The second prompt collapses the loop. The agent has what it needs on the first turn, so it does the work instead of interviewing you for it.

In practice, the difference isn’t just polish. The vague version forces the agent to discover the data model, infer the date semantics, choose an aggregation, and decide on a display format. The specific version turns the task into a bounded query. That difference shows up in accuracy, latency, and cost.

The second pattern is about output, and it’s the lever most people overlook. Ask for plain text or Markdown during the intermediate steps, and save rich HTML formatting for the final, confirmed deliverable. Formatted output is expensive to generate, and requirements shift. If you ask for a polished HTML report on the first pass and then change a filter, you pay full output-token freight to regenerate all that layout, often more than once. The cheaper habit is to validate the numbers in text and format only at the end.

These patterns work, and they also have a ceiling. Both of them put the entire burden of cost control on the user, and they hold only as long as every user exercises the discipline on every prompt. The day someone reverts to “tell me what you find,” the savings evaporate, and the only thing standing between the team and a surprise invoice is a budget cap that reports the overspend after it has already happened.

Cost is a governance problem, not a budgeting one

That fragility is the real lesson. A budget cap is a backstop rather than a control. It will stop a runaway, but it tells you that you overspent rather than why, and it does nothing to make the next run cheaper. Treating cost as a budgeting problem leaves you forever reacting to the meter, while treating it as an architecture problem lets you build the savings in once and stop relying on everyone’s good behavior.

That means the controls that matter belong on the platform rather than in individual prompts. By the platform I don’t mean the agent itself, the coding assistant or chat client a developer drives day-to-day, and I don’t mean the model or a router sitting beneath it. I mean the control plane that sits above the agents, the layer where an organization enforces policy, access, observability, and now cost across every agent and model its developers touch. An administrative console that gives IT visibility into who is doing what and which capabilities they can install is an early, narrow instance of it. A router that sends planning to a cheap model is one feature that belongs there. The platform is where the rules live, and the agent is a consumer of those rules rather than the place you set them. The platform should route models by task, using cheaper models for planning and reserving frontier models for work that earns the price. It should bound the loop, requiring the agent to check in after a fixed number of iterations. It should cap tool-result payloads so a careless query cannot dump a million rows into the context window. It should default intermediate work to plain text, making the cheap path the path of least resistance instead of something users have to remember.

Every one of those controls is something a user can approximate by hand and something the platform can simply guarantee. This is the same principle I keep returning to in the context of data access, where safe behavior cannot depend on the person at the keyboard remembering the rules. Prompts guide behavior. Guardrails make the cheaper and safer behavior the default. Cost governance is guardrails as control plane, with a dollar sign attached, enforced at the same layer where you already enforce who is allowed to see which row.

The pattern, not the vendor

It would be a mistake to read this as only a GitHub story. GitHub is the current example because its change is visible and recent, but usage-based billing for agentic work is the direction of travel for many AI tools. The economics under the hood are similar: Agentic workloads turn single answers into loops of model calls, tool calls, and context management. The flat-rate subsidy was always going to come under pressure once the workload shifted from autocomplete to autonomy.

The organizations that treat June 1 as a pricing event will optimize a few prompts, grumble, and move on until the next vendor changes its meter. The ones that treat it as an architecture signal will push the cost controls down into the platform, where they hold regardless of which provider is counting which token. That’s the more durable place to stand. The bill didn’t get bigger this month. It got honest, and an honest bill is the kind you can engineer against.

13:07

Three stable kernels for Tuesday [LWN.net]

Greg Kroah-Hartman has announced the release of the 7.0.12, 6.18.35, and 6.12.93 stable kernels. Each contains important fixes throughout the tree. Users are advised to upgrade.

12:49

The Big Idea: Laura Lekkos [Whatever]

The value of a good friendship cannot be overstated. But friendships aren’t always smooth sailing, they can be just as challenging as romantic relationship, and just as fulfilling. In today’s Big Idea, author Laura Lekkos takes a deep dive into the beautiful world of female friendships, the very thing that was the base for her newest novel, All the Little Ways.

LAURA LEKKOS:

As a screenwriter, I traffic in big ideas, sometimes insufferably so. The high-concept hook. The four-quadrant crowd-pleaser. The event-driven film that a studio exec can’t say no to. For every writer in Hollywood adding a space element or time travel trope to elevate an idea in the hopes of securing a sale, you will hear another bemoaning the lack of original ideas and quieter, character-driven stories.

It was in the latter headspace that I set out to write my first novel. The big idea was that…it would be small. How edgy! How daring! How subversive!

I wanted to write a novel centered around a deep, meaningful friendship. 

On earth. 

No body swapping. No murders. No vampires in sight.

I have often been struck by the layered quality and impact of my female friendships. The women in my world have inspired me, filled my cup, guided me, and in some instances, quite literally changed the trajectory of my life. Romance often steals the spotlight, for obvious reasons, but the enduring effect of a platonic bond can be equally powerful.

This is the kind of relationship that the main characters, Victoria and Liz, find in each other. As I outlined their story, I worked backwards and found that the beats weren’t dissimilar from a rom com. In order to end up together, in a matter of speaking, they would need a meet cute. Then, a first date gone awry, a second chance, a coming together, a shocking revelation, an estrangement and lastly, a reconciliation. 

While their characters began to find form on the page, I thought about all the friendship moments – both the small and the milestone – that have defined my life. Several years before I decided to take a stab at writing a book – a lifelong dream, given my early and persistent love of reading – I realized another one: becoming a mother. It was everything I imagined and nothing like I expected. It was heady, challenging, invigorating, mind-bending and often, surreal.

My journey was bathed in luck for many reasons. I had close friends who had taken on the mantle of motherhood in the years before me who dished out advice and hand-me-downs. I had friends who were pregnant at the same time who I traded notes with. We breathlessly spoke of our hopes and expectations; the group chat was full of jokes, memes, and recommendations. I had a loving, supportive husband and parents who were overjoyed, nearly to the point of fainting, about becoming grandparents. I have always been close with my mom and as I anticipated this great leap into the unknown, I looked to her as an example in how to mother.

But what if a woman was expecting a child without such a scaffolding? What if she didn’t have a village, a support system, a mom of her own to turn to, or even a friend to confide in and lean on? All the uncertainty of impending motherhood would be exponentially multiplied. She would be adrift and in need of the kind of female connection I have been fortunate to enjoy and have always held so dear.

Both the cast of characters and the story itself had been rattling around in my brain for some time before I put pen to page and while it unfurled without too much difficulty, it was the end of writing that gave me pause. I worried that the conceit wasn’t big enough and was concerned whether the marketplace would have an appetite for my book.  

I toyed with adding more mystery, considered a pirate’s trove of secrets to complicate things, and even wrote in a nefarious sublot before re-centering myself. I deleted the storyline. I stuck with my original vision of a character-driven narrative. I remembered early advice I had received about not trying to write to a marketplace with an ever-changing goalpost but rather, with passion and conviction about a story that spoke to me. Sound wisdom for screenwriters, novelists, or any creatives.

All the Little Ways is an ode to female friendship. It shines a light on the ways we care for each other and show our love, the declarations that are often found not in a grand gesture or a splashy movie moment, but in the little kindnesses that become woven into the fabric of our lives. 

I set out to write a book about a small idea, but along the way, I discovered that it was actually pretty substantial. Because what’s bigger than the transformative power of love?


All The Little Ways: Amazon|Barnes & Noble|Bookshop

Author’s socials: Website|Instagram|TikTok

12:35

CodeSOD: Driven Development [The Daily WTF]

We should always be wary of "(.+)-driven development". Things like test-driven development, or domain-driven development are fine, but they're also frequently approached from a perspective of dogma, which creates its own terrible outcomes.

But let's talk about domain-driven development. Without getting too bogged down into the details of the approach, the idea is pretty straightforward: describe you domain model without reference to any lower-level concerns, so you can effectively write your domain logic in an abstract language tuned to your specific needs. In other words, it's just a pretty good practice. DDD offers tools and techniques for doing it, and as stated, can be adopted as a point of dogma instead of technique.

Julien joined a team which bragged about their use of DDD. Everything they did followed DDD best practices, they said. The fact that they piled up all sorts of related buzzwords when talking about it should have been a red flag.

Here's one of their "domain" classes:

namespace Acme\Documents\Domain;

interface CakeSessionRepositoryInterface
{
   public function isLoggedIn(string $cookieId);
}

In "domain" patterns, a "repository" interacts with domain objects in your data store. Things it shouldn't do:

  • perform an authentication check
  • interact with cookies
  • care about session information
  • be tightly coupled with your underlying web framework (CakePHP, in this case)

Excluding the curly-brackets, every line in this short snippet is wrong, which is impressive.

It looks like their domain shouldn't drink and drive.

[Advertisement] Keep all your packages and Docker containers in one place, scan for vulnerabilities, and control who can access different feeds. ProGet installs in minutes and has a powerful free version with a lot of great features that you can upgrade when ready.Learn more.

11:21

Mike Gabriel: Voxit 1.0 has been released [Planet Debian]

Official announcement

European Voxit community strengthens digital sovereignty: shared codebase completed.

Read the official announcement at:
https://www.voxit.org/european-voxit-community-strengthens-digital-sover...

The Voxit community and platform development

The Voxit participation platform is originally based on the open source Polis platform developed by The Computational Democracy Project in the United States, but since its establishment in autumn 2025, the European Voxit community has been developing an independent solution, adapted to European needs.

The aim is to create an open source, interoperable and scalable participation infrastructure suited to Europe’s regulatory environment and aligned with democratic values. Through this development work, Voxit is becoming a clearly distinct fork of the original Polis platform – allowing Europe to develop participatory infrastructure at its own pace and according to its own governance needs, while the original Polis project continues to break new ground. This enables Europe to build its own open and trustworthy digital democracy tools, rooted in public governance and European democratic traditions.

Voxit 1.0 source code is now available

The source code for version 1.0 of the European community edition of the Voxit platform has now been published and is openly maintained on GitLab.com at: https://gitlab.com/voxit/voxit#

10:49

None of it is important (and all of it is) [Seth's Blog]

Steinbeck points out that the stars shine in the sky, regardless of the drama here on Earth.

Perspective fools us into believing that our point of view is primary, but it’s not difficult to imagine a more distant (or closer) one that would change everything.

The service at table 7 might not matter much to the waiter, but it matters a great deal to the elderly couple celebrating a positive medical diagnosis. The greeting you offer to a stranger might seem trivial to you, but it could change the arc of that stranger’s day. And the drama that consumes us in this moment might be forgotten in just a few days…

“Important” always requires a modifier. Important to whom? Compared to what? In what time frame?

It’s all important. And none of it is.

10:35

Otto Kekäläinen: SpacemiT K3 is a compelling RISC-V AI CPU, but difficult to buy [Planet Debian]

Featured image of post SpacemiT K3 is a compelling RISC-V AI CPU, but difficult to buy

The RISC-V CPU architecture has been gaining a lot of popularity since it launched in 2014, and now that the industry is standardizing on the RVA23 level that includes vector support as a mandatory extension, we are likely to see a lot more edge- and IoT devices with the ability to run local LLMs at reasonable speed, and most importantly at very compelling prices.

SpacemiT is a Chinese RISC-V CPU manufacturer that launched on May 11th, 2026, their long-anticipated next-gen RISC-V AI chip K3. It is among the earliest RISC-V CPUs that adhere to the RVA23 standard and performance-wise it is quite capable, providing 130 KDMIPS general computing power, 60 TOPS on INT4 which translates to about 15 tokens per second when running a 30 billion parameter large language model.

The aspect that really makes it stand out is:

  • the RISC-V CPU architecture is open source,
  • the price point is within reach of home and small business users and
  • the overall feature set makes it an ideal platform to build local and offline AI systems.

SpacemiT also develops their own Debian-based Linux distribution Bianbu OS, and seems to have collaboration going on with the wider community. Their community site seems active, and they also have a dedicated X account @spacemit_riscv and Reddit account r/spacemit_riscv posting relevant progress info on Linux kernel upstreaming activities. The X account is also responsive, as evidenced by its replies to my questions.

Canonical lists the SpacemiT K3 pico-ITX and K3 CoM260 Kit on its official Ubuntu for RISC-V partner-built hardware page, which strengthens the perception that upstream Linux support is being taken seriously. The SpacemiT folks also gave an interesting talk at the 2026 Ubuntu Summit that includes a peek into their roadmap with future K3, K7 and K9 models.

For technical details, see SpacemiT’s K3 pico-ITX documentation, the Jetson Orin Nano-compatible K3 CoM260 board documentation and documentation of the K3 processor itself.

The SpacemiT K3 pico-ITX board and the K3 CoM260 board side-by-side (not to scale)

Comparing the resellers

SpacemiT does not sell anything directly to consumers. Instead you need to buy a board that includes the K3 chip from an integrator. Currently the main resellers are:

All of the above are Chinese companies that ship to customers both inside and outside China. DeepComputing stands out as the only one that actually has done real integration and ships the K3 on a custom board, while the others simply resell the SpacemiT-produced K3 pico-ITX and K3 CoM260 Kit.

Milk-V

Milk-V is a RISC-V specialized integrator, as the name already implies. They sell the K3 under the name Jupiter2. Of all the K3 pico-ITX reseller product pages, the Jupiter2 presentation is the nicest and most detailed. Unfortunately their order page at arace.tech only states that it is a “pre-order” with no information about shipping schedule, taxes, or other details like what SSD is included (if any). Based on the pictures it does ship with a Milk-V branded case. The 32 GB RAM lists at 504 EUR, which is a very reasonable price. The @MilkV_Official account on X recently promoted the K3.

Documentation and support

As of this writing, the Milk-V Jupiter2 documentation site is just a stub and has no actual content, and only two links to the SpacemiT K3 documentation site. For support there is a web forum with a dedicated Jupiter2 section. There is also a Matrix space, but unlike their other products, there is no dedicated Jupiter (neither v1 nor v2) channel.

Community size and open source involvement

At least one prior Milk-V product was certified by Canonical, which indicates there is some collaboration in progress. Canonical also lists the Milk-V Titan on its official Ubuntu for RISC-V partner-built hardware page.

Sipeed

The Sipeed K3 announcement is well written (in English) with all the relevant details and links to additional PDF manuals. However, their main page at sipeed.com says nothing about the K3, so one must know the subpage URL to access it. They offer both the K3 CoM260 kit compatible with Jetson Orin Nano carrier boards, and the stand-alone K3 pico-ITX-sized motherboard. The CoM260 kit is only 10 USD cheaper than the full pico-ITX motherboard, so choosing the latter is a no-brainer if starting from scratch. The pico-ITX model with 32 GB DDR5 RAM sells for 639 USD. The product page does not mention anything about hard disk size, so you don’t really know exactly what you will be getting if placing an order. There is no indication about case, Wi-Fi antennas or power supply either, so most likely they are not included.

Their store.sipeed.com website does not work at all, and their Taobao and AliExpress stores are not public and only accessible to registered users. The order page also says nothing about shipping time, delivery time, or taxes. The X account @SipeedIO is active and recently posted pictures of shipments in progress.

Documentation and support

The main documentation wiki does not yet have any K3 content at the time of writing. There is a Discord channel for general RISC-V discussion, and their MaixHub also has a discussion board, but I didn’t find anything K3-specific.

Community size and open source involvement

Sipeed has had at least one of their previous devices certified by Canonical, which indicates they are active in the community.

Note that the other RISC-V company SiFive that also has had hardware certified and officially supported by Canonical is a different company, despite the very similar name.

Banana Pi

Banana Pi announced that they offer both the K3 CoM260 kit and the K3 pico-ITX motherboard version. Their product page for the K3 confusingly shows a MediaTek product in the page banner rather than the SpacemiT K3. Based on the product description and the fact they renamed the product as BPI-SM10, it seems to ship with some carrier board. The product pictures look identical to the SpacemiT documentation and there is no picture of the carrier board, and details are very sparse. The pico-ITX version with 8 GB RAM and 128 GB SSD sells for 293 USD and the CoM260 developer kit with the same specs sells for 287 USD and the 32 GB RAM with 128 GB SSD model sells for 595 USD. The shop page shows only five orders so far and items are currently out of stock. As there was no 32 GB RAM version of the pico-ITX available at all, this isn’t an option for me as I want to run 30B parameter models that need the larger memory version.

Of all of these resellers, the Banana Pi website seems the most outdated. It does not have a search feature, it is not mobile-friendly, pictures can’t be pinched to zoom in and so forth. Product names are also almost all identical, and as the product listings only show the beginning of the product name, figuring out what product is what requires extra effort that just makes the online purchase experience plain bad.

Documentation and support

I was only able to find the documentation page for the CoM260 kit, but none for the pico-ITX version. For support there is a forum, but the category list does not show any section for K3, and the forum search prohibits using the search term “k3” as too short.

Community size and open source involvement

Banana Pi has a long history in the ARM single-board computer market, but their presence in the RISC-V ecosystem is still growing. Their X account @sinovoip has posted only once about the K3 and otherwise promotes their ARM boards. However, their community culture page does express a commitment to open hardware in general, but there is no visible K3-specific community activity.

Firefly

Firefly’s K3 product page is comprehensive. Based on the details, they do not offer the K3 pico-ITX variant at all, but only the K3 CoM260 board inside the AIBOX-K3 Firefly RISC-V Edge Mini PC product. This is a feature-complete offering with a Jetson Orin Nano carrier board and case. The AIBOX-K3 with 32 GB RAM and 128 GB SSD in a case sells for 689 USD in their own Firefly.store. Unfortunately it only has HDMI and there is no USB-C with DisplayPort support, which is a deal-breaker for me personally.

Interestingly, Firefly also offers rack-mounted servers with K3 as the CPU.

Documentation and support

The wiki link on the product page is broken. The Firefly wiki does have a section for the AIBOX-K3, but it too has a broken link. It seems that as of the time of writing, there is no wiki section for this product yet.

For support there is a web forum, which does have at least one K3 thread covering guides such as Hermes Agent installation, though broader K3-specific sections are still sparse.

Community size and open source involvement

Firefly’s X account @TeeFirefly has had no posts since 2024, and their GitLab/T-Firefly shows mostly 2024 activity, with only one repository updated in 2025 and nothing in 2026. Historically they have built a moderate community around their ARM-based Rockchip boards, with active forums and wiki contributions for those product lines. Their RISC-V K3 offerings are newer, and likely need a lot more polish to be attractive products overall.

DeepComputing

Last, but certainly not least, is the laptop manufacturer DeepComputing that offers a Framework laptop compatible motherboard with the SpacemiT K3 chip. They also sell the plain motherboard, or with the Cooler Master case, which allows one to easily connect it to an external monitor and keyboard and use it as a desktop computer. The plain board with 32 GB RAM and no SSD sells for about 882 EUR. Shipping of the first batch is expected to start by end of June 2026. Their X account @DeepComputingio promotes this DC-ROMA RISC-V Mainboard III as their flagship product, so they seem to put a lot of effort into it.

The overall product design and packaging seems good. Of all the K3 resellers and integrators that I was able to find, DeepComputing is the only one that actually designs their own boards with the K3 processor, while all the other vendors above are simply reselling the vanilla K3 boards with or without a case.

After reviewing all these options I decided to buy the DC-ROMA RISC-V Mainboard III for Framework Laptop 13 with 32 GB RAM, 1 TB SSD and the Cooler Master case, totalling about 1100 EUR.

Documentation and support

DeepComputing maintains product information for their RISC-V hardware at github.com/DC-DeepComputing/Framework, with documentation of the newest Mainboard III (FML13V05) still being finalized ahead of the first batch shipment. They provide community support through Discord and web forum, although the latter has very little activity.

Community size and open source involvement

DeepComputing has established itself as a pioneer in RISC-V laptops, beginning with the DC-ROMA. I have seen their stand at FOSDEM, which shows they are genuinely active in the open source community. Canonical lists DeepComputing’s first mainboard / FML13V01 on its official Ubuntu for RISC-V partner-built hardware page, and it seems likely that they will continue to collaborate with Canonical with the new model once it ships. While the underlying Linux enablement depends on SpacemiT’s upstream efforts, DeepComputing’s involvement helps bridge the gap between reference hardware and consumer-ready products.

DeepComputing K3 board in the Cooler Master case

Conclusion

After weighing all the options, I ended up placing an order with DeepComputing for their custom K3 board with the Cooler Master case. Despite the premium price, the active community support and the properly documented promise of a complete, working system made it easy to place an order with confidence.

The SpacemiT K3 is poised to be one of the most significant RISC-V chips for local AI workloads, thanks to its RVA23 compliance and high tokens per second potential. Yet the buying experience in mid-2026 remains fragmented and incomplete. Hopefully this is just because the product is new, and they will get the purchase experience polished soon.

What struck me most during this process was how poor the customer experience is across nearly all of these vendor websites: broken links, missing search functions, outdated product banners, pages that show the wrong product entirely, and no information about shipping times, stock levels, taxes, and so on. One wonders why these companies don’t fully invest in their web presence.

Personally I would assume they likely have enough customers already, primarily through domestic channels like Taobao and JD.com, that they do not feel any pressure to improve their international-facing sites. However, I did also review what was offered on Taobao, and the product details were very incomplete there too. Taobao, however, has a built-in live chat with almost all sellers, which can be used to ask questions and thus compensate for missing product details.

I don’t fully understand why the sales process seems unpolished. The websites feel almost like an afterthought – a checkbox to claim global reach while the real business apparently happens elsewhere via closed platforms or via inaccessible reseller channels. It is a frustrating reminder that in the RISC-V hardware world, the technology may be open and global, but the purchase experience is less so.

09:00

New In The Sheets by Kellin Sproul [Oh Joy Sex Toy]

New In The Sheets by Kellin Sproul

Kellin Sproul is back this week with a lovely autobio comic, sharing with us their first explorative steps into the world of sex and relationships. If you liked todays comic, check out Kellin’s first comic for us, Permission to Dance! Portfolio Instagram HOT NEWS ~~~ IT’s OUR PLEDGE DRIVE MONTH! Our most important month for […]

05:07

Rotation revisited: Shuffling more than three blocks, and other small notes [The Old New Thing]

A few small notes on rotation before you get sick of it. (Too late!)

Reducing the number of rotations in the discontiguous swap problem from three to two also shows how the solution can be generalized to shuffling an arbitrary number of variable-sized blocks: Given k blocks, of total size n, you can shuffle them arbitrarily in at most kn swaps in constant space: Take the block that goes first and rotate it to the front, which takes n swaps. Then recurse on what’s left.

You can reduce the number of swaps by comparing the sizes of the block that goes first and the block that goes last and choose to swap the larger block to the corresponding extreme.

I guess you could use this for sorting, but it’s probably enough of a hassle that you’ll just take the penalty of allocating a second block of memory rather than trying to be clever and doing it in-place.

In online discussion of this article, I saw a number of people say, “You can do this with the XOR trick,” but I’m not sure what XOR trick they are referring to. If they are talking about using XOR to swap two integer variables without introducing a third variable, that’s a cute trick I don’t see how it helps with moving variable-sized blocks around. It also doesn’t help with swapping non-integers, since it’s not clear how your XOR two strings or two Widgets.

Another note is that my unit of accounting was the “swap”, but really I should be counting “assignments” because the cycle decomposition algorithm doesn’t use swaps. For the purpose of accounting, I’ve been counting a single assignment as half a swap, though depending on how expensive the move constructor is, a single assignment/construction might only cost a third of a swap.

Finally, a clarification on my description of the solution as “constant space without allocation”: Clearly any algorithm requires some space: space for the parameters, return address, any registers used by the code, and any local variables and temporaries. As long as the number and size of these things is bounded by a constant, this is considered a “constant space” algorithm. Note that the size of an element is not known to the generalized algorithm, but once you implement the algorithm for a concrete element type, the size becomes a constant.

My description of this as “without allocation” is a shorthand for “without requiring dynamic memory allocation (because the amount of memory needed is known at compile time).”

I have a soft spot for algorithms that run in constant space (where the constant is reasonably small) because they remove the need to worry about how to recover if there is a memory allocation failure.

The post Rotation revisited: Shuffling more than three blocks, and other small notes appeared first on The Old New Thing.

01:14

Monday, 08 June

22:56

Page 22 [Flipside]

Page 22 is done.

Link [Scripting News]

Sometimes you write a post and when you're editing it you realize you no longer support what you wrote. This is one of those times.

The Return? [Looking For Group]

After giving it much thought, amid numerous discussions with the old man, we decided we didn’t want to just do re-prints of the old material, though we’re cooking up something fun for the 20th anniversary of LFG. Rather, after spending
Read More

The post The Return? appeared first on Looking For Group.

GentleOS is a love letter to classic operating systems with a lovely retro GUI [OSnews]

In today’s climate, I needed this: GentleOS, an operating system targeting both 386 (GentleOS/32) and even processors as old as the 80186 (GentleOS/16), with a lovely retro graphical user interface, usable on bare metal, and, of course, open source.

Its goal is to provide a simple platform for tinkering with retro hardware and running graphical interactive apps on bare metal.

At minimum, it only requires an i386 CPU, 4MB of RAM, and a VGA display capable of 640x480x16 mode.

By design it’s entirely monolithic, mostly configured at compile time, and only supports standard PC devices: VGA/SVGA, keyboard, PS/2 mouse, serial mouse, PC speaker. The only future plans are bugfixes, optimizations, and adding more apps.

GentleOS/32 has a pure 16-bit spin-off called GentleOS/16, which targets devices as old as 80186.

↫ GentleOS GitHub page

While it can be run on real hardware, you can also run it in Qemu to make it easier to test and play around with. It looks great, and the stated goal of just focusing on maintenance and possibly additional applications is music to my heart. With everything that’s going on in technology today, this is an ice-cold glass of tonic in a scorching, data center-infested desert.

21:21

Back at the coal face [Charlie's Diary]

I must remember that now I'm over 60, doing more than one SF convention in a month is probably more than my stamina can cope with. (Which is going to make this November really interesting as I'm about to say yes to two literary festivals/SF conventions in Spain, a week apart, in Barcelona and Madrid: more on this when it's confirmed).

Anyway, now I'm over the Cymera SF Festival here in Edinburgh I'm getting my teeth into an edit letter. An edit letter is basically exactly what it sounds like: your editor (or in this case my literary agent, who just happens to also be an editor) goes over your manuscript with a fine-toothed comb and calls you on all your bullshit that needs fixing before it goes in front of anyone else. In this case, before it goes out to publishers (it's an edit letter from an agent): if from a publisher's editor, then before it can be released for production.

I'm not going to discuss the contents of this letter with you, other than to note that you will get to read the results in a year or so: but now I need to disappear for a month or two and slave over a hot manuscript because my agent unerringly identified a weak spot and now I feel compelled to fiddle with it until it's a better book.

Meanwhile: at the end of the month I'm off to Berlin for Petropol Con, the 2026 Eurocon. And then a summer vacation interrailing around bits of the EU, because it's summer and my eyeballs are working again.

Apple demos macOS 27, iOS 27; EU spared Apple’s Google-powered “AI” slop features [OSnews]

Apple’s developer conference started today, and as is tradition, this means it also announced coming updates to its operating systems lineup. macOS is probably one of the two major ones OSNews readers are interested in, so let’s start there:

Much like Mac OS X Snow Leopard in 2009, Apple said it focused on improving macOS’s performance and dozens of underlying technologies this year.

macOS Golden Gate has some Liquid Glass design changes. For example, apps now have a unified toolbar at the top, and the sidebar now expands to the edge of the window.

A new slider on macOS 27 lets you customize the opacity of Liquid Glass.

↫ Joe Rossignol at MacRumors

Effectively, a ton of “Liquid Glass” features touted only a year ago are being changed and fixed, which should make using Liquid Glass less of a frustrating affair. Of course, there’s a whole slew of new “AI” stuff built entirely on top of Google’s Gemini, but luckily for us Europeans, we won’t be getting those features because EU privacy and consumer protection regulations are too strict. Apple, one of the world’s most valuable companies, seemingly cannot create “AI” features that comply with some basic consumer protection legislation.

As for the other major platform, that’s iOS of course.

At WWDC 2026 in Cupertino, Apple announced iOS 27, the next mobile operating system for compatible iPhones. The update focuses on tweaking and improving last year’s iOS 26, particularly in areas like app launch time, Liquid Glass design, and more. It does not offer a lot of major new features or upgrades, as Apple focused on polishing the experience. However, there are some new upgrades, such as reworked parental controls, new Siri AI, better search, and performance improvements.

↫ Taras Buria at Neowin

These new versions, as well as those of Apple’s other operating systems, will be available later this year.

20:42

Him-Person [Penny Arcade]

I saw He-Man shit at other kids' houses, but like a lot of the eighties it simply wasn't allowed in my house. Even The Smurfs were considered a monstrous affront - not only the sorcerer Gargamel, but the "demonic" Smurfs used magic as well! My mother had a book called Turmoil In The Toybox which she used as a kind cultural baleen to winnow the (sacred) wheat from the (profane) chaff, because sometimes you gotta look really really hard at toys in order to figure out why they're bad and that's why it's somebody's full-time job. You might think My Little Pony is about horse dolls, but what these wanton mares actually do is seize daughters nationwide and corrupt them into hellbound sluts.

20:35

19:56

Gabe's Masters of the Universe Review [Penny Arcade]

I saw Masters of the Universe over the weekend and wanted to give my review as a long time fan of the cartoon and the toys. 

 

19:00

Xfce ported to Redox OS [OSnews]

Redox progressed another month, and that means a ton of improvements and new features to talk about. The biggest news this past month is that Xfce has been ported to Redox, which offers a better X11 experience than MATE currently does. There’s still some bugs but apparently is works quite well. The porting process for the COSMIC desktop environment also progressed, with COSMIC’s new Monitor application making its way to Redox.

As part of Google Summer of Code, the EEVDF scheduler has been implemented in Redox, delivering better, more stable scheduling and overall system performance improvements. Also as part of GSoC inode caching has been implemented for RedoxFS, which improves file system performance. Of course, there’s a lot more here too, including the usual long list of kernel fixes, relibc improvements, and more.

18:21

Urgent: Plan to increase maritime speed limits [Richard Stallman's Political Notes]

US citizens: Stop the wrecker's plan to increase the maritime speed limits that protect Atlantic right whales from extinction.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Urgent: Keep public fund away from private schools [Richard Stallman's Political Notes]

US citizens: call on your congresscritter to keep public funds from being diverted to private schools.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

US citizens: Join with this campaign to address this issue.

To phone your congresscritter about this, the main switchboard is +1-202-224-3121.

Please spread the word.

Urgent: Preserve LIHEAP funds [Richard Stallman's Political Notes]

US citizens: call on your congresscritter and senators to preserve LIHEAP funds to help poor people pay for heating and cooling.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

US citizens: Join with this campaign to address this issue.

To phone your congresscritter about this, the main switchboard is +1-202-224-3121.

Please spread the word.

Urgent: Save the World Cup Act [Richard Stallman's Political Notes]

US citizens: call on your congresscritter and senators to pass the Save the World Cup Act, which would protect World Cup soccer games from the deportation thugs.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Here is the message I sent.

Normally I would not write to you about sports activities, but this is about protecting the public.

Soccer is popular across most of the world, more than in the US. So soccer matches in the US will be ideal bait to catch and persecute anyone that grew up elsewhere. If deportation thugs can haunt World Cup games, they will surely deport refugees waiting for asylum hearings, residents with visas, even naturalized citizens, not just unauthorized visitors.

Please support efforts to protect the public from them. Don´t let them put knock-out drops in the world´s cup!

US citizens: Join with this campaign to address this issue.

To phone your congresscritter about this, the main switchboard is +1-202-224-3121.

Please spread the word.

Urgent: Workers at Amazon calling 911 in an emergency [Richard Stallman's Political Notes]

US citizens: call on Amazon's VP of Workplace Safety to tell workers directly that they are allowed to call 911 in an emergency.

The recommended letter text encouraged telling workers that specifically using some cr...app, which is surely nonfree, so I deleted that part.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

Urgent: Taxing Buybacks from Big Oil Windfalls Act [Richard Stallman's Political Notes]

US citizens: call on your senators to pass the Taxing Buybacks from Big Oil Windfalls Act.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

US citizens: Join with this campaign to address this issue.

To phone your congresscritter about this, the main switchboard is +1-202-224-3121.

Please spread the word.

Urgent: Billionaires are shaping primaries [Richard Stallman's Political Notes]

US citizens: Billionaires are shaping primaries — call on your congresscritter and senators to reform the funding system.

See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

US citizens: Join with this campaign to address this issue.

To phone your congresscritter about this, the main switchboard is +1-202-224-3121.

Please spread the word.

Urgent: Investigate Supreme Court ethics [Richard Stallman's Political Notes]

US citizens: call on Congress to investigate Supreme Court ethics.

US citizens: Join with this campaign to address this issue.

To phone your congresscritter about this, the main switchboard is +1-202-224-3121.

Please spread the word.

Urgent: Support universal medical system [Richard Stallman's Political Notes]

US citizens: call on Congress to support a universal medical system ("Medicare for All").

US citizens: Join with this campaign to address this issue.

To phone your congresscritter about this, the main switchboard is +1-202-224-3121.

Please spread the word.

Urgent: Block NSA from warrantless spying [Richard Stallman's Political Notes]

US citizens: call on Congress to block the NSA from warrantless spying on Americans.

US citizens: Join with this campaign to address this issue.

To phone your congresscritter about this, the main switchboard is +1-202-224-3121.

Please spread the word.

18:14

Critical Zcash Vulnerability Found and Fixed [Schneier on Security]

If you’re a user—owner?—of this cryptocurrency, this is important:

On May 29, the security researcher Taylor Hornby found a critical vulnerability in Zcash Orchard privacy pool using Claude Opus 4.8. The Zcash team hired Hornby specifically to look for this kind of issue. He found one fast enough to be embarrassing.

The Orchard pool is the newest and most advanced shielded transaction system in the cryptocurrency Zcash. Introduced in 2022, it allows users to send and receive ZEC while keeping transaction details private. It uses zero-knowledge proofs to validate transactions without revealing amounts or participants. The bug: a specific check that was supposed to validate transaction inputs wasn’t actually enforcing the rules it appeared to enforce. An attacker could have exploited the flaw to feed false inputs into that check and generate ZEC from nothing, with the zero-knowledge proof system blessing the fraudulent transaction as valid.

It’s fixed; that’s the good news. The bad news is that there’s no way of knowing if anyone exploited the vulnerability to steal money. And this fragility is the fundamental problem that makes blockchain such a bad idea.

17:42

Long-Running Agents [Radar]

The following article originally appeared on Addy Osmani’s blog and is being reposted here with the author’s permission.

A long-running AI agent can keep making progress over hours, days, or weeks. It can do this across many context windows and sandboxes, recover from failure, leave structured artifacts behind, and resume where it left off.

For two years the dominant image of an “AI agent” has been a chat window with a clever loop in it. You type a goal; the agent calls some tools; you watch tokens stream by; you stop watching when the work runs out of patience or the context window fills up. That paradigm got us a long way, but it has a ceiling. The model forgets. It declares “task complete” when it isn’t. It reintroduces a bug it fixed nine turns ago. The whole thing is structured around a single sitting.

Long-running AI agents

Long-running agents are what comes next. The idea is easy to state: an agent that keeps making forward progress on a goal across many sessions and many sandboxes, possibly many days or weeks, while leaving the workspace clean enough that the next session can pick up where the last one left off. The engineering is harder. You have to solve for persistence, recovery, and verification in a way that doesn’t just paper over the cracks. You have to build a state layer that lives outside the model’s context window, and you have to design the handoff between sessions so the agent doesn’t lose its mind when it wakes up and finds itself in a different sandbox with a different context window.

This post is my attempt to lay out what’s changed, who’s pushing on it, and how an engineer can use long-running agents today without writing the whole thing from scratch.

What “long-running” actually means

“Long-running” used to mean at least three different things in practice, and it helps to keep them separate.

Long-horizon reasoning. The agent has to plan and execute over many dependent steps. This is mostly a model-quality story: coherence, planning, the ability to recover from a wrong turn 10 steps ago. METR has been tracking this with their time horizon metric, which estimates how long a task a frontier model can complete with 50% reliability. The headline finding is that the metric has been doubling roughly every seven months since 2019, and their TH1.1 update earlier this year doubled the count of eight-hour-plus tasks in the eval set. If that curve holds, frontier agents complete tasks at the day scale by 2028 and the year scale by 2034.

Long-running execution. The agent’s process runs for hours or days. Maybe it’s a coding job, maybe it’s a research sweep, maybe it’s a 24-7 monitoring service. The model might be invoked thousands of times across the run. This is mostly a harness story, and it’s the one this post is mostly about.

Persistent agency. The agent has an identity that outlives any single task. It accumulates memory, learns user preferences, and is always available. This is the Memory Bank flavor of long-running.

In practice the three blur together. A real production agent does long-horizon reasoning inside a long-running execution backed by persistent agency. But the engineering problems are different in each, and so are the products that solve them.

Why this matters

There are two reasons I believe this work matters a lot right now.

The first is a phase change in what’s economically feasible to delegate. An agent that runs for 10 minutes can answer a question, summarize a doc, fix a small bug. An agent that runs for 10 hours can own an entire feature, finish a migration that was on the backlog for six quarters, or do the kind of overnight research sweep that used to require a junior analyst. One of Anthropic’s Claude Sonnet announcements put concrete numbers on this last fall: 30+ hours of autonomous coding in internal tests, including one run that produced an 11,000-line Slack-style app. That’s already past the threshold where the answer to “Should I delegate this?” is no longer obvious.

The second is that persistence changes what the agent is. A stateless agent answers your question and disappears. A long-running one accumulates context: which competitor moved which way last week, which test flaked twice on Tuesday, what you usually mean by “the dashboard.” Anthropic’s Project Vend was the most public early demonstration of this. They had a Claude instance run an actual office vending business for a month, managing inventory, setting prices, talking to suppliers. It failed in informative ways, and the second phase ran much better, but the point wasn’t profitability. The point was watching what kinds of weird coherence problems show up when an agent has to maintain identity across weeks instead of turns.

Those are the same problems every team building production agents now hits.

The three walls every long-running agent hits

Three walls show up in basically every write-up I’ve read this year.

Finite context. Even a 1M-token window fills. And context rot, the steady degradation of model performance as the window gets full, kicks in well before the hard limit. A 24-hour run is not going to fit in any context window the field has on its roadmap. Something has to give.

No persistent state. A new session starts blank. Anthropic’s framing in their scientific computing post is the cleanest version I’ve seen: “Imagine a software project staffed by engineers working in shifts, where each new engineer arrives with no memory of what happened on the previous shift.” Without an explicit persistence story, every shift change is a productivity disaster.

No self-verification. Models reliably skew positive when they grade their own work. Asked “Are you done?” they answer “yes” more often than they should. Without a separate signal that the work meets a bar, you get the agent that ships at 30% complete with full confidence.

Long-running agent designs are mostly answers to these three problems. The major labs have converged on similar shapes of answer, but with very different surface area.

The Ralph loop: One of the simpler practitioner versions of long-running agents

The Ralph loop (sometimes called the Ralph Wiggum technique) is one of “simpler” practitioner version of long-running agents, popularized by Geoffrey Huntley and Ryan Carson. The reference implementation is literally a bash script that loops:

  1. Pick the next unfinished task from a list (prd.json or equivalent).
  2. Build a prompt with the task, the relevant context, and any persistent notes.
  3. Call the agent.
  4. Run tests or other checks.
  5. Append what happened to progress.txt.
  6. Update the task list (done, failed, blocked).
  7. Go back to step 1.

The reason it works is the same reason any of the harnesses below work: State lives outside the agent’s context. prd.json is the plan, progress.txt is the lab notes, and AGENTS.md is the rolling rulebook. The agent itself is amnesiac, but the filesystem isn’t. Each iteration starts fresh and reads enough state from disk to keep going. Carson’s Compound Product extends the idea by chaining multiple loops (an analysis loop that reads daily reports, a planning loop that emits a PRD, an execution loop that writes the code), which is roughly the open source version of the planner-generator-evaluator triad Anthropic landed on independently.

I went deeper on all of this in “Self-Improving Coding Agents”: task list structure, progress files, QA gates, monitoring, the failure modes you’ll actually hit. The short version is that you can build a working long-running agent in an evening with a bash script and a JSON file. Most of what Google and Anthropic have productized is the work of making this pattern recoverable, secure, and observable at scale.

The big-lab stories below are different ways of paying for that production-readiness.

Anthropic: Harnesses, then the brain/hands/session split

Anthropic has been the most public about the engineering. Two posts are worth reading end to end.

The first is “Effective Harnesses for Long-Running Agents,” which lays out a two-agent harness for autonomous full stack development. An initializer agent runs once at the start of a project to set up the environment, expand the prompt into a structured feature-list.json, and write an init.sh that future sessions will run on boot. A coding agent is then woken up over and over, each session asked to make incremental progress on one feature, run tests, leave a claude-progress.txt note, and commit. A test ratchet (“it is unacceptable to remove or edit tests because this could lead to missing or buggy functionality”) sits in the prompt to stop the very common failure of an agent deleting failing tests to “make them pass.” InfoQ’s writeup extends this into a planner, generator, and evaluator triad, on the same logic that separating generation from evaluation matters because models grade their own work too generously.

The second is “Scaling Managed Agents: Decoupling the Brain from the Hands,” the architectural post behind Claude Managed Agents (Anthropic’s hosted runtime, launched in early April). The argument is that an agent has three components that should be independently replaceable. The Brain is the model and the harness loop that calls it. The Hands are sandboxed, ephemeral execution environments where tools actually run. The Session is an append-only event log of every thought, tool call, and observation.

This sounds abstract, but it isn’t. Here’s Anthropic’s framing: “Every component in a harness encodes an assumption about what the model can’t do on its own.” When you couple them, an assumption that goes stale (e.g., the model used to need an explicit planner and now plans natively) means the whole system has to change at once. When you decouple them, the harness becomes stateless, sandboxes become cattle, not pets, and a brain crash doesn’t lose the run. A fresh container calls wake(sessionId) and reconstitutes the state from the log. They reported time-to-first-token dropped ~60% at p50 and over 90% at p95 just from being able to start inference before the sandbox is ready.

The session-as-event-log idea is the part most teams underappreciate. It is what makes a long-running agent recoverable. Without it, a container failure is a session failure and you’re debugging into a stale snapshot. With it, the agent’s memory is a queryable artifact that lives outside whatever process happens to be running at the moment.

For the scientific computing crowd, Anthropic’s “long-running Claude” post reduces all of this to a simpler stack: CLAUDE.md as a living plan the agent edits as it learns, CHANGELOG.md as portable lab notes, tmux plus SLURM plus git as the execution and coordination layer, and the Ralph loop, a for loop that kicks the agent back into context whenever it claims completion and asks if it’s really done. Their flagship case study is a Boltzmann solver Claude Opus 4.6 built over a few days that reached subpercent agreement with a reference CLASS implementation. Months to years of researcher time, compressed.

Same patterns across all three posts: an explicit plan file, an explicit progress file, structured handoffs between sessions, separate generation from evaluation, and a loop that refuses to let the agent stop early.

Cursor: Planners, workers, judges

Cursor’s “Scaling Long-Running Autonomous Coding” is the other essential read this year. They walked into walls that Anthropic mostly papered over.

Their first attempt was a flat coordination model: equal-status agents writing to shared files with locks. It became a bottleneck and made the agents risk averse, churning rather than committing. Their second attempt swapped locks for optimistic concurrency control, which removed the bottleneck but didn’t fix the coordination problem. The third design is what’s running in production now and what they describe as solving most of the problem:

  • Planners continuously explore the codebase and emit tasks. They can recursively spawn subplanners.
  • Workers are focused executors. They don’t coordinate with each other and they don’t worry about the big picture.
  • Judges decide when an iteration is finished and when to restart.

Two things stand out from the post. One: “A surprising amount of the system’s behavior comes down to how we prompt the agents” more than the harness or the model. Two: Different models slot into different roles. Their reported finding is that a GPT model was better than Opus for extended autonomous work specifically because Opus tended to stop early and take shortcuts. Same task, different role, different model. The matching is becoming part of the design surface.

This pairs with Composer 2 (their proprietary frontier coding model that ships in Cursor 3) and their background cloud agents: long-running tasks that run on Anysphere’s cloud infrastructure rather than your laptop. Eight-hour refactors and codebase-wide migrations survive a closed lid. You can start a task locally, hit run in cloud when you realize it’ll take 30 minutes, and reattach later from your phone. Each agent runs in an isolated Git worktree and merges back via PR. The handoff between local and remote is the part most teams haven’t figured out yet, and Cursor’s bet is that it has to be its own product surface.

The shape ends up close to Anthropic’s: Roles are split, sessions are durable, judges sit beside the worker, and a long task runs in a cloud sandbox with Git as the coordination substrate.

Google: Long-running agents on the Agent Platform

Google’s announcement at Cloud Next ’26 folded Vertex AI into the Gemini Enterprise Agent Platform and turned long-running agents into a named product, with named SLAs.

The pieces that matter for this post:

  • Agent Runtime supports agents that “run autonomously for days at a time” with sub-second cold starts and on-demand sandbox provisioning. The launch post’s example use case is a sales prospecting sequence that takes a week to play out, which is roughly the right shape for it.
  • Agent Sessions persist conversation and event history. You can pin them to a custom session ID that maps to your own CRM or DB record, so the agent’s state lives next to the business state instead of in a separate AI silo.
  • Agent Memory Bank is the persistent long-term memory layer, generally available as of Next ’26. It curates memories from sessions, scopes them to a user identity, and exposes a search API so the next agent invocation can pull what’s relevant. Payhawk reported that auto-submitting expenses through a Memory Bank-backed agent cut submission time by over 50%.
  • Agent Sandbox handles hardened code execution.
  • Agent-to-Agent Orchestration, Agent Registry, Agent Identity, Agent Gateway, Agent Observability, and Agent Simulation cover basically every operational concern you’d otherwise build by hand for a production fleet, including the cryptographic-identity-and-audit-log story enterprises actually need to ship.

Architecturally this is the same brain/hands/session split Anthropic described, just productized at platform scale and bundled with ADK (the code-first dev kit) and Agent Studio (the visual one). If you’re building inside Google Cloud, you don’t have to design a session log or a memory store from scratch anymore. You wire an ADK agent into Memory Bank and Sessions, deploy onto Agent Runtime, and the persistence question is answered.

Notice how much this looks like the pattern Anthropic and Cursor describe, just unbundled into named services with SLAs. Three years ago you’d have built all of this yourself. Now you pick which version of “decoupled brain, hands, and session” you want to rent.

Five patterns for long-running agents in production

Shubham Saboo and I wrote up five design patterns we’ve seen separate working long-running agents from demos. They aren’t Google-specific, but they map cleanly onto the primitives Agent Runtime now exposes, so it’s worth walking through them here in shortened form.

Checkpoint-and-resume. The most common multiday failure is context loss. An agent processes 200 documents over four hours, hits an error on document 201, and without a checkpoint you start from scratch. Treat the agent like a long-running server process: write intermediate state to disk, checkpoint every N units of work, recover from failures. The Agent Runtime sandbox gives you a persistent filesystem, but choosing the right checkpoint granularity (not every step, not only the end) is on you.

Delegated approval (human-in-the-loop). Most “human-in-the-loop” implementations are: serialize state to JSON, fire a webhook, hope someone responds. The state goes stale, the notification gets buried, the agent re-deserializes into a slightly different world. Long-running runtimes let the agent pause in place with full execution state intact: reasoning chain, working memory, tool history, pending action. Hours of human time pass, the agent consumes zero compute, and it resumes with subsecond latency. Mission Control is Google’s inbox for this. The pattern works regardless of vendor.

Memory-layered context. A seven-day agent needs more than session state. Memory Bank handles long-term curated memory, Memory Profiles add low-latency lookups, and the failure mode you’ll hit in production is memory drift: The agent learns a procedural shortcut from a few atypical interactions and starts applying it broadly. Govern memory like you govern microservices. Agent Identity controls who can read and write which banks. Agent Registry tracks which version of which agent is running. Agent Gateway enforces policy on the wire. The auditing question stops being “What are my agents doing?” and becomes “What are my agents remembering, and how is that changing their behavior?”

Ambient processing. Not every long-running agent talks to a human. Some sit on a Pub/Sub stream or a BigQuery table and act on events as they arrive: content moderation, anomaly detection, inbox triage. The architectural decision worth making early is to not hardcode policy into the agent. Define it in the Gateway and the fleet picks up policy changes without redeploys. Ambient agents run unsupervised for long stretches, and the only sane way to update a hundred of them is to update the policy layer once.

Fleet orchestration. In real systems, you rarely have one agent. A coordinator delegates subtasks to specialists (a Lead Researcher Agent, a Scoring Agent, an Outreach Agent), each running independently for different durations. Each specialist gets its own Identity (so the Outreach Agent can’t read financial data meant for Scoring), its own policy enforcement, its own Registry entry. This is the same coordinator/worker shape distributed systems have used for decades. What’s new is that ADK handles it declaratively with graph-based workflows, and a bad deployment in one specialist doesn’t cascade to the others.

The patterns compose. A compliance system might use checkpointing for document processing, delegated approval for review gates, memory layering for cross-session knowledge, and fleet orchestration to coordinate the specialists. The opening question is always the same: What’s the longest uninterrupted unit of work your agent needs to perform? Minutes, and you don’t need long-running agents. Hours or days, and these patterns are where to start. The full write-up with code samples covers each pattern in depth.

So how do you actually build one today?

This is the practical question, and it has a different answer depending on what you’re building.

You’re a developer who wants long-running coding work on your own repo. Just use Claude Code (or Antigravity, Cursor, or Codex). The harness is already there. Treat your AGENTS.md like a pilot’s checklist: short, every line earned by a real failure. Add hooks for typecheck and lint that surface failures back to the agent. Write a plan file before the agent starts. Use the Ralph loop when the agent claims it’s done and you don’t believe it. For multihour or overnight jobs, run in a worktree so a closed laptop doesn’t kill the run, and have it commit progress every meaningful unit of work. This is the path most people should take, and it’s where the most leverage is right now.

You’re building a hosted agent product. Don’t build the runtime. Pick a managed one. The three real options today: Google’s Agent Platform (Agent Engine + Memory Bank + Sessions), Claude Managed Agents, or roll something on top of ADK, the Claude Agent SDK, or Codex SDK and host it yourself. The trade-off is the usual one. Managed gets you the brain/hands/session split, observability, identity, and an audit trail out of the box. Self-hosted gets you control and the ability to use weird models for weird roles (Cursor’s pattern). For most teams, the right starting point is a managed runtime plus your own ADK or SDK code for the actual loop.

You’re doing something autonomous and operational (monitoring, research, ops). Memory Bank-style persistence is what you want, and it’s the part that doesn’t exist in Claude Code. ADK + Memory Bank + Cloud Run + Cloud Scheduler is the cleanest stack I’ve seen for “agent runs every N hours, accumulates state, alerts on a threshold.” This is also where Cursor’s planner/worker/judge split starts to matter more than it does for IDE coding, because the work is genuinely parallel and the failure modes are different.

A few things matter regardless of which path you take.

Write down the done condition before the agent starts. This is the single highest-leverage move for long runs. The Anthropic harness post calls it the feature list; Cursor calls it the planner’s task spec. Either way, it’s an external file with explicit, testable completion criteria, and it exists so the agent can’t quietly redefine done midrun.

Separate the evaluator from the generator. Self-grading is the failure mode. A planner/worker/judge pipeline, or a generator/evaluator pair, is a real architectural pattern, not a stylistic preference. Even if it’s the same model in different roles with different prompts.

Invest in the session log, not just the prompt. The append-only event log is what makes the agent recoverable, debuggable, and auditable. If you can’t reconstruct what the agent did in the last 24 hours from durable storage, what you have is a long-running shell script that happens to call an LLM, not a long-running agent.

Treat compaction and context resets as first class. Anthropic is explicit that summarization-as-compaction wasn’t enough for very long jobs; they had to do full context resets where the harness tears the session down and rebuilds it from a structured handoff file. It is essentially how humans onboard a new engineer.

There are some real limitations right now

A few things are still genuinely unsolved.

Cost. A 24-hour run with a frontier model and a few tools is not cheap. Without budgets, circuit breakers, and a hard cap on tool spend, an agent can quietly burn through a week’s API budget in an afternoon. This is solvable, but it’s an explicit step you have to take.

Security. A long-running agent with API keys, cloud access, and the ability to run shell commands has a much larger attack surface than a chat session. The brain/hands separation pattern matters here too: Credentials should be unreachable from the sandbox where model-generated code runs, which is one of the benefits Anthropic calls out for Managed Agents.

Alignment drift. Over many context windows, agents drift. The original goal gets summarized, then resummarized, then loses fidelity. This is the part hooks and judges exist to defend against. It is also the most common reason “the agent went off and did something I didn’t ask for.”

Verification. Auditing 24 hours of autonomous activity is a real human-time problem. Observability and structured artifacts (PRs, commits, briefings, test runs) are how you make this tractable. Without them, you’re scrolling logs and you’ll miss what matters.

The human role. This is the one I keep coming back to. Defining work crisply enough that an agent can run for a day on it is harder than doing the work yourself. The skill that’s appreciating in value isn’t writing code. It’s writing specs that survive contact with an autonomous executor.

Where this is going

Google, Anthropic, and Cursor have converged on roughly the same shape. Separate the model loop from the execution sandbox from the durable session log. Split planning from generation from evaluation. Bake in compaction, hooks, and context resets. Expose memory as a managed service that any agent invocation can query.

Surface area is what differs. Google’s Agent Platform is the enterprise-stack version, with the identity and audit trail story baked in. The patterns underneath are the same. Claude Managed Agents is “Anthropic’s harness, hosted.” Cursor’s background agents are “long-running coding, pulled out of the IDE and into the cloud.”

The harder problems for the next year aren’t in any of those layers individually. They’re in the coordination above them. Many long-running agents on a shared codebase. Agents that read their own traces and patch their own harnesses. Harnesses that assemble tools and context just in time for a task instead of being preconfigured at startup. That’s where the agent stops looking like a smarter chat window and starts looking like a colleague who’s been on the project longer than you have.

The model is still load-bearing. But the gap between a chat window and an agent you can leave running overnight is mostly in the state, sessions, and structured handoffs wrapped around it. That’s where I’d spend my learning time right now.

16:49

[$] An update on fanotify [LWN.net]

In a filesystem-track session at the 2026 Linux Storage, Filesystem, Memory Management, and BPF Summit, Amir Goldstein updated attendees on the fanotify filesystem-event monitoring subsystem. He wanted to describe changes that had come in the last year or so, as well as upcoming features and some remaining challenges in his efforts to use fanotify for hierarchical storage management (HSM). Fanotify is the user-space API for monitoring files, directories, and filesystems for events of various sorts (e.g. opening or deleting a file).

16:35

Various & Sundry, 6/8/26 [Whatever]

Hello, it’s Monday, let’s see what’s been going on over the weekend:

Spencer Pratt misses LA Mayoral runoff: I’ve not lived in California for decades now, and even when I did never lived in the city of Los Angeles proper. Nevertheless as a native son of Southern California, I’ve been keeping up with LA’s mayoral race, mostly because people I know were exasperated by the presence of Pratt, a fellow who as I understand it was best known for dating someone more famous than he and then extending that into an indifferent career in the reality TV genre, the sort where he and his spouse at one point announced an impending divorce for the publicity boost. Pratt is a Republican, and so perhaps unsurprisingly his entire platform seems to have been based on “backing the blue” and harassing homeless people.

The California primary election was nearly a week ago, and the vote tallying has been slow and for most of it Pratt was in second place behind the current, somewhat embattled, LA mayor Karen Bass. But as the mail-in votes have been counted over the last week, Pratt slipped into third behind Nithya Raman, and seems likely to stay there. Naturally, this has started the absolutely predictable GOP whining and foot-stomping about “election integrity,” to which the only rational response is, shut the fuck up, you reprehensible children, and take the “L” like grown-ups. They won’t, of course. But one can dream.

Earlier in the campaign Pratt said that if he lost the election he would leave Los Angeles; I understand there may be a GoFundMe to hire him a U-Haul. I will believe that he’s going to leave LA when I see it. He has not other real skills than being a celebrity of a certain low-wattage sort. He needs to be where the work is. And of course, this was all this doomed mayoral run was — an attempt to keep his name in the spotlight a little longer, to keep the work flowing. I hope it does this task… poorly.

Rush comes back: In rather more exciting news from Los Angeles, Rush opened up their new tour there last night, their first in a decade and since drummer/lyricist Neil Peart passed away in 2020. Apparently things went extremely well, with tour drummer Anika Nilles getting her critical flowers for her work on the throne. For me the moment of particular interest is that Aimee Mann (who I am friendly with thanks to our mutual participation on the JoCo Cruise) popped up for a cameo on “Time Stand Still,” which is arguably my own favorite Rush tune:

I have friends who are over the moon that Rush is back on tour, especially since it seemed unlikely, with the passing of Peart, that they would ever do so again; he was (and is) absolutely the beating heart of that band. No one could or did fault the Geddy Lee or Alex Lifeson, the other two members of Rush, for choosing to call it a career. But the way Rush are doing this particular tour, with a drummer with her own considerable skills, not designed to replace Peart but to support his friends as they take a sweet, valedictory lap, seems to be something everyone is getting behind. I hope they have a good tour, and I hope all my friends who love Rush get a chance to see them.

House-sized American flag causes a power failure: Sometimes the real-world metaphors are just a little on the nose, aren’t they? But wait, the metaphor gets even nose-ier: The New York Times reporting on the event seems to suggest the massive, 3,000 square foot flag that cut off power to 40,000 may have been the property of the WWE wrestling organization, based in Stamford, where the outage happened. A preview, possibly, of the event (UFC, not WWE) scheduled for the White House lawn this weekend? We shall see.

I am, for the record, somewhat less outraged than some other people of my political leanings about the MMA event at the White House. I think it’s tacky as fuck, but that’s Trump for you. I don’t support it and am sure it’s going to be corrupt people doing corrupt things, corruptly, but on my list of things to seethe about regarding this administration, it’s low-ish on the list. Other people are taking up my slack, to be sure. I wish them joy in the work.

— JS

16:07

rsync 3.4.4 released with regression fixes [LWN.net]

Andrew Tridgell has announced the release of rsync 3.4.4 with fixes for the regressions introduced in the 3.4.3 release. He also notes there will be an rsync 3.5.0 soon, with many more security updates:

As part of the 3.5.0 release update I have created a rsync-security@lists.samba.org mailing list for anyone who is willing to do testing of the 3.5.0 release. The idea is to try to reduce the chance of more regressions by expanding the set of testers of this release. I have seeded it with people who were involved in past rsync security issues. If you want to join this list then the easiest way would be for you to be vouched for by someone on the distros@vs.openwall.org list or someone else I already trust.

My apologies for the regressions in the 3.4.3 release and I hope future security updates for rsync will have less issues. The greatly expanded test suite in rsync 3.5 combined with the rsync-security mailing list should help.

15:56

TOTP-based two-factor authentication for Sculpt OS [OSnews]

Norman Feske, one of the main developers behind Genode and Sculpt OS, has published a blog post detailing how he developed a two-factor authentication application for Sculpt OS.

With this little tool, which I have turned into an deploy option on Sculpt OS to swiftly bring it up whenever I need it, TOTP-based two-factor authentication has become part of my daily routine. Should you want to risk a look under the hood, let me point you to the vitotp Goa project.

↫ Norman Feske

The Genode project moved from GitHub to Codebrg recently, and needed a native TOTP impelentation for that purpose.

15:28

Link [Scripting News]

Said to Claude just now -- btw, it's very good we're using the outliner back and forth. we're going to build on that.

15:14

GenAI is Fluent in Everything, but Faithful in Nothing [I, Cringely]

Why the machines hallucinate, why they have no worldview, and why truth has to come from somewhere else.

I’m going to say something that sounds like an insult and is meant as a description: large language models (all of them) hav never known a true thing. Not once. It doesn’t know things at all. It is extraordinarily good at sounding like it does, which is a different skill, and most of our present confusion comes from mistaking the second for the first.

Here is what a language model actually does. It has read an enormous amount of text, and from that text it has learned, with real brilliance, what tends to come next. Give it some words and it predicts the words likely to follow. That is the whole trick. It is a magnificent trick — it gives us machines that write fluent prose in any voice on any subject — but look at what it optimizes for. It optimizes for plausible. It was never, at any point, optimizing for true. Truth was not in the objective. Plausibility was. And plausibility and truth often travel together, which is precisely why we confuse them — but they are not the same thing, and the gap between them is the whole story.

This is why these systems “hallucinate,” a word I dislike because it implies a malfunction. There is no malfunction. A model that invents a court case that never happened — complete with a docket number, plausible parties, and a tidy holding — is not broken. It is doing exactly what it was built to do: produce the most plausible continuation. A fake citation is plausible. It looks like the thousands of real ones the model has read. The machine has no way to prefer the real one, because it has no idea that “real” is a category. It isn’t lying, either. Lying requires knowing the truth and choosing against it, and the machine has never once been in a position to know.

Now the deeper point, the one that took me a long time to learn to say cleanly. Truth is not a property of language. You cannot find it inside a sentence by examining the sentence harder. Truth is a property of the relationship between a sentence and the world — between the words “it is raining” and the actual sky. A statement is true when it corresponds to how things are. And the model has only ever seen the words. It has read every description of rain ever written and stood out in none of it. It holds the map — all of the maps, every map anyone has ever drawn — and it has never once been to the territory. That is why it can be eloquent and wrong in the same breath and feel no friction between the two. The friction lives in a place the model has never visited.

There’s a corollary that unsettles people, and it shouldn’t. A machine like this has no worldview. None. It will argue any side of anything with equal grace, defend a position and then dismantle it in the next window, because it isn’t holding a position — it’s rendering one. It is a mirror with a vocabulary. We keep waiting for it to reveal what it really believes, and it doesn’t believe anything, and that is not a flaw to be trained out of it. It is the honest fact of the thing. The language is separate from any view of the world. That was the original insight some of us started from years ago, before any of the building began: language is machinery, and machinery has no creed.

It is a mirror with vocabulary

The trouble is that we keep dressing the machinery in the costume of a knower. We put it behind a chat window that answers in the first person, warm and certain, and every instinct we have says this thing believes what it is telling me. It does not. It cannot. And the distance between how it sounds and what it is happens to be the most dangerous real estate in the whole technology, because that is exactly where a fluent falsehood gets received as a considered judgment — in a clinic, in a courtroom, in a loan decision, in a room where someone is deciding whether to act.

So what do you do with a machine that can say anything and stand behind nothing? You stop asking it to be the thing it cannot be. If truth lives in the relationship between a claim and the world, then truth has to come from the world — from some grounded, checkable account that sits outside the language model and stays outside it. You don’t teach the renderer to be honest. You keep the saying and the knowing in separate rooms, and you let the language render only what the knowing will vouch for. Language on one side, a verifiable account of the world on the other, and a wall between them you can actually inspect.

That sounds tidy until you try to build it, and then you hit the part nobody puts on a slide. Before you can check a claim against the world, you have to know what the claim is — and pulling discrete, checkable claims out of fluent prose is genuinely hard. The machine doesn’t speak in clean facts. It speaks in paragraphs, where an assertion hides inside a subordinate clause, where a hedge can pass for a claim and a claim can pass for a hedge, and where — my favorite trap — every individual sentence is true and the paragraph they assemble into is a lie. The honest sentence, marshaled into a dishonest whole. Working out what is actually being asserted, before you have checked whether any of it is so, turns out to be most of the labor. It is unglamorous, and it is the ballgame.

I don’t think the future of this technology is a more fluent machine. We already have fluency. Fluent is solved. The future is a more honest architecture — one that knows the difference between what it can say and what it can stand behind, and that keeps the truth somewhere you can point to and check. A machine with no worldview is not the problem. Pretending it has one is. The repair was never going to be giving the machine a conscience. It is to stop asking the part that talks to also be the part that knows.

Full disclosure: I’m a co-founder of 2Brains, a company built on exactly this conviction, so I am not a neutral party here, which we have solved and have patent pending. But the conviction came first. The company exists because of it, not the other way around.

 

The post GenAI is Fluent in Everything, but Faithful in Nothing first appeared on I, Cringely.






Digital Branding
Web Design Marketing

14:42

Link [Scripting News]

I can't convert scripting.com to https. If I moved the site to an https server, all the archives would break, and that's where the value of the site is, in the archives, where I've kept a history of the various things I've worked on. I'm still working on new stuff, but if this is all that was left to do, I'd move to the tropics and make pottery, I would not spend my last years on such an enormous stupid bullshit project. It's just not possible. But if you want to read the new stuff on my blog in https, you can. I have a mirror on a WordPress site. We even have the blogroll ported.

14:35

Security updates for Monday [LWN.net]

Security updates have been issued by AlmaLinux (bind, bind9.16, frr, kernel, kernel-rt, libexif, mysql, php, and unbound), Debian (apache2, chromium, glibc, gsasl, jackson-core, libxml2, nginx, request-tracker4, request-tracker5, tomcat10, tomcat11, and tomcat9), Fedora (chromium, firefox, haveged, keylime, libinput, libssh2, nasm, perl-CryptX, rust, thunderbird, and webkitgtk), Mageia (cockpit, golang-x-crypto, golang-x-sys-devel, kernel, kmod-virtualbox, kmod-xtables-addons, kernel-linus, perl-DBIx-Class-EncodedColumn, perl-Crypt-URandom-Token, xdg-dbus-proxy, and xmlrpc-c), Slackware (samba), and SUSE (7zip, amazon-ssm-agent, ansible-13, ansible-core, assimp-devel, bind, cacti, chromium, dpkg, epiphany, erlang27, evince, ffmpeg-4, freerdp, frr, git-bug, google-guest-agent, grafana, hauler, ignition, jq, kanidm, kernel, keybase-client, libjxl, libmariadbd-devel, libmozjs-115-0, libopenbabel8, libsoup2, mariadb, mcphost, networkmanager, openssh, perl-HTTP-Daemon, perl-HTTP-Tiny, perl-IO-Compress, perl-Sereal-Decoder, perl-xml-libxml, postgresql18, python-pyopenssl, python311-pip, tomcat, tomcat10, tomcat11, tor, trivy, unbound, uriparser, vifm, weblate, xorg-x11-server, and yq).

13:56

The AI Agents Stack (2026 Edition) [Radar]

The following article originally appeared on Paolo Perrone’s The AI Engineer Substack and is being reposted here with the author’s permission.

Your team picks LangGraph for a customer support chatbot. Three weeks in, you’ve got 14 nodes in a state graph, a custom checkpointer writing to Redis, and retry logic for tool calls that fail once a week. The agent answers refund questions. It calls one API. A 50-line script on the OpenAI SDK with two MCP servers would have done the same thing. But nobody mapped which layers the problem actually needed.

In November 2024, Letta published an AI agents stack diagram that became the default reference for half the engineering teams I talk to. If you’ve seen a “layers of an agent” visual on LinkedIn or pinned in a Slack channel, it probably traces back to that article.

That diagram is 14 months old now, and a lot has changed since. MCP didn’t exist yet. Memory was still treated as a subset of your vector database. Nobody was shipping provider-native agent SDKs. Eval wasn’t even on the map. The stack has six layers in 2026, and at least three of them didn’t exist as distinct categories when Letta drew the original.

So we drew it from scratch. This is the 2026 version.

The minimum viable agent stack in 2026

TL;DR

That’s the starting stack. Add complexity when something specific breaks, not before.

What are we even mapping?

Before the stack, there was a loop. In “What Is an AI Agent?,” we defined an agent as the think-act-observe cycle: The model reasons about a task, takes an action (calls a tool, writes to memory), observes the result, and loops until the task is done. That loop is the atomic unit. Everything in this issue is infrastructure that makes that loop work reliably, at scale, in production.

The agent stack is not the LLM stack. A chatbot needs inference and maybe RAG. An agent needs state management across multistep execution, tool access governed by protocols, memory that persists across sessions, autonomous reasoning loops, and guardrails that constrain behavior in real time. That’s a fundamentally different set of infrastructure problems.

We’re mapping the six layers between your LLM and a production agent. We’re not covering training infrastructure, data pipelines, or model fine-tuning. Those are adjacent stacks. We covered RAG in depth in Issue #5. Today we’re zooming out to show where RAG fits in the bigger picture.

Three things redrew the map between 2024 and 2026. MCP standardized tool connectivity, and the entire tools layer is new because of it. Reasoning models changed what agents can do autonomously, with single-call agents replacing some multistep chains. And memory became a first-class architectural primitive, not an afterthought bolted onto a vector database.

How to evaluate each layer

When choosing tools at each layer, ask three questions. How much state do you need to manage? A stateless tool caller and a multi-session agent that learns over time are different engineering problems, and the layers where state management is hardest (memory, frameworks) are where most teams get stuck. How much vendor lock-in can you tolerate? MCP is an open standard, provider SDKs are not, and every tool choice either increases or decreases how painful your next migration will be. And how hard is it to go from demo to production? Some layers (model serving) have almost no gap, while others (eval, guardrails) have a massive one. The layer where you feel that gap most is the one to invest in first.

We take each layer from the bottom up, starting with the most stable and ending with the least mature.

Layer 1: Models and inference

How you run the model that powers your agent: call an API, use a managed open weight provider, or self-host.

Models & inference: key players

The inference layer changed more in tone than in substance. Reasoning models like o1, o3, DeepSeek R1, and Claude with extended thinking shifted what agents can plan and execute. Agents that previously needed multistep chains can now solve problems in a single reasoning call. Open weight models like Llama 3.3, DeepSeek V3, and Qwen 2.5 closed the quality gap dramatically, so “always use the biggest closed model” is no longer default advice. The emerging pattern is to prototype on closed source and deploy on open weight.

The honest take: This layer is commoditizing. Model differences matter less each quarter. The real decision is the cost and latency trade-off, not which model is “smartest.”

On the evaluation side, API calls are stateless. Send a request, get a response. Nothing to manage. Lock-in risk runs high for closed APIs because each model reasons differently, so switching providers means retuning prompts, adjusting for different failure modes, and retesting your eval suite. It’s low for open weight, where you can swap the model and keep the infra. The prototype-to-production gap is the smallest of any layer. Your demo API call is the same as your production API call.

Self-host when your agent call volume makes API pricing untenable or when you need sub-100ms latency that API round-trips can’t deliver.

Layer 2: Protocols and tools

How your agent calls external tools and APIs: through MCP servers, browser automation, or agent-to-agent protocols.

Protocols & tools: key players

This layer didn’t exist as a distinct category in 2024. Every framework had its own JSON schema for tool definitions. Now MCP is the standard, with 97M monthly SDK downloads, adoption by OpenAI, Google, and Microsoft, and a donation to the Linux Foundation.

Browser Use exploded in parallel, hitting 78K GitHub stars in under a year. Nobody was shipping browser agents in production in 2024. And agents can now talk to other agents. IBM launched ACP, and Google launched A2A. Neither is standard yet, but the problem they solve (agents coordinating with other agents) is real and growing.

Security is the open problem. Endor Labs analyzed 2,614 MCP servers and found 82% prone to path traversal and 67% to code injection.

The honest take: The protocol debate is over. MCP won. The only question left is how you lock down your MCP servers before someone exploits them.

State management is nonexistent here. Your agent calls a tool, gets a response, done. No session, no memory between calls. Lock-in risk is low because MCP is an open standard, so if you build MCP servers, any MCP-compatible agent can use them. The prototype-to-production gap is medium. Your demo MCP server works until someone sends a malicious tool description. Security and governance are the gap.

MCP standardized how agents use tools. It says nothing about how agents talk to each other. ACP and A2A are trying to solve that, but neither has reached critical mass. If you need multi-agent coordination today, you’re building it yourself at the framework layer. We covered MCP in depth in Issue #4.

Layer 3: Memory and knowledge

How your agent stores and retrieves what it knows: in-context state, vector search, or persistent memory across sessions.

Memory & knowledge: key players

All three tiers feed into the same place: The context window your agent sees on every call.

In 2024, memory meant “pick a vector database and do RAG.” In 2026, memory is a first-class architectural primitive with three distinct tiers. Context windows got massive. Gemini hit 1M+ tokens, Claude 200K. Bigger windows didn’t kill the need for memory. They changed the trade-off: What do you stuff in-context versus what do you retrieve on demand?

“Context engineering” replaced “prompt engineering” as the core discipline. Instead of writing a better prompt, you architect what information the agent sees on every call. Memory blocks appeared as named, structured fields in the context window that the agent can read and overwrite every turn. Instead of dumping everything into the system prompt, the agent manages its own state: what to keep, what to update, what to drop.

On the infrastructure side, pgvector became the default for teams that don’t need a dedicated vector database. It’s just Postgres with an extension. GraphRAG emerged as a second retrieval option: follow relationships between entities instead of matching embeddings, with Neo4j leading this space. Sleep-time compute, where agents process information during idle time, is research stage but signals where tier 3 is heading.

The honest take: Most teams overcomplicate memory. Start with conversation history in Postgres and a structured system prompt. Add vector search when your history exceeds context limits. Add agentic memory management only when your agent needs to learn across sessions.

This IS the state layer. You’re deciding what your agent remembers, how it retrieves it, and when it forgets. Highest complexity in the stack. Lock-in risk is medium. pgvector is portable because it’s just Postgres, while specialized tools like Mem0 or Zep are harder to migrate away from. The prototype-to-production gap is large. Demo memory works because context windows are big enough. Production memory breaks when conversations get long and your agent starts forgetting the important parts.

In-context memory breaks down when agents need to share memory across instances or maintain state across model provider switches. That’s where dedicated memory infrastructure like Letta, Zep, and Mem0 earns its keep.

Layer 4: Frameworks and SDKs

How you wire together the model calls, tool use, and control flow that make your agent work: a provider’s built-in toolkit (SDK), a graph-based framework like LangGraph, or raw code.

Frameworks & SDKs: key players

Every major AI lab now ships its own agent SDK. OpenAI has the Agents SDK (evolved from Swarm). Google released ADK. Microsoft has Semantic Kernel and AutoGen. Hugging Face built smolagents. Two years ago, LangChain was the only game. Now you pick between three camps: provider SDKs that are fast to start but locked to one model, graph-based frameworks like LangGraph that are portable but require more setup, or no framework at all. That choice didn’t exist in 2024.

LangGraph solidified as the graph-based orchestration leader with v1.0 released October 2025 and production deployments at Uber, JPMorgan, LinkedIn, and Klarna. LangChain agents are now built on LangGraph under the hood. Meanwhile, the “build it yourself” camp grew. Teams that tried LangChain in 2024 and fought the abstraction are now writing thin wrappers over provider APIs + MCP. No framework means full control. This works until your agent needs state management or complex branching.

A quick note on naming: “LangChain” and “LangGraph” are not the same thing. LangChain is the integration layer handling model connectors, tool calling, and prompt templates. LangGraph is the orchestration engine managing state, control flow, and graphs. Most production teams use both together, but LangGraph is where the agent logic lives.

The honest take: Most teams pick too much framework. If your agent calls a model and a few tools, you don’t need LangGraph. A provider SDK and a couple of tool calls will get you to production faster than any graph.

Provider SDKs manage state for you. LangGraph makes you define every state transition explicitly. Build-it-yourself means you roll your own. Lock-in risk is the highest in the stack. Your orchestration code doesn’t port. A LangGraph agent rewritten for CrewAI is a new codebase. Provider SDKs are worse because you’re locked to one model too. The prototype-to-production gap is large. Demo works because nothing goes wrong. Production means handling tool failures, retries, timeouts, and humans who need to approve before the agent acts.

The framework you pick determines your migration cost. Provider SDKs are fastest to start but lock you to one model. LangGraph is portable but complex. Building your own gives you full control until your agent outgrows your wrapper. MCP is the one layer that transfers across all three camps.

Layer 5: Eval and observability

How you measure whether your agent is doing its job: tracing runs, scoring outputs, and catching regressions before users do.

Eval & observability: key players

This layer barely existed in 2024. Now it’s the gap. LangChain’s State of Agent Engineering survey found 89% of teams with production agents have implemented observability, but only 52% have evals. That 37-point gap is where production quality dies.

“Evaluation as infrastructure” is converging on three tiers: fast checks on every PR (Did the agent call the right tools?), nightly regression suites that use an LLM to judge output quality, and continuous production monitoring that alerts when agent performance drifts. New agent-specific benchmarks have emerged too, including Context-Bench for memory management, Recovery-Bench for error recovery, and Terminal-Bench for coding agents.

The honest take: Most teams skip eval until something breaks in production. By then they’re debugging blind. The teams that don’t have this problem built evals before they deployed.

State management matters here because your agent runs 12 steps, step 3 picked the wrong tool, and steps 4–12 were doomed from there. If your eval only checks the final output, you’ll never know why. Lock-in risk is moderate. Most tools export OpenTelemetry traces, so switching observability providers is doable, but switching eval frameworks means rebuilding your test suites. The prototype-to-production gap is the biggest of any layer. Most prototypes have zero eval. You don’t feel the pain until production users find the failures for you.

Current eval tools are strongest for single-turn and tool-calling evaluation. Multi-agent evaluation, long-horizon task assessment, and evaluating agents that learn over time are all unsolved problems. If your agent does any of those, you’ll need custom eval infrastructure beyond what the platforms offer today.

Layer 6: Guardrails and safety

How you stop your agent from doing things it shouldn’t: filtering inputs, authorizing tool calls, and validating outputs.

Guardrails & safety: key players

Agent guardrails became a separate discipline from LLM guardrails. In 2024, guardrails meant input/output filters on a model. In 2026, your agent calls tools, spends money, and takes actions. Guardrails now means authorizing tool calls, enforcing rate limits, and validating what the agent actually did.

The “guardrails before action” pattern emerged from teams that learned the hard way. They now enforce authorization at the tool execution layer, not the output layer. By the time you filter the response, the agent already sent the email. OWASP published the MCP Top 10 (beta), which is the first real security checklist for tool-connected agents. Deployment is still DIY. LangGraph Cloud and Bedrock Agents exist, but most production teams are still deploying with FastAPI and their own infra. This layer is where you’ll spend the most unplanned engineering time.

The honest take: This is the least mature layer in the stack. No dominant framework, no established patterns. You’re writing policy code from scratch.

Guardrails need to know what the agent is doing right now to decide what it shouldn’t do next. That means tracking agent state in real time. Lock-in risk is low because most guardrails are custom policy code you write yourself. NeMo Guardrails is the closest thing to a framework, but you’ll still write most rules from scratch. The prototype-to-production gap is effectively infinite. Your demo has no guardrails because nobody’s trying to break it. Production will.

Current guardrails tools focus on single-agent systems. If you’re running multi-agent workflows where agents delegate to each other, guardrail propagation across agent boundaries is an unsolved problem. You’ll need custom authorization logic.

What are you building?

This is the decision that cuts through the framework confusion. The agent type determines which layers you invest in and which tools to pick at each one.

A stateless tool caller answers questions from a knowledge base, looks up an order, or checks inventory. You need a provider SDK, MCP, and Postgres. No framework, no vector database. This is a weekend project.

A multistep workflow processes a refund end to end, reviews a PR across five files, or triages and routes support tickets. Steps depend on each other, things fail in the middle, and humans need to approve before the agent acts. You need LangGraph, MCP, and eval. Build evals before you deploy because these agents break silently.

An agent that learns remembers your preferences across sessions, gets better at your codebase over time, or tracks project context across weeks. You need a memory-first architecture, a vector DB, and eval. Orchestration is the easy part. The hard part is deciding what to remember, what gets dropped, and how you stop old context from polluting new answers.

A multi-agent system has agents that delegate to other agents, split a research task across specialists, or run parallel workstreams. You need the full stack. Two agents passing context to each other is already hard to debug. Five is impossible without trace-level evals on every handoff. Build eval infrastructure before you build the second agent.

Pick your stack

Coding agents: All 6 layers in action

Coding agents like Cursor, Claude Code, Codex, and Windsurf are the most proven application of the AI agents stack. All six layers, working together.

At the inference layer, these tools serve hundreds of millions of daily requests. Cursor routes between Claude, GPT-4, and its own fine-tuned models depending on the task. At the protocols layer, MCP servers connect to editors, terminals, filesystems, and Git, which is how the agent reads your code and runs commands. The memory layer uses codebase-aware retrieval with reranking. The agent doesn’t read your whole repo. It retrieves the files that matter for this specific edit.

At the framework layer, these are custom orchestration systems with RL loops. Not LangGraph, not a provider SDK. Purpose-built control flow for code generation, review, and iteration. At the eval layer, Cursor retrains its acceptance-rate model every 90 minutes based on whether users accept or reject suggestions. That’s eval running in production, continuously. And at the guardrails layer, sandboxed execution prevents runaway agents. The agent can write code and run it, but inside a container that limits what it can touch.

The AI agent stack cheat sheet

Every layer scored on the three questions from the evaluation framework: How much state do you need to manage? How much vendor lock-in can you tolerate? And how hard is it to go from demo to production?

The agent stack cheat sheet

The bigger picture

Most teams are building like it’s still 2024. They pick LangGraph before they know if they need state. They add a vector database before they’ve outgrown Postgres. They design multi-agent architectures before they’ve shipped one agent that works. The decision flowchart above exists because a tool-calling chatbot and a multi-agent research system share almost no infrastructure. Treat them the same and you’ll overbuild the first and underbuild the second.

The teams that got past this run evals on every deploy, not once a quarter. Their guardrails sit at the tool call layer, not the output layer. Their memory architecture was designed, not inherited from whatever the framework defaulted to. Most teams ship the opposite: no evals, output-only filtering, and a system prompt that grows until the context window chokes. The gap isn’t talent or budget. It’s knowing which layers matter for your specific agent instead of half-building all six.

The stack is going to collapse. Provider SDKs are already absorbing memory, tool calling, and basic eval into a single API. By early 2027, most teams won’t build each layer separately. They’ll get an increasingly opinionated stack from their model provider and that will be fine for 80% of use cases. The other 20%, agents at scale where the defaults break, will still build custom at every layer. But even then, when something fails in production, you need to know which layer failed. That’s what this article is for.

Sources

  1. The AI Agents Stack,” Letta, November 2024.
  2. Donating the Model Context Protocol and Establishing the Agentic AI Foundation,” Anthropic, December 2025.
  3. 120+ Agentic AI Tools Mapped Across 11 Categories [2026],” StackOne, February 2026.
  4. Henrik Plate and Darren Meyer, Dependency Management Report, Endor Labs, January 2026.
  5. Jason Liu, Context Engineering Series: Building Better Agentic RAG Systems, August 2025.
  6. LangChain and LangGraph Agent Frameworks Reach v1.0 Milestones,” LangChain, October 2025.
  7. State of Agent Engineering, LangChain, December 2025.
  8. Yunfei Bai, Allie Colin, Kashif Imran, and Winnie Xiong, “Evaluating AI Agents: Real-World Lessons from Building Agentic Systems at Amazon,” Amazon, February 2026.
  9. OWASP MCP Top 10, OWASP.

CodeSOD: Check and Check [The Daily WTF]

Today's anonymous submitter sends us a React view that presents some admin options. Of course, it should only show us those admin options if the user is authorized to do that. So let's see how they implemented it:

{(isAdmin || canSeeResults) && (
    <div>
        <p>Admin Actions</p>
            {(isAdmin || canSeeResults) && (
                <div>
                    <button> Show Results </button>
                </div>
            )}
    </div>
)}

If they're an admin or can see the results, we print out an Admin Actions header, and then if they're an admin or can see the results, we show them a Show Results button.

I once had a math teacher who claimed he didn't trust anyone, and that's why he always wore suspenders and a belt. I don't think he's still alive, let alone writing React code, but I see a "belts and braces" approach in play. Though in this case, I don't think it adds any safety.

[Advertisement] Plan Your .NET 9 Migration with Confidence
Your journey to .NET 9 is more than just one decision.Avoid migration migraines with the advice in this free guide. Download Free Guide Now!

12:14

Anthropic’s Project Glasswing Update [Schneier on Security]

In April, Anthropic initated Project Glasswing. The idea was to let companies use their new model to find and fix vulnerabilities in their own software. It was a fantastic PR move, and so many press outlets have uncritically parroted Anthropic’s claims that it’s now common wisdom that Mythos is better at finding software vulnerabilities than other models. Which is just not true.

In any case, Anthropic has published a Project Glasswing status report. It’s finding a lot of vulnerabilities in software—yay! Some of them are even dangerous. But almost none of them has been patched. It’s weird. There’s something fishy about the data that I don’t understand. That Anthropic refuses to release details—that it just says “trust us”—is a big problem here.

11:35

Grrl Power #1467 – Seismic handshake [Grrl Power]

You know, for an unlimited class tournament, this is all pretty low-key so far. Max’s previous round started off with quite a bit more action, but maybe it’ll escalate. Probably not to One Punch levels of chopping 1/20th of the Earth off, or nuclear explosion punches so much. As much as I enjoy that level of absurdity, the Grrl -verse is at a slightly lower power level. Admittedly, the apocalypse level attacks do register harder when you can draw a high fidelity long shot of a city buckling under the shock waves, and I can’t really do that. I mean, maybe if I had 40 hours to work on a single panel, but I think around hour 32 I’d just stab myself in the temple with the stylus.

But who knows what will go down during the finals?


Sexy bodymod news lady Gail has a special one-on-one interview with Tournament Quarter finalist Saraviah Nightwing! And if you subscribe to Gail’s Space Patreon, (which, due to the vagaries of Earth and Gal-Net’s DNS servers, happens to be the same as the Grrl Power Patreon, go figure) you can see that same interview in the nude! Well, eventually. The nude part of the interview, as well as the version that includes shading will be coming soon. Of course, you can view the interview in the nude now if you take your own clothes off. You know. Technically. Just put a towel on your chair first.

 


Double res version will be posted over at Patreon. Feel free to contribute as much as you like.

10:35

Art is a verb [Seth's Blog]

If a machine makes a painting that no one ever sees, it might be well-crafted or match some objective form of beauty, but it’s not art.

Art changes the creator and the viewer. Art requires participation. Art is a verb.

Decoration is important. Beauty matters. But decoration and beauty are insufficient to create art. Music, images, tastes and words become art when a transformation happens.

“What is the change you seek to make?” The answer to that question can inform our work.

No change, no art.

09:14

Vampire Capital [George Monbiot]

The highly lucrative trade in children in care reveals another level of cynicism altogether.

By George Monbiot, published in the Guardian 5th June 2026

Bring your suitcase, your bin liner, your dumpy bag. They’re handing out money faster than you can stuff it in a sack. All you need do is join the market in what may now be England’s most lucrative commodity. A commodity with arms and legs, hearts and brains, thoughts and feelings. Children.

Two years ago I stumbled into this issue after discovering that children in care who were being helped by a local charity I’m involved with were suddenly being whisked away, terminating the amazing progress they had been making, breaking their relationships, their sense of home, stability and security. When I began exploring why this was happening, I could scarcely believe what I was seeing: a highly lucrative trade in highly vulnerable young people. Children in “care” were being exchanged between private equity companies for £100,000 apiece. That figure is now wrong. Today they are worth far more.

A few days ago, the Financial Times published an investigation that I defy you to read with anything but open-mouthed horror. The average charge to the state by a private provider for a child in “care” is now £384,020 a year. That’s six times what Eton charges. Some providers now levy more than £1m per child per year, rising in a few cases for children with complex needs to more than £3m.

So everyone is cashing in. Alongside the big companies, which might invest in oil, gilts or crypto one day and children the next, the reporters found that “plumbers, hairdressers and Airbnb landlords with no experience in care” are opening “homes”. There might also be links to organised crime, as you can now make more money from children than you can from drugs. The police are concerned that gangs running children’s “homes” can not only harvest state money on a spectacular scale but also harvest highly vulnerable young people, who can be recruited and exploited. I guess you could call that vertical integration.

While there is a shortage of provision in the south of England, there’s a glut in the north-west: Lancashire has 17 places for every local child needing care. Why? Because property is cheaper there. Houses can be bought for a song and roughly converted. The cheapest buildings are in places where economic and community life has collapsed, high streets are deserted and facilities shuttered. Where better to send highly vulnerable children?

This is why our young people in Devon are being swept up to 300 miles across the country. A paper in the journal Child Abuse & Neglect finds a consistent association between profit-making and the placing of children outside their local authority area. It also finds that commercial provision is associated with them being moved more often, which means greater disruption and instability. Shifting children out of their home area makes them “more vulnerable to exploitation and grooming”. Yet the children with the greatest needs are often, under this system, those placed furthest from home.

Because councils, which have not been given the capital budgets to make their own provision, are so desperate to find places, they are sending children to providers who are not only unqualified but also, in some cases, unregistered. In other words, they are breaking the law by using “homes” which haven’t even met the basic requirement to register with the regulator. These are private oubliettes – places beyond easy reach of the authorities, where children can be dumped and forgotten. They might as well throw them in a pit and be done with it.

An investigation by LBC and the Bureau of Investigative Journalism found that in one of these illegal “homes”, two of the “care” workers had seven convictions between them when they were recruited, including four for violent offences. They persuaded a 15-year-old girl, who had been moved by her local authority in south Wales to the house in County Durham, to take so much drink and drugs that she became stupefied, then they sexually assaulted her for several hours. The local authority’s rationale for moving her to that “home”, the investigators found, was that she was “at risk of sexual exploitation”.

A report by the Children’s commissioner reveals that unregistered placements are on average even more expensive than legal ones. She estimates that 669 young people, mostly with special needs, including some of preschool age, are now in unregistered “homes”. In reality the figure is probably much greater, as many are likely to have fallen off the records altogether.

While in France only 5% of places are run for profit, in England, the FT tells us, the figure is 84%. The reason is simply stated: ideology. Successive governments have failed to provide local authorities with the capital needed to house children themselves because they think public is bad and private is good: the foundational belief of neoliberalism. In reality we pay far more for a much worse service. Then we wonder why, though they comprise less than 1% of the total population of children, 62% of the people in young offender institutions have been in “care”.

In Wales, all new profit-making in this sector was stopped in April, and the practice is being phased out altogether. But in England, the government seeks only to tweak this immoral and dysfunctional system. As Hettie O’Brien shows in her book The Asset Class, when private equity delivers public services, chaos and disaster follow as night follows day. But Labour, like the Conservatives, seems ideologically committed to the model.

The issue is profit. Instead the Westminster government blames the problem on a shortage of foster carers. But as Martin Barrow, a journalist and foster carer who has specialised in this issue for many years, points out: “Foster care, children’s homes, supported accommodation and adoption are not interchangeable. Each can be the right option for different children at different times in their lives.” Children’s homes remain essential, but the government must regain ownership of them. As we’ve discovered the hard way with water, energy and railways, public ownership of public services works better and costs less.

There is no place for a “market” here. Children are not a commodity to be bought and sold. Private profit and public service are always oil and water. But if there is one service above all others that capital should never be allowed to get its filthy hands on, it is children in care.

www.monbiot.com

08:28

Him-Person [Penny Arcade]

New Comic: Him-Person

06:07

Girl Genius for Monday, June 08, 2026 [Girl Genius]

The Girl Genius comic for Monday, June 08, 2026 has been posted.

01:49

Kernel prepatch 7.1-rc7 [LWN.net]

The 7.1-rc7 kernel prepatch is out for testing. Linus said: "Anyway, as things look now this is the last rc. Something can obviously always come up and force us to change that, but please give rc7 a whirl and keep testing for one more week."

Sunday, 07 June

20:21

The age of vapor [Cory Doctorow's craphound.com]

The cover of the Aug 1923 issue of 'Science and Invention' magazine, announcing a '$10,000 Spritism Challenge,' and 'The Man From the Atom.' The cover features an illustration of an astronaut floating in space amidst various planets and stars.

This week on my podcast, I read my latest Locus Magazine column, “The Age of Vapor,” about the role science fiction imaginaires plays in fueling high-tech investment bubbles.


It’s one thing to make everything about imaginary technology when you’re writing SF. The point of those imaginative exercises is to illumi­nate: To provoke reflection on our present moment, to inspire or warn about the future.

But spinning narratives about imaginary technology as investment advice is a very different matter. The point here is to obscure: to con­vince investors that a company with a 90% market share will somehow continue to grow, to stave off the day when Stein’s Law (“If something cannot go on forever, it will stop”) asserts itself.

MP3

19:42

Using Fedora Silverblue for compositor development [OSnews]

I’ve been using Fedora Silverblue on my desktop and laptop for the past, what, five years? Silverblue is Fedora’s main atomic variant, a spiritual counterpart to Fedora Workstation. I also make niri, a scrollable-tiling Wayland compositor. In other words, a core system component that you cannot properly test from inside a container or VM—you really want it directly on the host. So, why would I choose an… immutable distro? How does that even work?

↫ Ivan Molodetskikh

That’s a great question, and as immutable or immutable-like Linux distributions become more popular and widespread – and eventually the default download option for many distributions, I’m sure – articles like these are quite important. I’m sure quite a few developers discarded the idea of using something like Silverblue because they assumed it wouldn’t be fit for purpose, but if the developer of Niri makes it work, I’m fairly sure anybody can.

x86CSS: a working CSS-only x86 CPU/emulator/computer [OSnews]

x86CSS is a working CSS-only x86 CPU/emulator/computer. Yes, the Cascading Style Sheets CSS. No JavaScript required.

What you’re seeing above is a C program that was compiled using GCC into native 8086 machine code being executed fully within CSS.

↫ Lyra Rebane

Hand-written CSS, no JavaScript, and effectively no HTML.

Wizardry.

17:14

WordPress and web text in the future [Scripting News]

I wrote a blog post on Twitter this morning, sort of a version 0.4 of the talk I want to do at WCUS in August in Phoenix.

I want to offer cross-posting to twitter in an upcoming product, but I think the user should pay for the service, not me, a one-person independent developer.

I doubt if they'll do it, but this is general advice to companies that provide online services that they want to get paid for. If you depend on developers, you're shutting out sole proprietors who don't want to get caught up in the VC world, or don't have a chance to.

In the early days of the web and in the PC/Mac platforms before that, a creative software writer could get going without having to fund their users' storage needs. PCs came with storage built into the hardware. And in the early web days everyone was something of a geek and could be relied on to find a place on their own, to store their writing (not a perfect system by any means).

It's been 31+ years since I started my blog and still I can't offer writing software easily, with one exception, with WordPress. This is something I'm not sure photomatt et al are focused on. It's why WordPress has so much potential to grow the web.

The thing many people don't realize is that WordPress unlike pretty much everything else does not lock users in. It's part of their ethos. They run their service as part of the web, not an exploiter of the web.

When Matt talks about being an open source company (true) he's leaving out something equally important, that it's part of the web, unlike most if not all of the other choices.

When I speak at WCUS in August, I'd like to invite Matt to come up on stage and take a bow. Because there's a reason why such a great community has grown around his product, but we haven't been focusing on it and encouraging independent developers to see WP as part of the web that welcomes them, and does not lock the users or developers in.

PS: This will appear on my blog later today. I've started using twitter again to write early drafts of blog posts, and I especially like that they've eliminated character limits for paying customers. Nothing wrong with charging for services that people *want* to pay for.

PPS: I'm posting here again because it's more alive than Bluesky, by a lot, and Bluesky is just as much of a ripoff as X, except they haven't sold out to a billionaire yet. They should work with the web instead of trying to replace it, then I'll feel more at home there.

16:35

Dirk Eddelbuettel: RQuantLib 0.4.27 on CRAN: Small Extension [Planet Debian]

A new minor release 0.4.27 of RQuantLib, the first in over a year, arrived on CRAN a couple of minutes ago, has just now been uploaded to Debian, and is being built for r2u as well.

QuantLib is a rather comprehensice free/open-source library for quantitative finance. RQuantLib connects (some parts of) it to the R environment and language, and has been part of CRAN for nearly twenty-three years (!!) as it was one of the first packages I uploaded to CRAN.

This release of RQuantLib brings an update to the interface for all equity options, vanilla and exotics as well as implied volatilities. We now support the option maturity via either an actual maturity date, or the (fractional business-day years) numeric. This uses a clever little Rcpp trick I should discuss in a separate blog post. We also re-ran compileAttributes() to re-create the RcppExports.cpp file now using a slightly improved way of calling Rf_error for an ongoing Rcpp transition, and did some more standard maintenance. The details from the NEWS file follow as usual.

Changes in RQuantLib version 0.4.27 (2026-06-07)

  • All equity option functions can now take either a (fractional) time span to expiry or a given date, and accept a daycounter setter.

  • Two very old schedule helpers had a superfluous try/catch removed.

  • The continuous integration setup received a minor update.

  • The RcppExports.cpp file was updated to aid a Rcpp transition.

Courtesy of my CRANberries, there is also a diffstat report for the this release. As always, more detailed information is on the RQuantLib page. Questions, comments etc should go to the rquantlib-devel mailing list. Issue tickets can be filed at the GitHub repo.

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.

15:42

Link [Scripting News]

All the news reports about AI tools repeat the same hallucination story they've been running for years. That's another huge bug in the news process. They only report on a small number of angles that might have been news a few years ago, and have no insights on what else is going on. They did this with the web too. They always pick an item that their narcissistic view of the world finds tasty. It's a huge bug in the system, and why "news" isn't valuable for news, it's mainly useful for a relaxing reassurance that nothing has changed, the world is fucked up in exactly the same way it was fucked last week, month, year, etc. It's a form of bedtime story.

Link [Scripting News]

Star City is very good. It's good enough that you have to watch each episode at least twice to get the idea of what's really going on. I stopped watching the show it is a sequel for, For All Mankind, because it got incredibly juvenile and sitcom-like. But Star City is serious, at least in the first three episodes.

15:00

Vasudev Kamath: debsecan-mcp v0.1.2 released to PyPI [Planet Debian]

I finally carved out some time today to prepare and release debsecan-mcp v0.1.2 to PyPI. During this release, I integrated PyPI's trusted publisher mechanism, which authenticates directly via GitHub Actions and eliminates the need for manual uploads or static API tokens.

What is New?

There are no feature updates in this release; the changes are strictly focused on PyPI publishing requirements. This was handled entirely within the Antigravity IDE.

The primary change replaces the python-apt dependency with python-debian for version comparison. PyPI rejects packages that reference external Git repositories, and python-apt lacks an official PyPI release. The original python-apt logic remains intact: if the system has python-apt installed, the server defaults to it. Otherwise, it falls back to the comparison logic implemented via the python-debian NativeVersion class.

What Next?

The next release will introduce a standalone CLI utility called debvulns. It mirrors debsecan functionality but surfaces the cleaner, richer vulnerability data already implemented in debsecan-mcp. The code is written, and I will release it once testing is complete.

I also owe a post explaining my rationale for designing a CLI utility alongside the MCP server, and my broader thoughts on CLI vs. MCP workflows. I aim to publish that next week.

10:28

Marketing clerks [Seth's Blog]

Bookkeepers do important work. But a bookkeeper is not the head of accounting.

Marketers are responsible for anything the organization does that touches the market. But many people with ‘marketer’ in their title simply go to meetings and do tasks after the real work of marketing is already done.

Some tech companies have hundreds of people in their marketing department. Most of them are simply playing catch up, because the engineers are making all the powerful and leveraged marketing decisions.

Who is making the difficult decisions on your team? That’s the person who’s actually in charge of marketing.

09:35

Steinar H. Gunderson: Hyperpersonal open source [Planet Debian]

A while back, I got my first subwoofer (a surprisingly nice addition to the movie experience, just like rear speakers were). But I live in an apartment, and I don't want to annoy my neighbors at night (the speaker cone points literally down into the floor, and I have no idea how much my neighbors get to share in my enjoyment). So, what to do?

It turns out my receiver supports a sort-of documented serial protocol; it doesn't have an actual serial port, but you can telnet into it (only one session at a time!) and get the same two-way stream. (It also has a HTTP version which I find less useful.) So this allows me to impose my own policy, and of course, doing it via an existing Home Assistant adapter or something was no fun and also thoroughly frustrating, so I saw it as an opportunity to keep maintaining my low-key Rust skills. (No, no LLM code generation. If I'm going to spend time on this, at least I can learn something myself. I think I asked one for code critique at some point, but I can't remember.)

The policy is roughly: If I'm watching TV after 22:00, then the subwoofer is either turned off (if possible) or turned down -12 dB (the maximum). But if I'm watching a Blu-ray or another input like that, that's presumably a conscious tradeoff I've made and things are left at normal. Everything gets a bit more complicated by the fact that the receiver tends to lose state when doing certain switches, and when it boots, it takes a minute or two before Telnet responds, and when it shuts down, it goes into this weird limbo state where it doesn't respond to anything but the TCP connection seems still up.

And then I figured out I also wanted to dim the display when watching movies (again, only certain inputs), but not for a couple of seconds after making any adjustments. And after doing that, I figured that my access point LED should also be turned off, which happens to be some SNMP writable stuff against the Cisco wireless controller it hangs on.

So, if you have a Denon or Marantz AVR, a Cisco access point on a controller, and my exact preferences about what to do about the subwoofer, then you are free to download and use my software to impose that policy. It is “is distributed in the hope that it will be useful”, as one says. If you have IPv6.

08:49

Thorsten Alteholz: My Debian Activities in May 2026 [Planet Debian]

Debian LTS/ELTS

This was my hundred-forty-third month that I did some work for the Debian LTS initiative, started by Raphael Hertzog at Freexian.

During my allocated time I uploaded or worked on:

  • [DLA 4580-1] exim4 security update to fix one CVE related to remote code execution.
  • [DLA 4591-1] rsync security update to fix five CVEs related to local root privilege escalation.
  • [#1134340] trixie-pu bug for libcoap3 to fix two CVEs in Trixie; the debdiff was confirmed and the upload was accepted to the proposed update queue.
  • [#1126167] bookworm-pu upload of zvbi has been flagged for acceptance
  • [#1126273] bookworm-pu upload of taglib has been flagged for acceptance
  • [#1126370] bookworm-pu upload of libuev has been flagged for acceptance
  • [hplip] upload to sid to fix two CVEs.

This was a rather strange month. The details about the embargoed exim4 issue arrived only after I already went to bed and the embargo lift was 18 hours later. Luckily Stretch was not really affected and the uploads for Bullseye and Buster went out on time.

Something similar happened with the embargoed issue of rsync. The info arrived at 8:00 in the morning and the embargo lift was on 2:00 next morning. From an Europeans point of view, the Australians do have strange time zones. But there is more to this than that. Upstream sent more than 50(!) patches for these five CVEs that needed a backport to Bullseye. As things turned out, there is a regression in the upload to Unstable and investigations are ongoing whether this regression is also available in the backported patches for Trixie, Bookworm and Bullseye. So rsync-updates for Buster and Stretch is in the works, but I am afraid they need some more time.

All good things come by threes. Two critical CVEs of hplip appeared and a new upstream version was released by HP. HP is no longer interested in working with distributions and over time more than 80 patches have been accumulated that need a rebase for a new upstream version. For that reason I avoid this package as much as I can, but two critical CVEs did apply some kind of pressure on the maintainer. So I finally managed to do this update and the latest version of hplip is now in Debian. Nevertheless, this feels good :-). Anyway, it is not over yet. HP does not have a public repository nor do they publish patches for these CVEs. So I am still searching for the correct fixes to backport them to Bullseye, Buster and Stretch. The other distributions have the same problem and a silver lining appears on the horizon.

I also prepared an update of gimp for Buster and Stretch, but due to an accident I only managed to release the corresponing ELA in June. The accident was also the reason for only half a week of FD. Thanks to Daniel who took over.

Debian Printing

This month I uploaded a new upstream versions:

This work is generously funded by Freexian!

Debian Lomiri

This month I continued to work on unifying packaging on Debian and Ubuntu. This makes it easier to work on those packages independent of the used platform.

This work is generously funded by Fre(i)e Software GmbH!

Debian Astro

This month I uploaded a new upstream version or a bugfix version of:

Debian IoT

This month I uploaded a new upstream version or a bugfix version of:

misc

This month I uploaded a new upstream version or a bugfix version of:

I also got rid of gypsy, which no longer makes sense to maintain in Debian, as gpsd is way better.

Saturday, 06 June

19:42

Pluralistic: Criticizing the everything machine (06 Jun 2026) [Pluralistic: Daily links from Cory Doctorow]

->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None -->

Today's links



A medieval one-man band standing on a crate; his head has been replaced with the head of a killer robot. Observing him are a cluster of critics, who are variously gesticulating wildly, peering disapprovingly, looking on in amusement, etc. The background is a phantasmagoric cloudscape.

Criticizing the everything machine (permalink)

"Gish Gallop" is the debating term for an opponent who makes so many claims that "it's impossible to address them in the time available" (it's named for Creationist Duane Gish, who was notorious for this tactic):

https://en.wikipedia.org/wiki/Gish_gallop

I think about the Gish Gallop whenever I'm asked to comment on AI.

Here's a recent example: last week, I had a pre-interview call with a radio producer who wanted me to come on a 13-minute segment to discusses "whether there's a problem with AI governance?"

I asked what the show meant by that: was it whether regulation of AI in commercial or public sector decision-making needed more oversight? Was it that the siting and provisioning of data-centers needed more democratic accountability? Was it that workers deserved more of a say in AI's impact on labor markets? Was it that customers and/or audiences should be able to opt out of AI customer service and AI slop? Was it about whether we needed some kind of system to prevent "runaway AI," in the event that we teach so many words to the word-guessing program that it wakes up, becomes God, and turns us all into paperclips?

"Oh," the producer said, "all of that."

In 13 minutes.

You see the problem, right? The AI industry has made so many claims about its past, present and future that it's almost impossible to have a reasonable critical conversation about it:

https://bsky.app/profile/petermiles.eurosky.social/post/3mnffjqczjs2t

Shortly after I did the radio show, a newspaper editor who'd heard my segment got in touch to ask me if I'd write an 800-word op-ed about the subject, and also, could I address claims that "AI is the next Industrial Revolution?"

In 800 words:

https://www.telegraph.co.uk/news/2026/06/04/ai-is-the-greatest-money-wasting-scheme-humanity-has-ever-i/

I keep finding myself on stages or panels where an AI-struck person says something like, "AI is the next industrial revolution. It will change everything we do. It will let anyone create important works of art. It will cure cancer. It will take us to space. It will solve the climate crisis."

Or sometimes it's an AI critic, but that person's criticism is really more "criti-hype," which is when you accept tech industry hype claims at face value, and then criticize them rather than questioning them:

https://peoples-things.ghost.io/youre-doing-it-wrong-notes-on-criticism-and-technology-hype/

AI criti-hype might ask what we'll do once AI takes all our jobs, or what we'll do when AI replaces the government or teachers or doctors, or what we'll do when AI can bypass our critical faculties and brainwash us or drive us all mad.

What do you say to that? I usually start by talking about whether there's any economic basis for keeping the AI servers running. AI is – by far – the money-losingest venture in human history, and it's practically impossible to overstate just how bad the AI business is. Not only does AI have terrible unit economics, those unit economics are getting worse over time:

https://pluralistic.net/2026/05/26/the-ai-will-continue/#until-morale-improves

AI's happiest customers cite cost-benefit calculations that depend on truly unimaginable subsidies from the AI companies, who are basically selling $100 bills for $5 apiece. It would be pretty amazing if you couldn't find people who'd extol the virtues of this arrangement. But when AI companies try to raise the price of those $100 bills to, say, $20 apiece, those ecstatic customers fly into a rage and start loudly proclaiming that AI is so inefficient that they will lose money on this arrangement:

https://www.msn.com/en-us/money/markets/uber-ceo-says-other-execs-are-lying-about-ai-they-say-it-ll-be-fine-publicly-but-privately-admit-millions-of-jobs-are-gone/ar-AA1Z9QMv

Now, it shouldn't fall to me, a card-carrying member of the Democratic Socialists of America, to point out that capitalist enterprises require profits to be sustainable. You can't keep a business afloat by selling $100 bills for $5, nor for $20. You can't even make a profit selling $100 bills for $100 apiece! For a company to succeed, it needs to take in more than it expends.

AI is a money-furnace, and AI hustlers are clearly on the hunt for a way to force all of us to feed every dime we've got to it. Elon Musk's (now scuttled) gambit to make every pension saver in America bail out Grok (and Twitter, but at a mere $44b, the losses from Twitter are dwarfed by the titanic losses from Grok) was the most ambitious and shameless population-scale bag-holder scheme, but it's not the only one:

https://www.reuters.com/business/finance/sp-global-keeps-fast-entry-proposal-unchanged-spacex-listing-looms-2026-06-04/

So before we ask about the capabilities AI will acquire in the future, we should at least give some consideration to the question of whether anyone will be willing to fund the development of those capabilities, and if so, where the money would come from? Likewise, before we ask whether AI can perform adequately in a job, we should at least consider the possibility that the company that sells that AI tool will be bankrupt in a year or two. When we fight about data-center buildout, we mostly talk about the (considerable) environmental downsides to them – but what about the question of what we will do with these data-centers after their owners go bankrupt, possibly even before they can be provisioned with electricity? How many laser-tag arenas do we actually need?

This is just one example of the questions that you could spend days unpacking, which make many of the other questions about AI a little silly. Like, even if you think there are limitless returns to scale for creating new AI capabilities, which means that if we keep the money-furnace burning it's only a matter of time until it powers a cure for cancer and the end of the climate emergency, how much money do we need to shovel into the furnace before that happens, and where will it come from? There are plenty of cancer researchers who have promising approaches they haven't been able to pursue due to funding shortfalls.

Unless there's some way to estimate how much money we have to give to AI companies before they cure cancer, we should at least consider the possibility that the true sum is "more money than exists now and that will ever exist." We should also consider that whatever benefits to cancer research that AI might deliver could come with a higher price-tag than the promising cancer research we're dropping because we can't find far more modest sums.

Likewise, it may be that the amount of CO2 that AI will generate atmosphere before it "solves climate change" will render Earth permanently unfit for humans, consuming the only habitable planet capable of sustaining human life in the known universe. I mean, I suppose that's one way to "solve" climate change, but it's a pretty drastic solution.

My next book (out later this month) is The Reverse Centaur's Guide to Life After AI. I wrote it because I was frustrated by other people demanding that I talk to them about AI, and then handing me 800 words or 13 minutes to address fifty nebulous, poorly supported claims about AI:

https://us.macmillan.com/books/9780374621568/thereversecentaursguidetolifeafterai/

Shortly after writing it, I turned it into a lecture:

https://pluralistic.net/2025/12/05/pop-that-bubble/#u-washington

Now that I'm about to go out on the road with the book, I find myself frustrated anew by the need to try and pull together a compact way to address the broad, incoherent claims the industry uses to keep its bubble inflated and the money furnaces roaring. The series of essays I've developed here on Pluralistic are part of that effort:

https://pluralistic.net/2026/05/27/unnecessariat/#rubbuts-stole-my-jerb

But it occurred to me that this whole enterprise of making sense of AI needs to be framed in the context of the messiness of AI itself, and AI boosters' overwhelming, promiscuous and disjointed Gish Gallop.


Hey look at this (permalink)



A shelf of leatherbound history books with a gilt-stamped series title, 'The World's Famous Events.'

Object permanence (permalink)

#20yrsago UK Parliament report damns DRM, calls for limits https://web.archive.org/web/20060615115510/http://www.openrightsgroup.org/2006/06/05/launch-of-the-apig-report-on-drm/

#20yrsago Colbert’s Knox College commencement speech https://web.archive.org/web/20111228135413/http://departments.knox.edu/newsarchive/news_events/2006/x12547.html

#15yrsago Counterfeiting can be good for luxury goods sales https://web.archive.org/web/20110602061646/http://www.slate.com/id/2294927/

#15yrsago HOWTO make a Joule Thief and get all the power you’ve paid for https://www.instructables.com/Make-a-Joule-Thief/

#15yrsago School suspends student for refusing to remove personal animation from YouTube, threatens other students for petitioning on his behalf https://web.archive.org/web/20110603041200/https://www.theglobeandmail.com/news/national/toronto/student-cites-freedom-of-speech-after-suspension-for-online-videos/article2043954/

#5yrsago Recommendation engines and "lean-back" media https://pluralistic.net/2021/06/05/lean-back/#lean-forward


Upcoming appearances (permalink)

A photo of me onstage, giving a speech, pounding the podium.



A screenshot of me at my desk, doing a livecast.

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "The Reverse-Centaur's Guide to AI," a short book about being a better AI critic, Farrar, Straus and Giroux, June 2026 (https://us.macmillan.com/books/9780374621568/thereversecentaursguidetolifeafterai/)
  • "Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026

  • "The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027

  • "Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027

  • "The Memex Method," Farrar, Straus, Giroux, 2027



Colophon (permalink)

Today's top sources:

Currently writing: "The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Third draft completed. Submitted to editor.

  • "The Reverse Centaur's Guide to AI," a short book for Farrar, Straus and Giroux about being an effective AI critic. LEGAL REVIEW AND COPYEDIT COMPLETE.
  • "The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.

  • A Little Brother short story about DIY insulin PLANNING


This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.

https://creativecommons.org/licenses/by/4.0/

Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.


How to get Pluralistic:

Blog (no ads, tracking, or data-collection):

Pluralistic.net

Newsletter (no ads, tracking, or data-collection):

https://pluralistic.net/plura-list

Mastodon (no ads, tracking, or data-collection):

https://mamot.fr/@pluralistic

Bluesky (no ads, possible tracking and data-collection):

https://bsky.app/profile/doctorow.pluralistic.net

Medium (no ads, paywalled):

https://doctorow.medium.com/

Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):

https://mostlysignssomeportents.tumblr.com/tagged/pluralistic

"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla

READ CAREFULLY: By reading this, you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.

ISSN: 3066-764X

17:42

Link [Scripting News]

Walt Frazier: "The regular season is where you make your name, but the postseason is where you make your fame."

17:00

Various & Sundry 6/6/26 [Whatever]

It’s a bit of a stormy day here. Let’s see what’s going on elsewhere.

The “K”-shaped economy comes for laptops: There’s been a trade show this week called Computex (there seems to be a big event in the tech field every other week or so), and Michael Crider of PC Week notes that at the show, the new laptops come in two flavors: The really cheap ones, designed to compete with MacBook Neo, which has completely swamped the low-end of the laptop market, and the really expensive ones, which most people will have to think twice about buying. The middle ground laptop for the middle-class buyer? It’s just not there anymore. This is evidence, Crider argues, of a the “K-shaped” economy at work, the economy where the upper 20% of consumers are doing just fine, and the bottom 80% of consumers are… not.

A couple of things about this: One, you can still get middle-ground laptops in the real world (here’s an Acer laptop with a 14-inch screen, 32GB of memory and 1 TB of storage, plus a couple of goodies, for under $900), although they mostly have to have been made before the RAM crunch brought on by “AI” companies buying all the memory in the world. Two, that self-same RAM crunch is wreaking havoc on manufacturers at the moment, precisely in that middle ground. It makes sense for them to focus on the lower end (where they don’t have to spend too much for RAM) and the higher end (where the consumer is less price-sensitive), then in the middle, where they watch their margins shrink to nothing.

I’m not disagreeing with Crider’s thought about the “K-shaped” economy, because I think it’s real: it’s pretty evident to me that the economy sucks for everyone but the people who don’t have to worry about prices. I also think, in computing spaces, the hollowing out of the middle ground is exacerbated by other factors, particularly the “AI” RAM crunch, which is not (directly) about that K-shape. It still sucks if you’re in the market for a computer.

Predictions on the World Cup thingy I think is about to start: On one hand I’m being a little obnoxious, I know what the World Cup is and what’s going on with it, on the other hand I am also not super-engaged with it, partly because I don’t tend to follow sports in general, partly because I think FIFA is one of the most corrupt organizations in the world, which lessens my interest in the World Cup considerably, and partly because this year is the wrong year to have the US co-hosting, for several reasons.

Nevertheless if you have an interest in the World Cup, I hope you enjoy it. Also I have no idea who is going to win it, but I don’t imagine it will be the US. I’m okay with this.

Screwworm back in the US after 60 years, which means your beef, which is already expensive, is about to become even more so. Does this have anything to do with the absolutely idiotic decision from DOGE to cut screwworm monitoring and prevention out of the budget? Well, at the very least, it certainly didn’t help. Is this all hurting Americans while benefiting others? Oh, probably. And while I’m sure there are some people who might be gleeful that the point of pain is that the moment most centered on those who likely brought Trump back into power, anyone who eats beef is next, so don’t get too smug about it, if you are of a mind to. Also, if you were ever planning to reduce the amount of red meat in your diet, here’s a good reason to get on it.

The new Taylor Swift song for Toy Story 5: It’s perfectly good! There have been better songs associated with the Toy Story movies, but there’s nothing at all wrong with this one, and I’m sure it will work perfectly well in the movie. The going line with this one is that this is Swift’s return to country, which, okay, sure, let’s go with that. I’m already laying good odds that this gets Swift an Oscar early next year, and I don’t imagine that will be the worst thing in the world. There are a lot worse songs to have garnered that particular bauble. Enjoy.

— JS

16:07

Link [Scripting News]

The Knicks won again last night. They're now up 2-0, both games on the road. This has blown my sense of reality. This Knicks team bears no resemblance to what I think of as the Knicks. Hard to concentrate. Will Trump try to put his name of Madison Square Garden.

10:14

Real artists… [Seth's Blog]

Real artists do all the painting themselves, not like Rembrandt

Real artists use brushes, not technology like Cartier-Bresson

Real writers write it out by hand, not like Jack Kerouac

Real musicians record it live, not like Steely Dan

Real singers sing without processing, not like Kanye West and Daft Punk

Real directors do the prep without AI, not like Martin Scorsese

It turns out that real artists have always used technology. What they have in common is intent, responsibility, and the ability to create a feeling in the audience.

“Here, I made this.”

04:49

A Shocking Display [Penny Arcade]

Having run credits on 007 First Light - and I don't think there's another ending in here somewhere - my feeling is that they stuck the landing and that I want to know what's next in an unreasonable amount of time. Sometime late next week, perhaps. No? That's probably not going to happen? Alright. Well, I had to try.

03:14

on saturday. on purpose. [WIL WHEATON dot NET]

“Still punk as fuck,” I whisper to myself, as I slide new Orthotic insoles into my Converse. As long as I’m down there, I get them on my feet and tie them. I use this double loop thing my kid taught me when he was in middle school. I’m sure there’s an easier way to keep my shoes tied, but this way has never failed me. And it keeps me connected to my kid, every day.

I exhaled, and stood up with a sort of braying grunt that I have taken to calling My Old1.

“Still punk as fuck.”

Shoes on, laces tied, standing at my full height, I head out to take a walk. When I’m up around the corner and about halfway down the block, I realize that I can really — I mean really — feel everything under my feet. Almost immediately, I can feel a familiar discomfort in my left calf and then my right hip. For the rest of my abruptly abbreviated walk, I think about something on the Orthotic insole package about how the fancy Orthotic inserts can only do so much, so take good care of your shoes like a good consumer.

I’m sorry. I struggle to take care of myself, and you want me to take care of my shoes? How about you bring me a Pepsi instead?

I scowl a lot more than I usually do, as a limp home.

“That was fast,” Anne says when I come into the house.

I tell her about how I hurt my Old2, and how I have been forced to accept that it’s time to buy new shoes. After I work out the cramp with my good friends the foam roller and the lacrosse ball, I spend the next quarter of an hour looking for the least worst way to get some new shoes. After a number of false starts online and a refusal to order from Amazon if there is any alternative, I conclude that the least worst way is to go to the mall. On Saturday. On purpose.

I ask Anne. “Hey, want to go to the mall?”

“On Saturday? On purpose?”

“It’s the least worst way for me to get new shoes.”

“But the mall? On Saturday? On purpose? You need new shoes that urgently?”

I fold my arms.”You ask a lotta questions. What are you, a cop? You have to tell me if you’re a cop.”

She smirks. “Okay. Come with me when I run some errands and we can go to the mall on the way home.”

“Awesome.”

Montage!

  • The beauty supply.
  • A red light.
  • The bank.
  • A red light.
  • A busy street.
  • A quiet, tree-lined street.
  • Some asshole who makes us miss the goddamn left turn signal because they’re looking at their fucking phone.
  • Another quiet street, bucolic beneath a canopy of sycamores. Kids do hopscotch on the sidewalk.
  • The store.
  • Me, carrying an hilarious amount of toilet paper to the car.
  • Me, struggling to fit the hilarious amount of toiler paper into the car, giggling like an idiot.
  • Blowing through a yellow light, we both do a mouth horn version of the General Lee’s horn.3
  • The post office.
  • The mall.

“I think I’m going to wait in the car while you go get your shoes,” Anne says in the tired voice we’ve both been using more often than not, lately.

“Yeah, that was a hell of a montage.”

“Seriously. Get off your goddamn phone, dude.”

“That’s what I’m saying. I’ll be right back. Love you.”

“Love you too.”

I walk down the ramp, past the future pop-up Backrooms installation that was Sears for as long as I could remember, until it wasn’t, and finally into the mall.

I’m striding down an empty corridor and past the bathrooms, toward the main shopping spur, next to Macy’s. When was I last here? I try to do the math, but I’ve never been good at doing the math. I settle on: I haven’t been here in a long time. I’m not even sure I’ve been here this year. There’s been no reason to come here.

But back in the 20th century, this place was real close to a second home for me and a lot of my friends. We saw movies here, we had Mongolian Barbecue here, we spent hours in the quiet safety of the bookstore. I bought my first dishwasher at the Sears.

Sometime in the last two decades, the Burbank Town Center began its audition for a small but impactful role in the touring company of Abandoned Malls of America. It nearly succeeded. During the callbacks and producer sessions, it was home to two different Halloween stores. In a moment of desperation during early eliminations, it added a caviar vending machine on the second floor, suspiciously close to the Victoria’s Secret, around Valentine’s Day. The lower level spent several years as a race track for those weird fur-covered animal driving things. Remember them? They’re still around, but I’m getting ahead of myself.

I’m about halfway down the corridor when I notice the faint white noise of … it can’t be. No. This mall is dead.

…Isn’t it?

It is not. I know, before I turn the corner, that this mall is full of people. And holy shit is it full of people. Rumors of this mall’s death have been greatly exaggerated. No wonder it didn’t make the tour. I pat my pockets for my phone, so I can share this unexpected news with Anne. I find out that I left my phone in the car. Aw, shit.

No! Wait! Hey, cool. I left my phone in the car, so now I can be, like, fully present here and take in all of this … life and business and activity and … mall-y goodness. Maybe I’ll write about it in my blog, like I did in the Before Times. When it felt like it mattered.

So I look around me and, yeah, there aren’t nearly as many stores as there used to be, but the stores I see are legit. They are not the Teemu version of a Wish.com version of a stall at an indoor swap meet, like last time I was here. I see lots of stores I recognize, and just tons of people.

“Hey! Hey! Mister! Hey! DUDE!”

I look back toward the source of this tiny voice, and see that I am between a kid who is riding one of those fur-covered animal driving things and his destination. I briefly wonder why he doesn’t just go around me, but there are so many shoppers, he can’t.

“Sorry, buddy,” I step back and feel bad for this kid, who was probably looking forward to a breakneck, 5 mile-per-hour tear around the mall, but has instead found himself in stop-and-go human-to-fur-covered-animal-driving-thing traffic. He creeps past me and I suppress a laugh when he gives me the stinkeye. I think but do not say, “Someday you’ll outgrow it, kid! Someday you’ll want to drive your fur-covered animal driving thing, and the teenager at the kiosk will tell you that you’re too tall. Or too old. Or maybe they got a crisp fiver from an old man with a grudge you foolishly gave the stinkeye in ought ’26. I don’t know what or when it will be, kid, but it’s coming for you. It comes for us all.”

There are two stores in the mall that might have the shoes I’m looking for. Against everything I believe in, I look at the mall directory to find out where they are located. I could do it my way, but Anne’s waiting for me and she doesn’t deserve that.

Through the food court, inhaling the melange of fryer oil, spices, frozen mysteries. The flip book of memories: frozen yogurt and hot dog on a stick and lemonade and so many bad choices. That glorious time when bad choices didn’t matter, time that ended as abruptly and unexpectedly as the last time you got to drive the fur-covered animal driving thing.

Up the escalator and past the movie theater.4 Past a trading card shop, the Bath and Body Works that must be whatever the retail incarnation of a lich is at this point, and into shoe store number one.

There is a person at the register, having an issue with the payment thing. I pick a spot at a distance that is respectful of their space while unmistakably saying I’m in line so don’t even motherfucker because I will cut you.

I don’t have my phone, and I love that. I love that I am deliberately and enthusiastically gulping and devouring every detail I possibly can, choosing to be present in that moment, in that place. I look around so I can paint the picture later (which is now) in a series of observations:

There are a lot of socks that you buy one or two pair at a time. I don’t see any whimsical nylon socks with dinosaurs and puns, but it looks like tubesocks with rings are making a comeback.

Checkered Vans never go out of style, and that gives me comfort.

I will never understand Crocs. I will never understand spending real money to carry a backpack that looks like a novelty-sized Croc, thus announcing to the world HEY EVERYONE I LOVE CROCS.

I look at the Doc Martens and cry out internally for the two dozen pair of vintage leather Docs I gave away twenty years ago. I hope, as I always do when encountering this painful memory, that they went to a good home. I like to imagine a baby punk grabbing them for ten bucks at a thrift shop, and not a bougie trust fund poser paying 500 for them at Buffalo Exchange.

The girl ahead of me completes her transaction and walks past me. I’m too lost in thought about my old Docs to capture a single detail of her existence. This will be weird to me when I write it down, later.

“Can I help you?” The woman at the registeris giving the quiet competence and existential exhaustion of Manager of this store in this mall in this year of 2026.

“Yeah, I’m looking for black Converse low tops, men’s size 10. Please.”

“Let me look.”

“Thank you.”

She taps a few keys, frowns. Taps a few more. I notice that the store soundtrack has begun playing Back to Life.

“Wow, I don’t think I’ve heard this since the 90s,” I say.

She does not look up. “I think this was the 80s.”

“Yeah, 1988, right?” I say5.

“Mmm-hmmmm.”

Before I can stop it, something taps the well of sadness I carry around these days. I mutter, “1988. That was such a good year. Damn. I am very old.”

At this, she looks up at me. For just a second, we stand there and look at each other in Generation X.

“I feel you,” she says. She goes back to the computer. “Yes. Let me get them for you.” She walks into the back.

I think about the mall. There’s a feeling that I only get in a mall that I can’t quantify or describe but I know that other Olds will understand what “being in the mall” feels like. The smells and sounds of the water features and indoor plants. This is a time that is never coming back, even if every mall suddenly burst back into life. Because it’s not the stores or the band performances in the center court or the celebrity appearing this afternoon at J.C. Penny’s from 2-4pm. It’s about that moment in time when we were young and this place allowed us to be who we were, while we were all figuring out what that meant. It was a place to try out our ideas of being an adult, a place to be free of our parents and teachers, where we really were allowed to run free. I enjoy telling jokes about getting older, but to be totally honest, I really do think it’s great. I love my life and the people in it, even though it is all happening in this chamber of horrors none of us can escape. I’ve worked hard to earn this, and I’m working even harder to protect it. I guess, in a metaphorical way, this mall experience reflects some of that.

While all of this runs through my head, simultaneously nostalgic and solastalgic, I bop my head and quietly sing along. “however do you want me …. however do you need me…”

A pair of kids walk into the store and I try to become invisible.

Before I can find out if I am successful or not, she comes back with my shoes and I pay with my watch on the first try, for the first time ever6. I walk back through the mall and exit through Macy’s. I’m pretty sure at least some of the perfume and cologne cloud I swam through is still in my hair and my raccoon wounds.

Down the stairs and across the aisle, up the ramp … shit. I need to go down one level.

Down the ramp to the other stairs, down those stairs, wait for the Prius to back out hello, sir, I am a pedestrian standing right here and I thought you had a backup camera no worries let me step out of your way. Wouldn’t it be an hilarious callback if the kid from the fur-covered animal driving thing was in a car seat in the back, and I gave him the stinkeye this time? It wasn’t, but we could pretend it happened if we wanted to inject a little more humor and maybe pay off what seemed like maybe an unimportant encounter earlier in our story.

I hop into the car.

“Hey! You got your shoes?”

I hold up my bag. “Yep. Guess who paid with his watch on the first try, for the first time ever?”

She starts the car and puts it in reverse. “The guy ahead of you?”

“Ha. Actually, it was a girl and — AND — she was probably in her 30s (or maybe a teenager I don’t know everyone under 40 looks like they are a baby to me and why would I even ask in the first place like a creep) and she couldn’t get it to work at all. So.”

“Wow.”

“I know, right?”

I take my phone out of the cup holder where I left it. I turn it over and look at the Misfits sticker on the back, then flip it around and catch my reflection in the unlit screen. I hold that for a second, then put it into my pocket without waking it up.

“And I think … I think I may have found something to write. It isn’t really about anything, I don’t think, so it can’t be a story, but it can probably be a blog post.”

She turns on her left signal and pulls out of the garage. “Hey, that’s awesome!”

“Yeah,” I say, “It isn’t anything important, but I think it will be fun to write, and I think that’s a kind of self-care.”

“I’m really happy for you,” she says.

“Yeah. I’m happy for me, too.”

A postscript for the reader: I did have a lot of fun writing this. And it was self-care. I split it up over a couple of days, when I wasn’t working. I’m glad I made the time to do it. I’m glad I remembered, “write it badly or it won’t be written”, so I would keep going. Not that it’s bad writing (maybe it is, I don’t know), but I gave myself permission to write badly (in this case, not clearly about one thing, at least not on purpose), so that I could write, well, something.


I’m glad you’re here. If you’d like to get my posts delivered to your email, here’s the thingy:

  1. Not to be confused with my Old, as in “ow, I hurt my Old”. ↩
  2. See? Different, but still applicable. ↩
  3. Yes, fuck the Confederacy-normalizing Dukes of Hazzard. Fuck it all forever. It is deeply problematic. It’s also a huge part of my childhood that I’m not willing to Eternal Sunshine out of my memories. ↩
  4. I’m still pretty sure my TV is bigger than their average screen, and I’m not saying that to brag about my TV. ↩
  5. Like, I know that it was released in 1988 but what I meant was, I’m pretty sure the last time I heard it was in the 90s but she doesn’t care and I can just be quiet. ↩
  6. I never feel as stupid, incompetent, and Old Man Wheaton as I do when I try to use my watch or my phone to pay for things. I swear to god, every point of sale is different, on purpose, to make me — yes, me specifically — feel dumb. ↩

02:07

Me and Brandon Sanderson in Conversation [Whatever]

In April I went town to the Atlanta area to chat with Brandon Sanderson, and we talked about writing, of course, but also about kids, about our early days in the industry and how it was I became Brandon’s official nemesis. It’s an hour-long chat including Q&A from the audience, and it’s now up on YouTube, which means I can embed it here for you. I think it’s pretty clear we were having a lot of fun chatting. I hope you’ll have fun watching us do our thing.

— JS

01:07

GNUtrition 0.33 [Planet GNU]

GNUtrition 0.33 is now released. This marks the first release of GNUtrition since 2012, approximately 14 years ago!

GNUtrition is free nutrition analysis software. The USDA Food and Nutrient Database for Dietary Studies (FNDDS) is used as the source of food nutrient information.

This release is a complete rewrite of GNUtrition in C rather than Python 2 with a new GTK 3 interface replacing the old GTK 2 one. The Nutrient Database of Standard Reference, which stopped getting updated in 2018, was replaced with the USDA Food and Nutrition Database for Dietary Studies. With help from some test volunteers, the build and installation process was better streamlined to resolve critical issues and difficulties so that GNUtrition can be a better program overall.

Considering the time between releases, GNUtrition currently is not available on OS package repositories (as far as I am aware). If you package software for your operating system's package manager, it would be very helpful if you could start packaging GNUtrition so that it may be even more easily used by people on said systems. If you don't, you may still request to those who do to start including GNUtrition.

Thank you to everyone who tested/used GNUtrition 0.33's release candidates and provided meaningful feedback on its functionality, design, and so on. I would also like to especially thank Jason Self for providing us with the C rewrite in the first place.

More information about GNUtrition may be found on its home page at http://gnu.org/so ... tware/gnutrition/. This release can be obtained from the ftp.gnu.org server at one of the following:

ftp://ftp.gnu.o ... gnu/gnutrition/
http://ftp.gnu.or ... g/gnu/gnutrition/
https://ftp.gnu.o ... g/gnu/gnutrition/

The FTP mirror list is available at https://gnu.or ... order/ftp.html, and https://ftpmirror ... u.org/gnutrition/ will automatically redirect you to a nearby mirror.

Please report any problems you experience to the GNUtrition bug reports mailing list: bug-gnutrition@gnu.org (https://lists.gnu ... fo/bug-gnutrition).

Happy hacking and calorie counting!!

00:07

The back cover of C++: The Programming Language also raises questions not answered by the front cover [The Old New Thing]

A little while ago, we considered how the cover of the book C++: The Programming Language raises questions not answered by the cover, since the cover illustration for a book putatively about the C++ programming language shows code written in JavaScript.¹ But there’s also a question raised by the back cover.

According to the blurb for the book,

The topics included in it are of utmost significance and are bound to provide incredible insights to students. Some of the diverse topics covered in this text address the varied branches that fall under this category. Those in search of information to further their knowledge will be greatly assisted by this textbook.

This sounds like a book report written by a student who didn’t read the book! Those sentences could be used to describe pretty much any textbook.

Indeed, I found nearly identical sentences in the blurb for Casting Handbook (Hannah Wells, editor).

The topics included in this book on casting are of utmost significance and bound to provide incredible insights to readers. Some of the diverse topics covered in this book address the varied branches that fall under this category. It will serve as a valuable source of reference for graduate and post graduate students.

And in Food Industry: Processes and Technologies (Kaden Hunt, editor):

This book is compiled in such a manner, that it will provide in-depth knowledge about the theory and practice of the workings of food industry. Some of the diverse topics covered in this text address the varied branches that fall under this category. This textbook, with its detailed analyses and data, will prove immensely beneficial to professionals and students involved in this area at various levels.

And in Nutrition and Metabolism: Processes and Technologies (Kaden Hunt, editor):

This book provides comprehensive insights into the field of nutrition and metabolism. It provides deep insights about this field. Some of the diverse topics covered in this text address the varied branches that fall under this category. Such selected concepts that redefine this subject have been presented in it. This book aims to shed light on some of the unexplored aspects of this field. It is meant for students who are looking for an elaborate reference text on nutrition and metabolism.

One more example: Material Science and Engineering (Emilio McMahon, editor)

The book aims to shed light on some of the unexplored aspects of materials science and engineering. It describes in detail the various concepts and theories of this field. The topics included in it are of utmost significance and bound to provide incredible insights to students. Some of the diverse topics covered in this book address the varied branches that fall under this category. This textbook is an essential guide for both graduates and post-graduates in this discipline.

The common thread is that all of these books are published by Larson and Keller. I guess they can’t be bothered to spend time crafting a blurb that suits the book, so they just use the same blurb template for all of their books.

¹ Rory Jaffe found that the book cover image it is an Alamy stock photo from 2013 with the title “Program code on a monitor.”

The post The back cover of <I>C++: The Programming Language</I> also raises questions not answered by the front cover appeared first on The Old New Thing.

Rotation revisited: Avoiding having to calculate the gcd when doing cycle decomposition [The Old New Thing]

Last time, we looked at how clang’s libcxx implementation of std::rotate uses cycle decomposition to minimize the number of swaps. Doing so requires calculating the greatest common divisor, but I noted that the OpenJDK implementation of the java standard library uses a trick to avoid doing the gcd calculation.

The trick is realizing that the total number of elements is equal to the sum of the lengths of each of its cycles, and each of the initial elements belongs to a different cycle. Therefore, we can just keep rotating elements until the number of elements rotated is equal to the total. We don’t have to precalculate the number of cycles; we just let the counter tell us when we’re done.

auto a = std::distance(first, mid); // number of "A" elements
auto n = std::distance(first, last); // total elements
auto count = 0;
auto k = 0;

while (count < n) {
    // Rotate the elements in the cycle starting at k
    auto save = std::move(first[k]);
    auto i, next = k;
    while (i = next, next = (i + a) % n, next != k) {
        first[i] = std::move(first[next]);
        ++count;
    }
    first[i] = std::move(save);
    ++count;
}

The post Rotation revisited: Avoiding having to calculate the gcd when doing cycle decomposition appeared first on The Old New Thing.

Friday, 05 June

22:07

GNU direvent version 5.5 [Planet GNU]

Version 5.5 of GNU direvent is available for downloads. New in this version:

  • All subprocesses are terminated before exit
  • New configuration statement: shutdown-timeout


See the NEWS file for more details.

21:56

Pluralistic: Refining humanity (05 Jun 2026) [Pluralistic: Daily links from Cory Doctorow]

->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None -->

Today's links



A 1960s classroom. A teacher in a blue dress stands at a blackboard in the background; in the foreground, a child works at a desk. The child's head has been replaced with the head of a killer robot. The blackboard is covered in printed circuits.

Refining humanity (permalink)

One of the best ways to evaluate your own understanding of a subject is to attempt to explain it to someone else. Through explaining things, we discover how much of the "totally obvious" world is actually full of ambiguity, mystery and contradiction.

There's a great bit in Rowan Atkinson's historical sitcom Blackadder that illustrates this principle. In "Ink and Incapability" Blackadder and friends have accidentally burned the only copy of Samuel Johnson's original dictionary of the English language. To cover up their mistake, they decide that they will recreate the dictionary themselves. However, they founder on the first word they try to define, "A":

Blackadder: Let's start at the beginning, shall we? First: 'A.' How would you define 'A'?

Prince George: Ohh…'A' (continues this in background). Oh, I love this! I love this! Quizzies! Erm, hang on, it’s coming. Ooh, crikey, erm, oh yes, I’ve got it!

B: What?

PG: Well, it doesn’t really mean anything, does it?

B: Good. So we're well on the way, then. "'A'; impersonal pronoun; doesn't really mean anything."

I mean, what does "A" mean? The Oxford English Dictionary has more than a dozen definitions, and just the first one runs to more than 1,500 words:

https://archive.org/details/the-oxford-english-dictionary-all-volumes_202208/The%20Oxford%20English%20Dictionary%20Volume%201%20-%20A%20to%20B/page/n25/mode/2up

Now, normal life involves a lot of explaining things to other people. You have to explain your problems to customer service reps, who have to explain why they can't solve those problems to you. You need to explain to your loved ones why you want to leave your toothbrush in the shower, and they have to explain why they hate having your toothbrush in the shower. These explanation-exchanges teach you as much as they teach the person you're locked in dialog with. The reasons for leaving your toothbrush in the shower may seem totally obvious to you, and your partner's inability to understand this reveals the assumptions you've never even considered.

For the past four decades, an increasing proportion of the population have spent an increasing proportion of their lives explaining things to machines that have no assumptions or shared context: computers. What we call "programming a computer" is really "breaking down a thing that seems obvious to you into increasingly simple instructions that will be followed to the letter."

Computers are like the genies of legend, bloody-minded literalists who will do exactly what you say, in the way that is perversely furthest from what you mean. To get a computer to do anything, you must first understand it to a degree that far exceeds the understanding needed to explain something to any other human, even a small child.

To take just one example: yesterday, I was on a plane, and the seatback video started cycling through its video-on-demand offerings. All of the movie titles that began with "the" were rewritten to put "the" at the end of the title (for example, "The Sting" was written as "Sting, The"). It's obvious why the system's designer had done this: we expect to find movies whose titles begin with "The" alphabetized under their second word ("The Sting" should appear between "Star Wars" and "Story of a Love Affair"; not between "The Godfather" and "The Untouchables").

I remember when I learned this from my elementary school's teacher-librarian, when I was seven and my class got a tutorial on the school library's card catalog. The librarian explained this principle to us in a matter of minutes, as part of a longer set of instructions, and still, it stuck with me forever.

But here we are, 48 years later, and we still haven't standardized a way to get computers to grasp this foundational principle of alphabetization. Many different databases handle this, to be sure, but it's so inconsistent across so many platforms that someone at the head-end of the video distribution system that feeds American Airlines' VOD system decided, "Fuck it, I'm just gonna put the 'The' at the end of these titles."

Computers are stupid, in other words, which means that the people who program them have to have smarts enough for both of them. Unfortunately for our entire species and civilization, the software industry has historically valued skill at writing efficient and reliable software over writing software that adequately reflects reality. There is an entire genre of lists that illustrate the problem with this; the "falsehoods programmers believe" lists:

https://github.com/kdeldycke/awesome-falsehood

From "names of people" and "street addresses"; from "prices" to "time"; from "email addresses" to "phone numbers"; the "awesome falsehoods" lists are awesome because they reveal how much subtlety and complexity is lurking in these seemingly simple and intuitive concepts. This subtlety and complexity might never emerge through the process of trying to teach a person about them, but when you try to teach a computer about them, you have to confront them in all their awesome fuggliness.

That's because humans have context, agency and flexibility. Sure, the person who designs a form with a blank for "name" might never have met a Malagasy person whose first name is Randriamananjararadofabesata, but in the pre-digital world, when Madagascar Slim met a public official who had to transcribe his name onto a paper form, that official could simply draw an arrow in the margin next to the "name" blank, turn the form over, and write out all 28 characters on the reverse:

https://en.wikipedia.org/wiki/Madagascar_Slim

Computers can't do this. If the programmer doesn't know about Malagasy first names, the computer doesn't know about them either, and the only person who can "teach" the computer about these names is a programmer with access to the code for the database, who has to manually alter the code, compile it, and distribute it to everyone who uses it.

This is partly why digitization has been accompanied by a rise in people asserting that they exist on spectrums rather than in binaries. There were always people whose names, genders, races, and other biographic "immutables" changed, or failed to fit within the blanks on the forms. When those people's realities ran up against failures in the system's abstractions, they could petition a bureaucrat to turn the paper over and write an explanatory note, or to write really small to fill in a blank:

https://pluralistic.net/2023/02/02/nonbinary-families/#red-envelopes

Getting a human official to turn the paper over and write something that didn't fit in the blank is a personal challenge. It requires that a subject convince the person who controls the form to make an exception. This isn't always easy, but officials on the front lines necessarily deal with reality, and they can't get their jobs done unless they're capable of interpreting the necessarily incomplete procedures they operate under to fit things as they really are.

But a computer doesn't have any agency or context or flexibility. If the computer says your name isn't valid, you can't argue the computer into accepting it. The only way to get a digital world to acknowledge your existence is to campaign for systemic change. A trans person might (with great difficulty, to be sure) convince the regional registrar to white-out an old X on one "gender" box and mark a new X in the other box. But the only way to make that change in a software system that has been programmed to treat the "gender" field as immutable is to change society itself.

In this way, computers are machines for teaching us what we don't know about ourselves. They require that we interrogate and faithfully recreate our personal tacit knowledge, and they require that our societies interrogate their tacit presumptions as well. When you are forced to turn your tacit knowledge into explicit knowledge, you're also forced to confront how many broken assumptions lurk inside your reasoning. At best, it's a clarifying process.

Computers don't just clarify what we know and how we organize our society: they also clarify what we are. There are lots of things that we have supposed that a computer would never do, because we believed that these things required something that only humans could do.

Take chess: there are more possible chess games than there are hydrogen atoms in the universe, so brute-forcing chess by running all possible games is a technological impossibility. The best human chess players do something we don't quite understand, mixing their recollections of previous games with rules-of-thumb about the best strategies, with "creativity" (whatever that is) that lets them spontaneously develop new strategies. We can easily get a computer to memorize all the known-good chess sequences and all the rules of thumb, but we don't know what "creativity" is, so we can't encode it as a series of instructions.

But thanks to breakthroughs in machine learning and its successor, "deep learning," we have created chess-playing software that can beat every human, partly by assaying gambits that we would term "creative" if they originated with a human player.

What we make of this new fact is controversial. For many people (myself included), this is a refinement: it tells me that behaviors that are indistinguishable from "creativity" can, at least some of the time, be created by mechanical processes, and the mere fact that a machine does something that appears "creative" doesn't mean that machines are human.

For others, the fact that a mechanical system can evince a behavior that we would call "creative" in a human doesn't mean that we defined "creativity" too broadly, it means that we defined "human" too narrowly, and now we have made a machine that is, at least partially, a person.

I think this is the wrong conclusion to draw, for reasons that Ted Chiang sets out with luminous brilliance in a recent Atlantic article entitled "No, Artificial Intelligence Is Not Conscious":

https://www.theatlantic.com/philosophy/2026/06/no-artificial-intelligence-is-not-conscious/687378/

(If you're hitting the paywall on that one and you're on Firefox, you can try my favorite trick: switch to "Reader Mode" and hit "reload" – your mileage may vary.)

For all the reasons Chiang articulates, I think that drawing the "personhood" line to include machines is a technical mistake, but it's worse than that. Admitting machines to the "personhood" club is a tactical mistake, on par with the mistake we made when we admitted corporations to the personhood club. We should absolutely consider expanding personhood to incorporate living things, including animals and ecosystems, but at the same time, we must purge these dead, artificial constructs from the club:

https://pluralistic.net/2026/04/15/artificial-lifeforms/#moral-consideration

There is a way in which the recognition of new capabilities in machines parallels the recognition of new capabilities in animals other than ourselves. When those animals manage to do things that we once thought were the exclusive province of humans, we (should) take that as an opportunity to refine our conception of humanity. We're not "the animals that use tools" or "the animals that make plans" or "the animals that recognize themselves in mirrors," because there are other animals that do those things. We are an "animal that uses tools"; not the animal that does so.

Likewise, if we thought that some activity was unique to humans, or to living beings, and we manage to get a machine to replicate that activity, we should revise our view of the activity – not our view of the machine. Creative breakthroughs in chess are not "a thing that requires a human mind," they're "things that can be done by human minds and by machines."

Edsger Dijkstra once famously asked "can a submarine swim?"

https://www.cs.utexas.edu/~EWD/transcriptions/EWD08xx/EWD898.html

Submarines and fish and humans and dolphins all propel themselves through water by different means. But when an animal swims, it does something that is different from what a submarine does. The submarine has no intention, while (complex multicellular) animals swim to pursue goals. Building machines that propel themselves through water is very useful, but it's not the same thing as creating life. In some ways, it's better than creating life: for one thing, we owe other living things moral consideration that is not due to machines. Harnessing a machine to accomplish our own goals is more morally clear than controlling living things to achieve those goals. By the same token, creating machines that can do some of the tasks that we ask of other humans can be the superior moral course. I'd rather have a machine remove mines from a minefield than getting humans to do it.

But beyond this moral relief, creating machines is a fantastic way to learn more about ourselves – making explicit our tacit knowledge, our implicit social assumptions, and the limitations of our conception of what sets us apart from the rest of the universe.

One way in which AI is exceptional is in how it undermines this principle. Conventional software techniques struggled to produce a program that could identify objects in photographs. It turns out that defining all the visual correlates of "cat" is even harder than defining the letter "A." Deep learning techniques solved this previous insoluble problem by relieving us of the job of making explicit all the implicit factors that we deploy when distinguishing an image of a "cat" from an image of a "dog" or a "tiger" (or a "tractor").

Instead of forcing humans to engage in introspection until we'd made a list of every factor we use to identify cat pictures, we simply identified pictures of cats and fed them to a program that tried to find the commonalities among them. The more pictures we fed to that program, the better it got at identifying cats. Today, we have programs that can reliably distinguish an image of a cat from an image of a tiger cub!

This represents a major breakthrough in the power of computers to perform useful work for us, but it's also a huge regression in computers' role in forcing us to make our tacit thought processes explicit through systematic introspection. That's probably fine: we didn't create computers to make us introspect, we created them to do useful work for us. All things considered, it might be better to have genies who grant our wishes according to the spirit of our words, not their letter.

AI may not force us to render our implicit thoughts as explicit instructions, but it absolutely forces us to reconsider and narrow the realm of the numinous. Our own creativity is still delightful and important, but the fact that this squishy, amazing process can (sometimes) be replicated by procedural machines changes the definition of living things. We're "a thing that can produce creative outcomes" but not "the things that can produce creative outcomes." The machines aren't being creative (any more than a submarine is swimming) but they're outputting things that we used to only achieve by means of creativity.

An AI that does something that used to require creativity is fulfilling my favorite of Brian Eno and Peter Schmidt's Oblique Strategies: "Be the first person to not do something that no one else has not done before":

https://stoney.sb.org/eno/oblique.html

Just as bosses fantasize about AI bringing about a worksite without workers, and Zuckerberg is trying to build social media without socializing, and politicians want a bureaucracy without bureaucrats, we can sometimes use AI to produce creative outcomes without creativity:

https://pluralistic.net/2026/05/27/unnecessariat/#rubbuts-stole-my-jerb

That isn't to say that AI art is any good. AI may produce things that are aesthetically interesting, but it can't produce things that mean anything:

https://pluralistic.net/2026/06/02/must-we-pretend/

But art isn't the only realm that we apply creativity to. There are plenty of outcomes that we've always believed we couldn't bring about without applying creativity. AI – like all software – is making us realize that an ingredient we once deemed uniquely essential turns out to have substitutes. AI can sometimes accomplish things without us explaining how we do them. That relieves us of a useful but difficult chore – but in so doing, it forces us (yet again!) to revisit what sorts of things are needed to do the things that matter to us, and therefore, what makes us special.


Hey look at this (permalink)



A shelf of leatherbound history books with a gilt-stamped series title, 'The World's Famous Events.'

Object permanence (permalink)

#20yrsago GNU Radio: the universal, software-defined radio https://web.archive.org/web/20060613062355/https://www.wired.com/news/technology/1,70933-0.html

#15yrsago France bans “follow us on Twitter” from newscasts https://web.archive.org/web/20110606035424/http://www.zdnet.com/blog/facebook/france-bans-facebook-and-twitter-from-radio-and-tv/1559

#5yrsago Aaron Swartz, vindicated https://pluralistic.net/2021/06/04/aaronsw/#cfaa

#5yrsago Capitalism's crooked refs https://pluralistic.net/2021/06/04/aaronsw/#crooked-ref


Upcoming appearances (permalink)

A photo of me onstage, giving a speech, pounding the podium.



A screenshot of me at my desk, doing a livecast.

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "The Reverse-Centaur's Guide to AI," a short book about being a better AI critic, Farrar, Straus and Giroux, June 2026 (https://us.macmillan.com/books/9780374621568/thereversecentaursguidetolifeafterai/)
  • "Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026

  • "The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027

  • "Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027

  • "The Memex Method," Farrar, Straus, Giroux, 2027



Colophon (permalink)

Today's top sources:

Currently writing: "The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Third draft completed. Submitted to editor.

  • "The Reverse Centaur's Guide to AI," a short book for Farrar, Straus and Giroux about being an effective AI critic. LEGAL REVIEW AND COPYEDIT COMPLETE.
  • "The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.

  • A Little Brother short story about DIY insulin PLANNING


This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.

https://creativecommons.org/licenses/by/4.0/

Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.


How to get Pluralistic:

Blog (no ads, tracking, or data-collection):

Pluralistic.net

Newsletter (no ads, tracking, or data-collection):

https://pluralistic.net/plura-list

Mastodon (no ads, tracking, or data-collection):

https://mamot.fr/@pluralistic

Bluesky (no ads, possible tracking and data-collection):

https://bsky.app/profile/doctorow.pluralistic.net

Medium (no ads, paywalled):

https://doctorow.medium.com/

Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):

https://mostlysignssomeportents.tumblr.com/tagged/pluralistic

"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla

READ CAREFULLY: By reading this, you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.

ISSN: 3066-764X

21:00

20:14

Page 21 [Flipside]

Page 21 is done.

Feeds

FeedRSSLast fetchedNext fetched after
@ASmartBear XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
a bag of four grapes XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
Ansible XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
Bad Science XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
Black Doggerel XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
Blog - Official site of Stephen Fry XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
Charlie Brooker | The Guardian XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
Charlie's Diary XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
Chasing the Sunset - Comics Only XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
Coding Horror XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
Comics Archive - Spinnyverse XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
Cory Doctorow's craphound.com XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
Cory Doctorow, Author at Boing Boing XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
Ctrl+Alt+Del Comic XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
Cyberunions XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
David Mitchell | The Guardian XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
Deeplinks XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
Diesel Sweeties webcomic by rstevens XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
Dilbert XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
Dork Tower XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
Economics from the Top Down XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
Edmund Finney's Quest to Find the Meaning of Life XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
EFF Action Center XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
Enspiral Tales - Medium XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
Events XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
Falkvinge on Liberty XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
Flipside XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
Flipside XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
Free software jobs XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
Full Frontal Nerdity by Aaron Williams XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
General Protection Fault: Comic Updates XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
George Monbiot XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
Girl Genius XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
Groklaw XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
Grrl Power XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
Hackney Anarchist Group XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
Hackney Solidarity Network XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
http://blog.llvm.org/feeds/posts/default XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
http://eng.anarchoblogs.org/feed/atom/ XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
http://feed43.com/3874015735218037.xml XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
http://flatearthnews.net/flatearthnews.net/blogfeed XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
http://fulltextrssfeed.com/ XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
http://london.indymedia.org/articles.rss XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&amp;_render=rss XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
http://planet.gridpp.ac.uk/atom.xml XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
http://shirky.com/weblog/feed/atom/ XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
http://thecommune.co.uk/feed/ XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
http://theness.com/roguesgallery/feed/ XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
http://www.airshipentertainment.com/buck/buckcomic/buck.rss XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
http://www.airshipentertainment.com/growf/growfcomic/growf.rss XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
http://www.airshipentertainment.com/myth/mythcomic/myth.rss XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
http://www.baen.com/baenebooks XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
http://www.feedsapi.com/makefulltextfeed.php?url=http%3A%2F%2Fwww.somethingpositive.net%2Fsp.xml&what=auto&key=&max=7&links=preserve&exc=&privacy=I+accept XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
http://www.godhatesastronauts.com/feed/ XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
http://www.tinycat.co.uk/feed/ XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
https://anarchism.pageabode.com/blogs/anarcho/feed/ XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
https://broodhollow.krisstraub.comfeed/ XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
https://debian-administration.org/atom.xml XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
https://elitetheatre.org/ XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
https://feeds.feedburner.com/Starslip XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
https://feeds2.feedburner.com/GeekEtiquette?format=xml XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
https://hackbloc.org/rss.xml XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
https://kajafoglio.livejournal.com/data/atom/ XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
https://philfoglio.livejournal.com/data/atom/ XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
https://pixietrixcomix.com/eerie-cutiescomic.rss XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
https://pixietrixcomix.com/menage-a-3/comic.rss XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
https://propertyistheft.wordpress.com/feed/ XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
https://requiem.seraph-inn.com/updates.rss XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
https://studiofoglio.livejournal.com/data/atom/ XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
https://thecommandline.net/feed/ XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
https://torrentfreak.com/subscriptions/ XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
https://web.randi.org/?format=feed&type=rss XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
https://www.dcscience.net/feed/medium.co XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
https://www.DropCatch.com/domain/steampunkmagazine.com XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
https://www.DropCatch.com/domain/ubuntuweblogs.org XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
https://www.DropCatch.com/redirect/?domain=DyingAlone.net XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
https://www.freedompress.org.uk:443/news/feed/ XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
https://www.goblinscomic.com/category/comics/feed/ XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
https://www.loomio.com/blog/feed/ XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
https://www.newstatesman.com/feeds/blogs/laurie-penny.rss XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
https://www.patreon.com/graveyardgreg/posts/comic.rss XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
https://www.rightmove.co.uk/rss/property-for-sale/find.html?locationIdentifier=REGION^876&maxPrice=240000&minBedrooms=2&displayPropertyType=houses&oldDisplayPropertyType=houses&primaryDisplayPropertyType=houses&oldPrimaryDisplayPropertyType=houses&numberOfPropertiesPerPage=24 XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
https://x.com/statuses/user_timeline/22724360.rss XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
Humble Bundle Blog XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
I, Cringely XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
Irregular Webcomic! XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
Joel on Software XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
Judith Proctor's Journal XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
Krebs on Security XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
Lambda the Ultimate - Programming Languages Weblog XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
Looking For Group XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
LWN.net XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
Mimi and Eunice XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
Neil Gaiman's Journal XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
Nina Paley XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
O Abnormal – Scifi/Fantasy Artist XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
Oglaf! -- Comics. Often dirty. XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
Oh Joy Sex Toy XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
Order of the Stick XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
Original Fiction Archives - Reactor XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
OSnews XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
Paul Graham: Unofficial RSS Feed XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
Penny Arcade XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
Penny Red XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
PHD Comics XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
Phil's blog XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
Planet Debian XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
Planet GNU XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
Planet Lisp XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
Pluralistic: Daily links from Cory Doctorow XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
PS238 by Aaron Williams XML 17:35, Thursday, 11 June 18:23, Thursday, 11 June
QC RSS XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
Radar XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
RevK®'s ramblings XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
Richard Stallman's Political Notes XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
Scenes From A Multiverse XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
Schneier on Security XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
SCHNEWS.ORG.UK XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
Scripting News XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
Seth's Blog XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
Skin Horse XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
Tales From the Riverbank XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
The Adventures of Dr. McNinja XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
The Bumpycat sat on the mat XML 17:28, Thursday, 11 June 18:08, Thursday, 11 June
The Daily WTF XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
The Monochrome Mob XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
The Non-Adventures of Wonderella XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
The Old New Thing XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
The Open Source Grid Engine Blog XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
The Stranger XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
towerhamletsalarm XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
Twokinds XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
UK Indymedia Features XML 18:00, Thursday, 11 June 18:42, Thursday, 11 June
Uploads from ne11y XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
Uploads from piasladic XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June
Use Sword on Monster XML 17:28, Thursday, 11 June 18:15, Thursday, 11 June
Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily XML 17:49, Thursday, 11 June 18:35, Thursday, 11 June
what if? XML 17:35, Thursday, 11 June 18:16, Thursday, 11 June
Whatever XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
Whitechapel Anarchist Group XML 17:35, Thursday, 11 June 18:24, Thursday, 11 June
WIL WHEATON dot NET XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
wish XML 17:49, Thursday, 11 June 18:34, Thursday, 11 June
Writing the Bright Fantastic XML 17:49, Thursday, 11 June 18:33, Thursday, 11 June
xkcd.com XML 18:07, Thursday, 11 June 18:50, Thursday, 11 June