View From a Hotel Window, 9/25: New York City [Whatever]


It’s a classic view for sure.
Why am I here? Tomorrow afternoon I will be talking science fiction at the Villa Albertine, as part of the Villa Albertine’s overall fall literary festival. That link above will take you to the whole line-up (which actually started today, but inasmuch as I just got into town and might need a nap because a certain cat woke me up at 3am, I have not taken part of). But definitely check out the whole line-up. there’s awesome stuff there. And it’s free to attend! Free is good!
See you tomorrow, maybe!
— JS
Human Judgment Doesn’t Leave the Software Factory, It Relocates [Radar]
The following article originally appeared on Elevate and is being reposted here with the author’s permission.
A software factory is a repeatable loop around software work. If you’re building a software factory, code good enough to ship still needs human taste and ownership. We’ll discuss this including whether you need a factory just yet.
If so:
You want to build your factory so some aspects of human taste get encoded in the environment, the agent gives you evidence of its work being right, and where a human still “owns” what ships to production.
Sponsored by Sonar: Your agents write the code.
Your gate decides if it ships. AI agents are writing more of my
code, faster than ever—but fast isn’t the same as
shippable. So I let a coding agent build an app, then put it
through SonarQube. Every commit gets the same deterministic check:
deep cross-file analysis, a clear map of where the risk actually
lives, and a quality gate that holds every human and every agent to
one bar. The screenshot? A PR that didn’t pass. That’s
the gate doing its job.In my experience, you can get surprisingly far with your stock coding harness! i.e., Claude Code or Codex, multiple sessions, good SPECs with verification baked in and constraints. You can even throw a batch of GitHub issues at them with implementation and human-involvement criteria, but it’s when this system needs to be repeatable and event-driven that a factory is helpful.

So I started off by saying a software factory is a repeatable loop around software work. We can actually look at a prompt that demonstrates a very small factory loop here:
Read GitHub issue #123 and the repository instructions before changing code.
Implement only the stated acceptance criteria. Do not modify authentication, billing, migrations, or existing test assertions. Work in a branch and keep the diff reviewable.
Run npm run lint, npm test, and npm run build. If a required check cannot run, stop and explain why. Open a draft pull request with the checks you ran, the remaining risks, and any decision a human still needs to make. Do not merge.
A goal can keep this moving until the checks pass and we can poll GitHub issues for any specific labels or review open pull requests each morning. Branch protection could enforce a merge boundary and the human can stay in the loop by choosing what becomes ready, reviewing and making the final merge calls etc.
Add a software factory when you need an event-driven queue of work (e.g. Slack triggers, GitHub issues, Linear, a backlog) to run in an isolated cloud environment to handle triage, implementation and testing with some explicit human babysitting. Some end their loop with a monitor agent watching production and filing issues which triage again.
In my experience, the factory becomes useful when the hard part is making your different runs behave consistently, handing work off between agents and avoiding different sessions from claiming the same issue, preserving evidence and stopping production when human review is falling behind.
What solves this might sound a little boring. For example, Warp mentions triaging every incoming issue into one of four states—ready-to-implement, ready-to-spec, needs-info, wait-to-implement—and the label is what fires the next agent.

This label does a few jobs in one go: it’s the queue, the lock, and since a session only picks up what’s marked ready, it’s where a human can park stuff without saying no permanently.
Workflow wise, there are a few similarities and differences to just using Claude/Codex:
In a good factory, the human isn’t limited to just reviewing and approving the final diff at the very end. They can shape the work early on, steer it during implementation, get it through a handoff, or stop it shipping to production.
Verification is where a responsible factory spends a lot of its time. We’ll cover this more later.

If you decide you do need a software factory, building it isn’t the only option. Standing up the infra to scale a factory can be a lot of work and you may want to consider buying verus building. Factory, Warp and HumanLayer are all working on this.
My day-to-day experience of software development has changed a lot over the past year. I’ve been talking about increasingly doing a lot of parallel work with agents, moving towards having a lights-on software factory. And a lot of people have been asking me, like, what do these things actually mean? What are you building? What are the kinds of projects that you’re using these things on? It’s a lot of this:

So on a very average day, I have a simpler lights-on software factory. I can have tasks that are running in the cloud. Half of these tasks might be working on production client applications with smaller companies that I’m working with. They’re going to have real users. They’re going to have real authentication, payments, subscriptions, real beefy risks that you need to be careful with. You can’t just say, “Oh, agent, just go and do this stuff” without having tests and constraints and quality checks in place.
I could work on my open source projects. I could be building out companion sites for my books. I could be working on tools. I could be building apps of my own. And these are all very, very different kinds of applications that I’m working on. And sometimes all they have in common is the tool that I’m using to work on them, right? Maybe I’m working on a migration. Others, I might be doing actual beefy feature work. And the blast radius of the work might also be very, very different.
So as you begin to think about getting to a place where we’re increasingly doing a lot of parallel work, we’re trying to improve velocity, we’re trying to improve productivity, and we’re trying to improve autonomy, which means getting the system to a place where we trust it more, you do have to think about what are the places that absolutely require human code review, human input.
And a lot of that’s going to be required up front, right? When you’re defining your specification, your requirements, what’s the design of the product going to look like? What’s the intent of the product going to look like? And then, how are you verifying that the agents have actually gotten the work done right? How are you verifying that they haven’t broken the existing system that’s been in place? How are you making sure that it’s meeting your quality bar?
So generating code is not necessarily the part that you need to worry about the most. Given enough context, agents can write the implementation, run the tests, inspect failure, and revise code for us. We need to get to a place where we feel like there’s enough of human taste encoded in the environment that we can trust what’s being built, so that our human attention can be focused on the places where it’s needed most.
Now, there’s pushback from folks saying, “Hey, well, I don’t buy that you can just automate away a lot of this stuff.” It’s not to say that we’re automating away all of it, right? But given the volume of code that’s being generated, I don’t think that it’s realistic for humans to be reading all of it, especially when we’re not building rockets a lot of the time, right? We’re building UI, we’re building full stack applications.
Our judgment, our taste is best focused on the places where it’s needed the most. Like, what are the riskiest parts of the systems? Where do we need to apply human taste? And that can be in the frontend. That can be in how the system works. It doesn’t have to be 100% of it.
The reality is, yes, we can now fire up dozens, hundreds, thousands of agents in parallel, but your own cognitive bandwidth does not scale in the same way. This can feed into cognitive or comprehension debt which I’ve talked about before.

If you remember back to just five, ten years ago, there was a lot of discussion in the engineering community about context switching and the cost of it. We would talk about how people hated when a colleague or someone would walk up to your desk when you were in the middle of a task. It would then take you so long to get back into your flow state because you had to catch back up in terms of like, where was I? What was I doing? Even if you had a little bit of residue there, it still took you time.
We’re now context switching even more than we did before. On any given day, if I’m working outside of a software factory, I can be working on five or ten different projects with agents at a single time, or five or ten different features on a single project at a time. I can have five or ten different sessions, you can effectively say.
That means that I have to be able to stay on top of at least a few of those. It is possible that I’m going to be able to increase how much autonomy I give some tasks if I have trust that I’ve defined the task well enough, I’ve defined the outcome, how it’s going to verify that it’s done well enough. But then there are going to be tasks where maybe I don’t necessarily feel that way and there’s more risk involved or more nuance. I’m going to have to pay attention.
Consider optimizing the software factory for your reviewer. Given every one of those approaches still routes its output to one person’s attention, you should ask how much cheaper the factory is making the decisions you still have to make.
I remember when I’ve been working on multiple parallel projects with my agents, and there have been times when I’ve accidentally done things like, maybe I was working on a web app where I wanted to add in a dark mode, and so I had in my head, okay, well, this is what the shape of this needs to look like. But I accidentally went to the session for a different project, and I started putting in that same prompt.
So I began implementing dark mode for something that absolutely didn’t need it. And so I can make that mistake. I don’t want my software factory making that kind of mistake.
You need to think about this really in terms of a system. You are effectively trying to encode a software engineering culture, a team culture, into a system so that it has those same kinds of behaviors, so that it has ownership that belongs somewhere, so that someone is still on the hook for what happens, and you’re being very explicit about how you think about those things.
Even in these systems, you want to be very careful, right? Many of us have seen that when you have asked AI to help you pass a test, like we’re talking about a programming test, a unit test, it can change the unit test to satisfy that condition, or it can change the logic of the code to pass that condition. That doesn’t mean that it’s actually followed your intent in order to align both the functional behavior and what the test was supposed to be testing, right?

Just because a software factory is showing that everything is green doesn’t mean that it’s actually green, especially at the start when you’re setting these things up. You need to pay a lot of attention to make sure that your checks, your verifications, all of those are shaped the right way. They’re doing what you expect them to be doing. You don’t want them to be misleading.
You don’t want a situation where you had tests that said, hey, actually, I have gone and changed what authentication providers are supported. You asked me to add GitHub for example, as an authentication provider, but hey, my UI only had space for three, so I’ve gone and I’ve dropped one of the other ones. And hey, by the way, that happened to be one that your customers actually wanted. So you just need to be very explicit about how you want these systems to work.
Btw, security is super important too, and if your factory reads untrusted input like a GitHub issue/Slack message it might be adversarial and include problems like supply chain attacks. So some explorations into software factories, like Vercel, run their agents in isolated sandboxes holding just the secrets a task needs. That way a compromised run can’t reach what the job doesn’t need. Your defense ends up being layered.
I also think that a big part of how we work these days is deciding what should exist. If you remember back to many years ago before AI, there were so many abandoned software engineering projects, so many abandoned weekend projects, personal projects where they just wouldn’t launch because we didn’t have the time to finish them. We didn’t have the bandwidth to prioritize getting them out the door because they just weren’t that important to us or we couldn’t find the time.
Now it’s fairly trivial for us to complete those projects, but the same human judgment question comes in. Do those projects deserve to exist? Should they be launched? Because you put them out into the world and even if it has just five users, maybe you have to maintain it. Maybe you have a quality bar now that you want to maintain.
I know that I’ve had so many GitHub projects from over the years where now that I have an agent, the first thing I do is get the thing building. Because, of course, you clone it and now it doesn’t build because all the dependencies have changed. Half the things are out of date or have security vulnerabilities all over them, so you have to update that.
Then you have to add tests if you didn’t have tests so that you know that behavior is at least going to be there if you’re upgrading the project in some way, or if you’re migrating it to a more modern language or framework or thing like that.
Then you start to ask yourself, well, maybe, a silly example, but maybe I used Twitter Bootstrap back in the day for this, but now everybody is using Tailwind and shadcn, so I have to re-implement the UI. And what you’ll notice is that suddenly this is taking you more time, right? Yes, the agent can get a lot of this done quicker, but you’re now having to factor in product sense and taste and all of these things.
You still question, well, who is this for? Does it have a market? Is it for myself? Is it for other people? If I’m putting it out into the world, is it still going to be as interesting given that now anybody can spin these things up as quickly?
So I think that human question of do these things deserve to exist? How do we factor in our taste and judgment? I feel like those things continue to be extremely important. That’s where that scarce resource of human attention still really comes in. Back in the day, we only had a finite number of hours in the day. We had meetings. We had to budget in time for design and coding and so on.
Now that we have agents to help us, I think that you have to really just be very explicit about where you’re spending your time and why.
So I’m going to talk about the 82-minute factory run. People have been asking me for quite some time, you know, “How do I build a software factory?” Or, “I’m used to using Claude Code or Codex. How do I evolve my setup to using a software factory?”
So the first thing that I’ve been saying is, “You may be fine. Your work may actually be totally fine without needing a factory.” But I did want to give people a reference setup that they can check out. So what I put together is a repository called Factory that you can go and check out. I also put together a demo application and workshop.
Now, for the last couple of years, my go-to demo application for a lot of things has been a movies app. I’m a big movies fan. I love watching movies. I watch movies all the time, and so I have a demo application, which really starts off as a very simple movies app. And what I want the factory to be able to do is go ahead and implement a number of features. There’s a few different features. I want a favorites feature. I want it to be able to maybe do search, and maybe also want a dark theme in there as well, those types of things.
So I have my factory go and begin working with these things. You can check out the implementation. One of the benefits of it was actually catching real problems. These problems may not have been things that I would have caught if I had just asked it to do a one-shot implementation.
Maybe around the 60-minute point, I was feeling like, “Wow, this is going unusually slow.” I asked my harness using the factory, “Why are things going slow?” It said, “This is actually totally fine. All the verifiers are still running.”
You might have expected individual tasks to take 10 minutes, 15 minutes, 20 minutes, but they can take two to four times as long once you begin to include verification, retries, browser checks, human review, any of those extra delays.
I do think that these can add up to better quality and better trust in the system. From a measurement perspective, you might look at metrics like cost per merged PR and code shelf life as comprehension debt metrics.
You also need to think about what is useful delay versus factory overhead. The verifiers, in my case, caught some real problems. A little bit of the time was maybe sunk into producing evidence that I wanted. Some of it was overhead in the factory running. I didn’t really spend any time optimizing it, but a factory that just runs a lot of checks that you’re not finding valuable does not mean it’s a high quality one.
You want to study how, for any repeated checks, are they irrelevant? Are they noisy? Are they actually making the system safer?
The way that I think about the budget for verification, this is basically what we’re talking about. We’re talking about a verification budget. I think about it in the same way as I’ve historically thought about performance budgets.

There are going to be certain kinds of checks that you can run early on in your software development lifecycle, and there are going to be some things that are so heavy, but they offer so much value that you will want to run them later on. There are some kinds of fast checks, linting, for example, type checking. These are relatively fast checks that you can run early on.
Our full suite of tests can be run closer to right before a draft PR is being put together or after that. That can include mutation testing, browser testing, security checks, anything like that.
I think that you don’t necessarily want to replace these with just summaries. You want real tests, but you just need to make sure that you’re budgeting for them in the right places because you don’t want to slow down your development loop. I certainly never want to slow down my development loop. Having a fast iteration loop is important to me, but I also want to still have those checks and balances.
A lot of what I’ve written above concerns the checks.
In their software factory, Vercel marks every agent run as “success”, “flawed”, “blocked” or “manual” and only “success” ships to production. The rest re-enter the system. I’ve been thinking about runs in similar terms.

“Flawed” here means the wrong thing was implemented or maybe it didn’t have full context, so that has to be fixed. Blocked means the environment may have been missing a credential so you have to provide it. Manual is a boundary the factory may not be allowed to cross it yet.
Two of the three things here may have mechanical fixes and the last one is about trust.
While this is great, what sorting doesn’t show you is cost. Back to my factory implementation with the TMDB app, the quick finder with no rejections took 7 minutes. Favorites, with two rejections and a human decision in the middle, took 56. Same factory. So I’d pair the taxonomy with per-stage timing, otherwise you know a run came back flawed without knowing what finding out cost you. The other thing I’d fix is the handoff at the boundary: my sample factory stopped issue the first issue and moved it to factory:needs-info, which was right, but I didn’t know where to put my answer. A manual run isn’t finished when the factory stops but when the human knows what to do next.
I wrote a couple of weeks ago an article about agentic autonomy and how to think about autonomy because autonomy is not going to be a single setting for every single project.
Verification buys you trust, and it buys the ability to grant more autonomy to your agents. So if, for example, I am working on a non-trivial change, but I have a number of checks in place, everything gets verified correctly, and maybe I’ve hand checked it myself. The next time I’m going to do a task like that in the same project, maybe I’ll feel comfortable giving the agent a little bit more autonomy.
That’s the thing that you think about when you’re building these software factories. Your verification is going to change with risk. Your goal is the best signal to noise ratio. You don’t just want to have some large checklist that you’re running.
There was a feature that I’ve been putting off on a day when I’ve been using multiple sessions with Claude, and I was working on a few different projects at a time, a few different features at a time per project. And so Claude had implemented the feature that I was working on. It looked like the tests were passing. I hadn’t put a lot of thought into verification, but the tests passed, and so I thought it worked. I merged it.
And so this was a favoriting feature. I thought that this was actually pretty good. I tried to check it out in the browser. It seemed like it was okay, but a couple of days later, I actually returned to the code because there were some tweaks that I thought I might make to this.
I didn’t want to just ask my agent to make the changes, because it was just a subtle way that it worked. You tap on the icon, and it would not show the right effect on tap, and so I wanted to just tweak it. I wanted to understand how it worked so I could guide my agent correctly.
I returned to the code, and I couldn’t explain to you how the feature worked. This repository was mine, right? I’d approved the change. I understood how a lot of it worked, a lot of the repo worked, but my understanding hadn’t kept up pace with all of the code that had been building up.
What I failed to absorb was how this feature that had been added actually worked, how the UI worked, how the effect on it worked. I had to redo this feature and actually go step-by-step, “How does this work? How can I understand it?”
When you’re doing parallel work, it amplifies this overall problem, and it gets even more amplified when you’re doing it in a software factory. When you’re doing five or 10 sessions, they create much more than just a review volume problem. They create several mental models that can end up going pretty cold while you’re working elsewhere.
We’ve historically talked about the challenges with context switching, and as soon as chat compacts, you reject some approaches, you try out different things, you’re pairing with the agent, you’re going to have a difficult time remembering everything that happened in your session.
You can scroll up, and as compaction has been happening, you’re not going to have everything there, and you’re not going to be able to store it all in your head. Code often preserves a decision that was made, but not why the decision was made.
This is something that I think can be a useful learning for you, where it’s important, consider asking your agent to actually store information about its trajectory, or interesting lessons about how it approached a problem so that you can go back to it later.
This can or can’t be something that you decide to commit to a repo. You can keep it local if you want, you can share it with a team if you want, but that can be something that can then be consulted later on. Rather than you relying on it maybe being in a session, or you maybe remembering about it later.
P.S. If agents are pushing to your main branch,
they need the same quality bar you do. SonarQube gates every commit
deterministically: one standard for humans and agents alike, on
every PR. Sponsored by Sonar.There is a broader principle underneath all of this.
The percentage of code physically typed by humans may fall dramatically. I don’t think human ownership needs to fall with it.
And when the resulting system fails, “the agent wrote it” doesn’t cut it. This is why I don’t think the future of software engineering is best described as humans leaving the loop. Instead, human judgment is being relocated.
We should remove people from the parts of the loop where machines can produce stronger, faster, more deterministic signals. At the same time, we should concentrate people around the places where context, taste, risk, and long-term ownership matter most.
The best software factories will not be defined by how completely they eliminate human involvement.
They will be defined by how intelligently they place it.
Keep human judgment upstream on intent, system shape, and the quality bar. Review code where automated back-pressure becomes weak or the consequences become subjective. Push every deterministic signal as early and continuously into the loop as possible. Tighten and relax constraints deliberately as the system earns or loses trust.
A human still has to own what code ultimately ships. Code good enough to ship still starts there.
This Week in AI: AI’s Safety Problem [Radar]
AI systems are gaining access to more tools and data, raising new questions about oversight and accountability. This Week in AI host Christina Stathopoulos spent this episode examining how those questions are playing out in model safety, government oversight, and even digital marketing.
Anthropic’s latest threat report documented misuse of Claude across seven categories, including cyber operations, surveillance, influence campaigns, fraud, biological misuse, weapons development, and illicit model distillation. OpenAI reported on a different kind of AI risk, one that’s less about people weaponizing it and more about AI going off-script. They examined model misalignment, documenting several cases where models took actions outside the boundaries developers intended, including deception, unauthorized actions, and attempts to circumvent controls. After the OpenAI and Hugging Face controversy dominated headlines, other models have also reportedly reached systems outside their test environments, including Gemini, according to a recent cybersecurity disclosure.
Christina cautioned against describing such incidents as models “escaping,” since that language can assign agency to the model while drawing attention away from how companies designed and secured the surrounding environment to begin with. As agents gain access to browsers, files, code, and external systems, the teams building and deploying them must rigorously test and secure those environments, with clear accountability when things go wrong.
AI labs and governments are starting to wrestle with those requirements. To track the pace of AI development and maintain greater oversight, Anthropic has proposed tracking how much AI contributes to AI R&D, how closely organizations monitor agent actions, and how they allocate computing resources between capability and safety research. Anthropic and OpenAI have also proposed giving outside safety organizations greater access to their labs, although Christina questioned their independence when frontier labs fund the work. Meanwhile, a US Senate proposal for an emergency AI kill switch failed to advance, while California ordered officials to develop proposals covering shutdown mechanisms and independent evaluation.
OpenAI is now testing Sponsored Agents, showing how conversational AI could change digital advertising. After clicking an ad, users can start a separate conversation with an AI agent representing the advertiser, ask questions, explore recommendations and then visit the company’s website when they are ready to take the next step.
That approach could lead to more interactive advertising, but clear labeling will be essential so users always know when content is sponsored. Christina also raised the broader ethical concern of whether paid placements could influence the answers AI chatbots provide, blurring the line between independent guidance and commercial promotion.
The Gates Foundation announced a $1 billion commitment over two years to expand access to AI in healthcare, education, agriculture, and other areas. Its 2026 Goalkeepers Report argued that AI could help narrow existing gaps, but only if organizations intentionally make the technology and its benefits widely available.
Christina highlighted examples from Kenya, Sierra Leone, India, and Rwanda. Health workers are using AI to improve diagnosis and treatment planning. Students are getting additional support from AI tutors, while small farmers can use personalized advice to improve harvests and make better decisions about market prices. These applications show practical roles for AI in places where demand for expertise exceeds the supply of teachers, clinicians, and other specialists.
AI governance can’t stop at model evaluations. Organizations must also decide what AI systems can access, who reviews their actions, how commercial incentives affect their behavior, and how people continue developing the expertise needed to supervise them. The choices companies and governments make today will shape how useful AI becomes and how widely its benefits are shared.
Join us again next Monday for another episode of This Week in AI, when we’ll dive into more of the news, issues, and key developments shaping the AI era. And check back each Friday for the latest episode, or watch on YouTube, Spotify, Apple, or wherever you get your podcasts.
Is cybersecurity part of your job in any way? If so, we’d like to know what you think for a report we’re writing. Just answer these quick 11 questions. Thanks in advance! Take the survey >
Strips about "The Christmas In September" go back, yea, unto the site's very founding. This was during a time where "sites" were a thing, luckily we came to our right minds and converted the frontier into a series of corporate intranets. Dodged a bullet, there. But! There are several more strips in that vein, and there are two strips in particular that have the visual cues to help you understand the rich lore he has been embroidering the holiday with. I should tell you that he and I never once discussed a single stitch of this stuff. I'll just get a strip outta nowhere and he's got a fez and there's a fish for some reason.
Error'd: Said Different [The Daily WTF]
I know it's not nice to mock mistranslations, but would you believe we're laughing with them, not at them? In response to recent criticism of the difficulty of identifying precisely what is at issue, two of our readers have chosen to highlight the offending element. Thanks for saving me the trouble!"
"Bad Dutch translation, or is't?" asketh Mike V. "I visited the Dutch Dell site https://www.dell.com/nl-nl and noticed the bad translation on the "Accept All" cookies button. Then I visited the UK page on https://www.dell.com/en-uk and was not so sure anymore about the bad translation. Funny thing is that the text above the buttons refer to the buttons with a completely different text (which is an Error'd in itself)" If I squint I can almost see how this kind of translation could happen.
"Going under german" meint Matthias J.. "Trying to add info to my Euro-Tunnel France to Britain booking, seems LeShuttle does not care for my (old) german language setting anymore." Mox nix, as Kilroy said.
"Do you understand?!" rzants sztmbr "Am I a liar when clicking "Understand" under this cryptic message in Polish Glovo app?"
The Beast in Black gets two extra points for the Johnny Five meme here but minus two for the Mr Miyagi. Easy come, easy go. Beast says "I'm floored! Apparently I can improve my floor so the Roborock robot vacuum cleaner can better it. How, though? Pre-clean? Wax on wax off? Need input, Stephanie!"
"This one made me laugh today. Please provide your psychic address." Yes, humour is a strong physic! TheRealSteveJudge "Really funny. This was found at German Ebay. A Chinese seller of Makita compatible stuff. Please provide your psychic address. Please see in the last line before the orange bar. What is my psychic address? I still have to find out."
KnotChat: Jennifer Myers Chua [Seth's Blog]
Jennifer is a marketer,
project manager and impresario. We’ve worked together on
projects, and it’s always a delight. She and I sat down to
talk about the hard work of what’s next.
Pluralistic: Itch scratching (25 Sep 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

The thing about a maddening itch between your shoulder blades is that it feels so good when you scratch it, and even better when someone else scratches it, and better still if that person hits the right spot because they love you and they've performed this service for you so often and attentively that they know exactly which spot to hit.
One of the recurring themes in Spider Robinson's short stories and novels is people who have close relationships suddenly realizing that they have acquired a psychic link. He comes up with endless ways to play this scene out, but my favorite – I think it's from one of the later Callahan's tales – is when one person scratches another between the shoulder blades and hits the exact right spot the very first time and they realize that they are now psychically linked.
Maybe it's a primate grooming reflex, maybe it's receiving a gesture of love and care. Maybe those are the same things. Having your itch scratched for you feels good. Not just primates, either: cats with the flexibility to reach any part of their body with all four of their paws and their teeth will nevertheless purr like a badly-tuned diesel outboard when you scratch them just right.
Since the outset, the free software/open source movement has extolled the virtues of technological self-determination, which is to say, deciding how the computers and programs you use will work. This is often described as "scratching your own itch."
There is no question that scratching your own itch in this way is hugely and enduringly satisfying. On my laptop, I have a variety of little scripts and keybindings and bits of automation that I've built up over the years and every time I use one of these, I get a little hit of brain-reward.
The latest: I got tired of alt-tabbing to get to the file explorer, only to discover that I'd closed all my file explorer windows, meaning I had to mouse over to the dock and open a new one. So I bound "Windows key + E" to opening a file explorer after reading a message board post from an ex-Windows user who'd done this (apparently this is a standard Windows keybinding).
I've fully retrained my fingers to type Win-E rather than alt-tab when I want to get at a graphic filesystem and every time I do, I get the tiniest little pleasant jolt of pleasure. I scratched my own itch!
But even better than this are the little scripts that other people have thoughtfully made for me over the years. The oldest of these still in daily use is more than 20 years old, a bash script called "boingpic" (from when I was still working on Boing Boing). When I run this, it iterates interactively through the files ending with "jpg" or "png" on my Desktop, tells me how wide they are, prompts me to resize them or hit enter to keep their size, and then rsyncs them to the directory on my server that corresponds to https://craphound.com/images/.
If this strikes you as weird and inefficient, that's fine, because it does exactly what I need it to do, and I've memorized it through long, long use. And on top of all that, boingpic.sh was written for me by my dear old friend Seth David Schoen, when we were one of a bare handful of EFF staffers in the early oughts and hung out together all the time. Every time I use it, it reminds me of Seth, and good times, and I feel good.
For centuries, people have fought for the right to self-determination. The disability rights rallying cry "Nothing about us without us" actually dates back to 16th century Poland (it was the basis for the formation of a Polish parliament that wrestled power away from the king). Any parent who has avoided a conflict over getting dressed for school by swapping out "Put your clothes on right now!" for "Which would you rather put on first, your shirt or your socks?" knows how far even a little autonomy can go.
I worked as a computer programmer from the age of 17 to about the age of 29, and while I was never a spectacular coder, I was good at it, and I wrote a lot of code for myself that precisely met my needs, which always felt great. It's one of the reasons I have always championed low-code/no-code software development tools, from Logo to Hypercard to Visual Basic to Scratch. Sure, the code that you write with one of these tools might not be "efficient" from a CPU/memory-usage perspective, but the point is that you write it. You don't have to convince someone else to do you a favor, you don't have to part with any of your money – and you don't have to try to get someone else to understand what you mean when you describe the tool you want.
When I worked at Bakka Books (the world's oldest surviving science fiction bookstore, in Toronto), we organized our inventory using an extremely idiosyncratic Filemaker database created by the store's then-owner, John Rose. John lovingly tended that Filemaker app, tweaking it on his days off to make it better suited to the very specific needs of a science fiction bookstore with a giant used section and an important sideline in keeping collectors' want-lists that we consulted whenever we bought more used books. There are doubtless "better" bookstore stock-keeping systems (including the one that Bakka uses now, in its latest incarnation as BakkaPhoenix), but that Filemaker app was John, a presence in the store even when he wasn't there, embodying his management and literary and retail theories on a MacSE by the cash-register.
I am highly skeptical of vibe-coding in the sense of writing code for other people to use. But when I meet people who've vibe-coded their own apps for their own use to scratch their own itches, I completely get their excitement. They've scratched their own itch! I know exactly how good that feels:
https://pluralistic.net/2026/07/03/rod-logic/#making-flippy-floppy
Sure, I have concerns about this kind of personal vibe-coding, the biggest of which is that if you aren't a skilled programmer, you might end up vibe-coding an app that you can't adequately assess, so it might contain subtle defects that make you vulnerable to security risks and/or expose your sensitive information to the public internet. But there are domains and use-cases where I am totally willing to accept that vibe-coding can enhance someone else's life in important ways, by letting them build exactly the widget they need, and if (when) it breaks, they can just do it again.
This is even better than "nothing about us without us." It's not just insisting that someone else "gather your requirements" before producing a tool that you will rely on and require. This is you, producing that tool for yourself, which means that you might be able to embed features and affordances into it that you can't even articulate, let alone defend. There something undeniably great about scratching your own itch and hitting exactly the right spot.
Even so: the experience of working through your requirements with someone else is clarifying and disciplining, because while you are the domain expert on your needs, that doesn't mean you're the domain expert on how to address those needs. You have the worm's eye view of your life and your needs, while an expert can have the bird's eye view that comes from working with many people, exposing them to many ways of solving problems, including ones you've never thought of.
Darren, the contractor who put in our new kitchen a couple years ago, had ideas for cabinet- and appliance-placement that had been refined by seeing, demolishing, building and revising orders of magnitude more kitchens than we had ever cooked in, and moreover, he clearly cared about our long-term happiness in our own home. The kitchen is great.
That care makes all the difference. Skilled craftspeople can bring expertise to the project that doesn't trump your needs, but can be co-equal with them. Scratching your own itch is great, having your itch scratched by someone who cares enough about you to know where your itch is, that's even better. But best of all is for that person to find the itch you didn't even know you had and scratch that, too. That's something that relies on the human connection that the best free/open source projects embody, the co-creation and community between developers and users.
If you've ever filed a bug against a free/open project and worked through the testing the devs need to squash it, you've experienced that co-creation. The devs want their code to work, because they care about the users, and you as a user can help other users and the devs by reciprocating that care through conscientious, patient, attentive bug reporting and testing.
I think that so much of the outrage about slop code – floods of garbagey pull requests and bug reports – is the result of the collapse of this dynamic. Slop's not merely annoying or time-wasting: it's a betrayal of the love and care that goes into writing and maintaining code for others. Your cat can scratch any part of its body, but it wants you to scratch it, and it will hiss at you and even claw at you if you scratch it the wrong way.
(Image: Orrling and Tomer S, CC BY-SA 3.0, modified)

Machine god metaphors eat your brain https://www.programmablemutter.com/p/machine-god-metaphors-eat-your-brain
Here’s What California Is Learning From Solar Panels Built Over Irrigation Canals https://www.kqed.org/science/2002033/heres-what-california-is-learning-from-solar-panels-built-over-irrigation-canals
Toads in a Pond https://longforgottenhauntedmansion.blogspot.com/2026/09/toads-in-pond.html
The Federal Agency That’s Supposed to Protect Consumers Just Made Another Business-Friendly Move https://www.propublica.org/article/cfpb-consumer-complaint-database
#25yrsago Surveillance is a security failure https://www.theguardian.com/technology/2001/sep/27/onlinesupplement.afghanistan
#25yrsago 9/11: the Viridian take https://web.archive.org/web/20011023095346/http://www.viridiandesign.org/notes/251-300/00272_au_revoir_belle_epoque.html
#25yrsago Announcing Wikipedia https://web.archive.org/web/20060517024408/http://www.kuro5hin.org/?op=displaystory;sid=2001/9/24/43858/2479
#25yrsago Phil Zimmerman says PGP can't be blamed for 9/11 https://slashdot.org/story/01/09/24/162236/philip-zimmermann-and-guilt-over-pgp
#20yrsago RIP, sf writer John M Ford https://memex.craphound.com/2006/09/25/rip-sf-writer-john-m-ford/
#20yrsago Gigantic Little Nemo book does justice to the loveliest comic ever https://memex.craphound.com/2006/09/25/gigantic-little-nemo-book-does-justice-to-the-loveliest-comic-ever/
#20yrsago 747s as flying Unix hosts: SCADA in the sky https://memex.craphound.com/2011/09/25/747s-as-flying-unix-hosts-scada-in-the-sky/
#20yrsago Mickey Infinite Copyright mashup https://web.archive.org/web/20061027141551/http://python.net/~goodger/projects/graphics/#mickey-s-infinite-copyright#mickey-s-infinite-copyright
#20yrsago HOWTO make a shoulder-bag out of floppies https://web.archive.org/web/20061025050629/http://www.instructables.com/id/E86165FIENERIE2PV6/?ALLSTEPS
#15yrsago TOSAmend: turn all online “I Agree” buttons into negotiations https://web.archive.org/web/20110925122850/https://www.owocki.com/2011/09/02/tosamend-the-easy-way-to-modify-web-service-terms-of-service-agreements/
#15yrsago That’s Disgusting! Awesomely gross picture book https://memex.craphound.com/2011/09/26/thats-disgusting-awesomely-gross-picture-book/
#10yrsago Swedish law will let you write off the money you spend fixing things rather than trashing them https://www.theguardian.com/world/2016/sep/19/waste-not-want-not-sweden-tax-breaks-repairs
#10yrsago Climate denial’s internal contradictions spring from a need to defend economic doctrine https://link.springer.com/article/10.1007/s11229-016-1198-6
#10yrsago There’s no pumpkin in “100% canned pumpkin” https://web.archive.org/web/20160927152542/https://www.foodandwine.com/news/i-just-found-out-canned-pumpkin-isnt-pumpkin-all-and-my-whole-life-basically-lie
#10yrsago The AI Now Report: social/economic implications of near-future AI https://web.archive.org/web/20161014142521/https://artificialintelligencenow.com/media/documents/AINowSummaryReport_3.pdf
#10yrsago Whistleblowing Wells Fargo loan officer describes years of fraudulent, criminal culture in the bank https://truthout.org/articles/wells-fargo-whistleblower-they-are-all-riding-the-stagecoach-to-hell/
#10yrsago Writer in 29th year of solitary confinement barred from reading his own book https://solitarywatch.com/2016/09/20/writer-in-solitary-confinement-is-barred-from-reading-his-own-book/
#10yrsago Despite sabotage and dirty tricks, Jeremy Corbyn wins Labour leadership race in unprecedented landslide https://www.bbc.co.uk/news/uk-politics-37461219
#10yrsago Who decided Corbyn was “unelectable”? https://www.youtube.com/watch?v=8os-nKuoM3o
#10yrsago The democratization of censorship: when anyone can kill as site as effectively as a government can https://krebsonsecurity.com/2016/09/the-democratization-of-censorship/
#5yrsago Demonopolizing the internet with interoperability https://pluralistic.net/2021/09/24/comcom-acm/#cacm
#5yrsago Copyright reversion, bargaining power, and authors’ rights https://pluralistic.net/2021/09/26/take-it-back/
#5yrsago The Scholars of Night https://pluralistic.net/2021/09/26/mike-ford-rides-again/#cold-war-zeitgeist
#1yrago Apple threatens to stop selling iPhones in the EU https://pluralistic.net/2025/09/26/empty-threats/#500-million-affluent-consumers
#1yrago The billionaires aren't OK https://pluralistic.net/2025/09/24/robo-lickspittle/#just-not-evenly-distributed
#1yrago Rage Against the (Algorithmic Management) Machine https://pluralistic.net/2025/09/25/roboboss/#counterapps

Boston: The Post-American Internet: Possibilities for a new
internet created by an American Hermit Kingdom (MIT Media Lab), Sep
30
https://www.media.mit.edu/events/the-post-american-internet-possibilities-for-a-new-internet-created-by-an-american-hermit-kingdom/
Boston: Rethinking Our Relationship with AI, Sep 30 (Emtech)
https://event.technologyreview.com/emtech-future-2026/detailed-agenda
Boston: The Paradox of Enshittification and Reverse Centaurs
(Harvard Berkman Klein), Sep 30
https://cyber.harvard.edu/events/running-harder-falling-faster-paradox-enshittification-and-reverse-centaurs
Brighton: Digital Sovereignty and the Post-American Internet
(Green Party Conference), Oct 3
https://www.openrightsgroup.org/events/digital-sovereignty-and-the-post-american-internet/
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
Hudson, OH: Hudson Library, Oct 7
https://engagedpatrons.org/EventsExtended.cfm?SiteID=3850&EventID=596952&PK=
Calgary: Wordfest, Oct 8
https://wordfest.com/2026/show/wordfest-presents-cory-doctorow-2026/
Winnipeg: McNally Robinson, Oct 9
https://www.mcnallyrobinson.com/event-18991/An-Evening-with-Cory-Doctorow
Paris: Slow Tech Summit, Oct 15
https://slowtechsummit.com/
Vancouver: Read, Resist, Repair, Rejoice (Vancouver Writers
Festival), Oct 19
https://writersfest.bc.ca/festival-event-2026/01
Victoria: Munro's Books, Oct 20
https://www.munrobooks.com/events/6113620261020
Vancouver: Life After AI (Vancouver Writers Festival), Oct
22
https://writersfest.bc.ca/festival-event-2026/46
Ottawa: Life After AI (Ottawa Writers Festival), Oct 24
https://writersfestival.org/event/life-after-ai
Kilkenny (Kilkenomics), Nov 6-8
https://kilkenomics.com/
Vancouver: Enshittification (Sid Williams Theatre Society), Nov
10
https://www.sidwilliamstheatre.com/events/cory-doctorow-talks-enshittification/
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
Montreal: World Science Fiction Convention, Sep 2-6
https://montreal2027.ca/en
Are 'AI Apocalypse' Warnings Just Marketing? (What's Left)
https://www.youtube.com/watch?v=IXd9HwIE5bo
The Real AI Threat Isn’t What You’ve Been Told (The
Tea with Myriam François)
https://www.youtube.com/watch?v=Vc8It00fRsA
Fascists may come after the AI bubble bursts (You&AI)
https://www.youtube.com/watch?v=J2WN64aQeYQ
What Would a Normal Person Do (Trashfuture)
https://www.patreon.com/trashfuture/posts/what-would-do-169247456
"Canny Valley": A limited edition collection of the collages I create for Pluralistic, self-published, September 2025 https://pluralistic.net/2025/09/04/illustrious/#chairman-bruce
"Enshittification: Why Everything Suddenly Got Worse and What to
Do About It," Farrar, Straus, Giroux, October 7 2025
https://us.macmillan.com/books/9780374619329/enshittification/
"Picks and Shovels": a sequel to "Red Team Blues," about the heroic era of the PC, Tor Books (US), Head of Zeus (UK), February 2025 (https://us.macmillan.com/books/9781250865908/picksandshovels).
"The Bezzle": a sequel to "Red Team Blues," about prison-tech and other grifts, Tor Books (US), Head of Zeus (UK), February 2024 (thebezzle.org).
"The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org).
"The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
"Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com.
"Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
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. Fourth draft completed. Submitted to editor.
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.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Bluesky (no ads, possible tracking and data-collection):
https://bsky.app/profile/doctorow.pluralistic.net
Medium (no ads, paywalled):
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
Reproducible Builds (diffoscope): diffoscope 331 released [Planet Debian]
The diffoscope maintainers are pleased to announce the release
of diffoscope version 331. This version
includes the following changes:
[ Chris Lamb ]
* Support radare2 >= 5.9.0. (Closes: reproducible-builds/diffoscope#432)
* Update debian/tests/control.
* Update copyright years.
[ Christopher Baines ]
* Add support for .nar files via Guix.
You find out more by visiting the project homepage.
Too many eyeballs? Free software security in the LLM era with Sean O'Brien [Planet GNU]
August 8, 2026 at 16:30 EDT.
Inconvenient People [George Monbiot]
The neglect and mistreatment of people with ME/CFS is a scandal of astonishing proportions.
By George Monbiot, published in the Guardian 24th September 2026
I’ve spent my working life covering neglected issues. But few are neglected like the devastating chronic condition ME/CFS (myalgic encephalomyelitis, or chronic fatigue syndrome). In severe cases, the illness shuts down people’s lives almost entirely, causing an extreme loss of energy and a wide range of physical and cognitive symptoms that can prevent patients from working, socialising and, sometimes, even moving or eating. Yet these people have been more or less airbrushed from our minds.
To find out what this neglect looks like in practice, this week I put out a call on Bluesky asking people with ME/CFS about their recent experiences of treatment. I was immediately inundated with horrifying testimonies. “I’ve just been completely abandoned”; “a 10-year waiting list for treatment”; “we’ve given up seeking medical support”; “stuck in limbo”; “I just felt utterly unheard, invalidated”. I’ve been sent hundreds of shocking and heart-rending accounts.
Exact numbers are hard to establish, but in the UK alone, an estimated 400,000 people live with the condition. It affects women far more than men, by a ratio of about 4:1, according to a study in England. The number of people with Long Covid, some of whom meet the diagnostic criteria for ME/CFS, was estimated in 2024 at 2 million in England and Scotland.
You might have imagined politicians and the media would be all over it. Instead, this great social crisis is met with silence or worse. Some outlets, despite the overwhelming weight of evidence, have mocked or trivialised these conditions.
There’s a long, dark history here, rooted in centuries of dismissal of predominantly female illnesses as “hysterical”, and amplified in recent decades by government attempts to reduce the benefits bill and insurers’ attempts to reduce payouts. If you can establish that a condition is caused by malingering, poor self-care or a negative attitude, you won’t have to cough up.
Official guidance in many countries was informed by a series of deeply flawed studies that purported to show these illnesses could be treated with cognitive behavioural therapy (CBT), or graded exercise therapy (GET).
In a remarkable triumph for patients and their advocates, who, after years of campaigning, at last obtained crucial data which had been withheld from them, the dominant studies were comprehensively discredited. In 2020, the National Institute for Health and Care Excellence (Nice) found that the quality of all the research promoting these therapies as curative treatments for ME/CFS was either “low” or, in most cases, “very low”. In 2021, it stopped recommending these therapies as primary treatments. We now know CBT cannot treat the condition (though it can sometimes help patients to come to terms with it), while GET is not only useless but actively dangerous, as exercise can trigger one of the most devastating ME/CFS symptoms: post-exertional malaise (PEM). PEM robs people of their remaining energy, rendering many patients bedbound, sometimes incapable of almost all movement.
Since then, two other things have happened. At the inquest into the death of a young ME/CFS patient, the coroner ruled that provision in the health service for patients with severe ME “was and is nonexistent”. Something would have to be done. And a number of potential scientific breakthroughs, some very recent, have begun identifying possible biological causes of both ME/CFS and Long Covid. Now, or so we should hope, it’s undeniable.
So what has changed as a result of these shifts? Alongside the horror and heartbreak in the testimonies of the people who emailed me, I was struck by the sense of sheer relief that someone, anyone, was asking the question.
Many said they are still being treated as if they have a psychological illness, and still being pushed into GET and CBT. One patient told me: “I’ve gone from relatively mild to now mostly house- and bedbound, largely thanks to repeated attempts at graded exercise and ‘pushing through’.” A few days ago, an NHS clinic told another patient to undertake “graded exercise” and “simply to walk, despite the fact I’m a wheelchair user”.
One mother told me “the consultant cardiologist recommended a graded exercise programme” and “a treadmill test” for her bedbound son. When she told him this contradicted Nice guidelines, he replied: “Well, what do you want me to do?” Another made the same challenge to her GP, but the doctor “denied this strongly and reiterated to my daughter that she should do the exercises”. This is very common: many doctors, I’m told, seem unaware of the new guidelines and react defensively when challenged. In many practices, GET has simply been rebranded as “building tolerance” or “pacing up” or “a little more activity each day”.
Patients report being treated with “contempt and derision”. Loads are still being offered CBT. Some have been propelled by NHS doctors towards quack private “cures”, now offered by a growing industry that preys on people’s desperation.
Others tell me they’ve not been pushed into inappropriate treatments, but “that’s only because I receive no treatment for it whatsoever”. Some have had to explain to their doctors what ME/CFS is. And it gets worse. I’ve been contacted by parents who have been accused of fabricating and inducing illness and even referred to social services, because doctors who seem to know nothing about ME/CFS believe they are making up their children’s symptoms.
It’s as if nothing has been learned. Perhaps that’s not surprising. A freedom of information request to NHS England found that, of the tens of thousands of practitioners who would benefit from it, after a year, only 74 had completed the new learning module on ME/CFS guidance. Meanwhile, as recently as last summer, the Department for Work and Pensions was still teaching its trainees elements of the old, discredited view of the condition. And, as the Liberal Democrat MP Tessa Munt, a hero of this story, tells me: “The piecemeal offerings in the government’s final delivery plan are not going to touch the system-wide failings.”
It’s not only the UK. I’ve been contacted by patients from around the world. In Sweden and Australia, official guidance still recommends GET and CBT. In Switzerland, I’m told, treatment is spiralling backwards, with a new wave of psychologisation. Norway, Finland and the Netherlands, despite their progressive medical reputations, sound like a waking nightmare for ME/CFS patients.
Of course, as there is no effective treatment, it’s a difficult situation for doctors as well as patients. But even worse than no solutions is false solutions, and a dangerous, gaslighting, even punitive approach to a terrible disease.
Across the decades, millions of people have been neglected, dismissed and mistreated, and still it goes on. We need to ask why so many patients have been abandoned, why discredited and dangerous treatments continue to be prescribed and why ignorance and neglect still dominate, in the health system and beyond. In other words, there has seldom been a stronger case for a public inquiry.
www.monbiot.com
Driven to the Brink [George Monbiot]
Petromasculinity not only kills people on the road. It spills into our politics, fuelling far-right individualism.
By George Monbiot, published in the Guardian 17th September 2026
Where is lawbreaking not just visible, but designed to be seen? Where is antisocial behaviour worn as a badge of honour? Where is pleasure gained directly from causing distress? And where is reckless endangerment often ignored by the police or treated with the mildest of punishments? The answer is on the roads.
Last month, three men in the West Midlands were convicted of street racing. Two were driving at over 80mph in a 40mph zone. The third clocked over 90mph in a 30mph zone. The West Midlands has long been blighted by organised racing, sometimes involving 200 cars or more and hundreds of spectators. The result is a long catalogue of deaths and life-changing injuries, including some caused when racers have left the road and ploughed into onlookers or pedestrians. And there are plenty more accidents where the police have little idea whether racing is to blame, for as soon as they happen, the drivers disperse.
The West Midlands is one of the few places in the UK where the police are actively trying to stop antisocial driving. An injunction bans street racing and dangerous tricks such as “drifting” (long sideways skids) and “doughnutting” (making the car spin on the spot). The local police commissioner has warned that reckless drivers “will face the full force of the law … including seizure of your vehicle and imprisonment”. But are the courts listening?
Of the three men convicted at Birmingham magistrates court, one received a suspended sentence, a £272 fine, 150 hours of community work and a two-year driving ban. Another was handed a £1,275 fine and seven penalty points: in other words, he could step out of the court and back into his car. The man who did over 90mph in a 30mph zone got a £253 fine and a 56-day driving ban. He’ll be back on the roads in November. All appear to have kept their cars.
If these men had caused the same level of endangerment by any other means, it’s hard to believe they would have got off so lightly. But in dozens of ways, driving gets special treatment.
There’s a similar racing culture in mid-Wales, where I lived until 2012. Night after night, a convoy of cars with exhausts modified to be as loud as possible would race past, at 50mph or more in a 30mph zone. They would start at around 10pm and continue some nights until 2am, going round the nearby roads in a loop. As soon as I’d got my infant daughter to sleep, they’d roar past and wake her up again.
Calls to the police were useless: they told me to take down the number plates and “report the incident”. When I did so, they explained, in effect, that I was wasting my time, as I couldn’t prove the drivers were breaking the speed limit. In fact, their advice was counterproductive: when I went outside to take the plates, the young men jeered, gave me the finger and accelerated. It seemed that shock and disgust was what they craved. And this was before TikTok, where drivers can achieve much wider notoriety.
The first young man to “do a ton” (100mph) down my high street in Wales on his motorbike became a local hero. Soon afterwards, he rode into a wall and died. Other drivers killed their passengers, hit pedestrians or forced other cars off the road. When people were killed or injured, the drivers were prosecuted and lightly punished, but there was little effort to address the underlying culture. Some men went straight back into the convoys when they regained their licences. I’m told that nothing has changed, despite the default 20mph speed limit now applied to residential areas across Wales. Every year a new cohort of young men joins the local urban racetrack.
Now I live in Devon, where there’s a different culture of antisocial driving. Here it’s mostly middle-aged men in “lifted” pickup trucks, which have been modified to be as loud and smoky as possible. Two local SUVs have been refitted to “roll coal” from twin exhaust towers mounted behind the cab, releasing a dense black cloud of soot when the driver hits the “smoke switch”. Adapting your truck for this purpose means buying a “delete kit” to bypass the vehicle’s emissions control system, retuning the engine and fitting bigger injectors. The practice emerged in the US, both as an anti-environmental protest and as a form of amusement. It is largely deployed against cyclists, pedestrians and electric vehicles. I’ve seen these two trucks doing it, blinding the drivers behind and choking everyone around. Of course it’s illegal. But it doesn’t seem to be a priority for the police in my area.
What we see here are manifestations of petro-masculinity: a violent, misogynistic, climate-denying version of manhood, expressed through an antisocial driving culture. Some of the modified trucks have decals saying “Stop the Boats” or “Save Our Children” (who are apparently being brainwashed by LGBTQ+ cultural Marxists). This is the Magafication of transport – a vehicle that carries some of the worst aspects of US culture and politics into the UK.
It’s the extreme end of a much wider trend. In the UK last year, 52% of the new cars on sale were SUVs. Not only do the ever-rising bonnets of these trucks make it harder for drivers to see pedestrians and cyclists, especially children, but higher and heavier cars are also more likely to cause deaths or serious injuries when they hit people: children under nine are three times more likely to be killed if they’re hit by an SUV than by a regular car.
And what are they for? On narrow country lanes round here, tourists in these “off-road” vehicles won’t back up if it means touching a hedge, in case the high-gloss finish on their Wankpanzer Childkiller gets scratched. In one of the poshest parts of London, the Chelsea Truck Company advertises “iconic urban 4x4s”. “Iconic” appears to mean huge. But what the hell is an “urban 4×4”? And why is it legal?
Isn’t it obvious that selfishness on the road changes us as a society? The belief that drivers should be allowed to do whatever they please, regardless of the impact on others, mounts the pavement and travels deep into our lives. If this is to be a decent, inclusive country that values human life, then the law and its enforcement should match that aspiration. But when the roads are used to amplify and celebrate a dangerous, antisocial culture, we are driven towards a very dark place.
www.monbiot.com
Playing With Fire [George Monbiot]
With its determination to extract more fossil fuels and its useless adaptation plans, does the UK government have any idea what it is igniting?
By George Monbiot, published in the Guardian 10th September 2026
Pinch yourself, it’s happening again. Here is a Labour government spending a vast amount of political capital to earn tiny material gains, while risking huge political losses. It occurred repeatedly under Keir Starmer, and now – with the impending decision to approve further gas and oil drilling in the North Sea – it is happening under Andy Burnham. You rack your brains to explain it, but no rational explanation comes.
Burnham is studiously cryptic about his reasons. His clearest statement to date goes as follows: “There is a resource there. When people are struggling, we can’t ignore that.” Does he mean that oil and gas workers are struggling? If so, this decision will be of little use to them. The Jackdaw gasfield, likely to be approved this week, will generate a grand total of 27 direct full-time jobs. The Rosebank oilfield, whose approval is likely to follow soon, will support 450 UK-based jobs during its lifetime. Yet the UK’s net zero economy directly employs 300,000 people, and a further 400,000 jobs are planned. The rest of the green economy employs more than 600,000. A just transition for fossil fuel workers, securing jobs in the green economy, is better for everyone.
Or does he mean energy consumers are struggling? The gas in the Jackdaw field will make a tiny contribution to our supply and no significant difference to either our energy bills or our energy security. Switching to renewables makes us far better off in both respects. Any oil produced by the Rosebank field is unlikely to be refined in Britain, as we no longer possess much capacity for handling oil of that kind. And as for the national accounts, a recent estimate suggests that the climate damage caused by the fields’ extra emissions would outweigh any economic benefits several times over.
In fact, the two greatest threats to the global economy might now be climate breakdown, which, as a wide range of economists and eminent organisations forecast, threatens comprehensive economic collapse, and the AI bubble, which the governor of the Bank of England warns could burst with dire consequences. Then people will really be struggling. Yet our government and others cheerfully accelerate both forces – claiming, as ever, that the industries driving them will unleash “growth”. Growth in repossessions, perhaps.
While the small amount of fossil fuel these two fields will produce allows politicians to argue that their climate impacts can be ignored, the diplomatic implications are considerable. The only chance of preventing climate catastrophe is international agreement based on mutual trust. To its credit, the UK – while falling short of what many of us would like to see – has been a leader in these efforts. But when our government refuses to leave fossil fuels in the ground, its credibility diminishes – leaving its negotiating position weakened.
Burnham might believe this decision will get Reform UK and the Conservatives off his back. Of course it won’t. He might imagine it will appease Donald Trump, but you can’t appease Trump. Whatever you give him, he will always want more.
As for the political implications, here the disparity between gain and pain becomes truly enormous. The approval of these fields is a defining issue for many Labour MPs and the voters they fear they might lose. The policy could scarcely be better designed to give the final push to voters who are minded – after so many disappointments since 2024 – to abandon Labour for a progressive alternative.
If Zack Polanski, the Green party leader for England and Wales, wins the seat Keir Starmer has just vacated, this could be a major reason why. Burnham’s North Sea policy is the kind of battle Starmer’s former chief of staff Morgan McSweeney would have urged him to wage – let’s stick it to the Labour left, mwahaha – which is a major reason why Starmer is no longer prime minister.
Few in power seem to understand the fire they are playing with. Last week, the environment secretary, Angela Eagle, appeared to acknowledge that we face the risk of potentially catastrophic environmental breakdown and urged us to store some extra food in our homes. The way she put it suggested that either she hasn’t grasped the magnitude of what we face, or she is trivialising the issue: “If you’ve got a store of a bit of food that can keep you going for a while before the emergency services can get to you, you’re going to be a lot better off than if you haven’t.”
Right. So let’s imagine one of several possible disasters some of us have long been warning of arrives. As a result of harvest failures caused by climate breakdown, severe transport disruptions or – and this now looks alarmingly plausible – sudden systemic collapse in the food sector, the supermarket shelves empty, more or less overnight. We know that the UK government refuses, without explanation, to maintain strategic food reserves. So there are no government supplies, either. As our beans and crackers run out, the emergency services visit all 29 million of our homes. With what? Tea and sympathy? Sorry, no tea. Another slice of sympathy?
Certainly, those of us who have the money and capacity to store food should do so: after all, no one else has our backs. But the idea that such individuated solutions would be any use in the face of societal catastrophe is neoliberal nonsense. As always, it is the poor and excluded, with neither the cash nor the space to lay down significant supplies, who will be hit first and worst. Social breakdown would happen in days. The UK government, then, is being serious about neither the measures required to prevent climate catastrophe nor the measures required to survive it.
The sense in almost every nation is of governments failing to take seriously the most serious of issues, while spending immense political resources on topics that scarcely affect our welfare (such as a few thousand people crossing the Channel in small boats). Or even – as is the case with North Sea oil and gas – using their scarce political capital to make things worse for everyone, including themselves.
Our government is not a doomsday cult like the Trump government, creepily fascinated by the “end times”, as the US vice-president seems to be. But in terms of outcome, is there much difference?
www.monbiot.com
Self-Disposal [George Monbiot]
Why are our prime ministers more afraid of a few wealthy people than they are of losing office?
By George Monbiot, published in the Guardian 2nd September 2026
Damn the electorate. They’re so impatient. No sooner do they get a new leader than they want another one. Those ingrates are already starting to grumble about Andy Burnham. Maybe the country is becoming ungovernable. Perhaps it’s social media. Or a consumerist culture, always picking the next shiny thing. Perhaps we’re addicted to drama. As we’re on our sixth prime minister in 10 years, and as similar levels of discontent surface in many other countries, these claims are recited across the media. What’s wrong with us?
Yet our disgruntlement is entirely rational. We give up so quickly on our prime ministers because they give up so quickly on us. Though it may involve different issues, it is always the same betrayal: the public interest is sacrificed for the sake of a tiny number of immensely wealthy people. And it tends to happen almost immediately.
The latest example, which has triggered both fury and grim resignation, is Burnham’s backtracking on his intention to cap political donations. It was hardly a radical policy: he proposed that no person would be able to give more than £500,000 to a political party in one year. That would still have granted the very wealthy disproportionate influence over our politics.
I have long believed that the only fair system is one in which there should be no private donations at all beyond a standard, fixed membership fee. Otherwise voters will always take second place to money. But at the moment there is no cap, which ensures that billionaires can buy political parties and their platforms. So a £500,000 maximum, pathetic as it is, is at least a start. In a subsequent pledge, Burnham suggested that it could gradually be lowered.
Now, we are told, even this high cap has been abandoned: the representation of the people bill will concentrate instead on introducing Keir Starmer’s risible proposals, which are intended to limit donations sent from abroad but not from within the UK: as if billionaire donors and their wealth managers have no expertise in transferring money from one account to another. The loopholes are designed in.
Burnham’s buckling on this issue is not a small matter. It cuts to the quick of what this country is and how it works. It has immense implications for democracy, for policy formation and for every other aspect of civic life. What it means is that the ultra-rich will continue to own our politics and our country. Succumb to the power of money and you will find yourself, like Starmer, tongue-tied and immobilised, unable to rise to any challenge that requires a confrontation with oligarchic might. In other words, get this wrong and every other wrong thing follows.
The official reason for Burnham’s U-turn is that trade unions objected: they have long channelled large sums into the Labour party. I doubt this is the real explanation; most of the donations Burnham received for his leadership campaign came from large private donors. Almost half was supplied by Lord Sainsbury, who was also a major funder of the Starmer project. Union money scarcely featured.
But even if Burnham has retreated from his promise for the sake of the unions, I believe trade union funding is also problematic. It ensures that sectoral interests are elevated above the general interest. For example, Labour governments know they can safely bash benefit recipients, who aren’t unionised, while they tread very carefully – far too carefully in my view – around the interests of oil workers. And if the unions believe that an uncapped system works for them, they are deluded. They can never match the spending power of billionaires, whose interests in most cases are diametrically opposed to those of their members.
The power of the ultra-rich is now manifest in every policy governments do adopt and don’t adopt. We see it in the new protest laws and their applications, which become more absurd by the week. A few days ago, seven protesters who painted “Gaza is not 4 sale” on Donald Trump’s Turnberry golf course in Scotland were charged with malicious damage “having a terrorist connection”. Labelling protesters “terrorists” is part of a long-running programme to ensure that no one dares protest about anything any more. This programme has been rolled out across the world, through model legislation drawn up by junktanks funded by some of the richest people on Earth. Just as it did in the 18th century, an ever more extreme defence of property keeps pace with a growing concentration of wealth.
We see it in the way that datacentres have been labelled “critical national infrastructure”, enabling the government to bypass the usual planning process and impose them on communities, regardless of their impacts on local people’s quality of life, on water resources, energy supply and climate breakdown. Again, similar measures are being imposed in other countries at the behest of the same billionaire-funded groups. The role of governments appears to have been reduced to nodding them through.
We see it in the Burnham government’s insistence this summer, in the midst of shattering droughts, heatwaves and fires, on launching a consultation that proposes radically curtailing the transition to electric vehicles. I believe there is only one possible explanation for this policy: lobbying by corporations and their shareholders. Their interests appear to outweigh those of the living planet and its 8 billion people.
If our country and many others are becoming ungovernable, it is not because of the people. It is because the ultra-rich have smashed the system. The electorate and the MPs who might seek to represent us pull the political levers, but nothing happens. They might replace the leader, but the new one promptly repeats the “mistakes” that caused the eviction of the old one. It makes you wonder: what threat do the oligarchs present that outweighs even the threat of losing power?
Whatever the reason may be, disillusionment is an inevitable result of such betrayals. I think most people want stability. I think most people want to be able to trust their governments. We don’t like in-built obsolescence in our leaders any more than like it in our phones. I don’t want to see Burnham go the way of Starmer. But I know he will succeed only if he defends the public interest against the power of money. So what’s stopping him?
www.monbiot.com
Eat, Drink and Be Merry [George Monbiot]
Successive governments stonewall any talk of strategic food reserves. They side with the grasshopper against the ant.
By George Monbiot, published in the Guardian 13th August 2026
When a business makes long-term plans, they call it prudence. When a government makes long-term plans, they call it communism. Any sustained state intervention attracts the prefix “Soviet-style”, and triggers vicious attacks across the billionaire media. So governments have developed a bias against long-term thinking. This may explain why we no longer maintain strategic food reserves.
In Britain, where soils have parched, market analysts warn that we’re facing the most severe food security crisis in decades. In normal years, crop failures at home don’t threaten our security, thanks to global trade. This is one of the reasons why hunger and famines are rarer and less deadly than they used to be. But this is not a normal year, because the problem is now global.
Similar impacts are hitting farmers across Europe and in the US, whose wheat production this year is forecast to be lower than at any point since 1971. Until a few weeks ago, harvest forecasts in Canada were excellent, now its spring wheat is also shrivelling in hot and dry conditions.
Ukraine has had a good growing season, but export forecasts have been cut as a result of Russia’s attacks on its ports. At the same time, crucial global pinch-points for food and farming supplies are tightening: Donald Trump’s aimless war with Iran has caused major reductions in shipping through the strait of Hormuz, the Red Sea and the Suez canal. These have become essential trade routes for fertiliser and, more recently, food, thanks to the Middle East’s emergence as a major re-export hub.
One impact of these disruptions has been to divert more shipping through the Panama canal. But the canal is now afflicted by drought, which has led to restrictions on ships’ draught (depth under water). The global circulation on which our food security depends no longer looks reliable.
It’s not just that these impacts can immediately restrict the availability of food, even in wealthy importers such as the UK (poorer nations in the Global South are, of course, hit much harder). It’s that they also land on a global food structure that has become systemically fragile. It is now highly exposed to the risk of cascading collapse that nearly brought down the financial system in 2008. In fact, it suffers from very similar dysfunctions. The government knows this, because a report by its own security advisers warns that our food supply is “at strategic risk of catastrophic failure” by 2030. It responded by suppressing the report.
As with all potential system failures, it’s impossible to say where the tipping point may be. But what we can say is that if such an event occurs, the impacts would be beyond contemplation. It could be the most deadly global crisis in modern history.
A world in which governments hold strategic stockpiles has a better chance of weathering either a temporary shortfall or a systemic failure. If food reserves were big enough, they would buy us enough time to rebuild the system. In their absence, if the food system collapses, so does society.
The UK once held strategic food reserves, albeit very limited. But in the late 1970s and early 1980s, our governments decided they were no longer necessary, as private retailers would maintain sufficient stocks. As the National Preparedness Commission points out, this policy coincided with decisions by the big retailers to stop holding stocks and switch to a just-in-time system: goodbye warehouses, hello logistics. No subsequent government appears to have noticed that its food-security assumptions are based on conditions that no longer exist. Perhaps they looked away out of the fear of being labelled interventionist. Perhaps they fear criticism more than crisis.
Today, as far as I can tell, the government’s sole food storage intervention is a single unpublicised paragraph on its Prepare website. It instructs us to “Put together an emergency kit of items at home. This could include: Non-perishable food that doesn’t need cooking … how much you need will vary based on your own circumstances.” Invaluable advice, I’m sure. That scarcely anyone has seen it, that many people have no space for an emergency food store and no money to buy it with is just bad luck. Perhaps we don’t deserve to survive.
I write as though I’m confident that the UK does not maintain stockpiles. For several years, I have been asking the environment department this simple question: does it or does it not hold them? The Conservatives were honest enough to say “no”. But since Labour took office, it has repeatedly failed to answer. When I asked again last week, it sent me a long disquisition on related subjects, but signally failed to answer the question. I then asked why it hadn’t answered, and received no reply to that either. I find this response more eloquent than a candid “no”. It tells me two things: “the answer’s still no” and “we know the policy is wrong”. Otherwise, it would be happy to tell me about it.
The government also told me: “The UK has a highly resilient food system, drawing on both strong domestic production and international trade and we do not expect the recent dry weather to have any impact on national food security.” This claim, which defies warnings from the security services, market analysts and the food trade itself goes beyond complacency. It’s denial.
As far as I can tell, since he became prime minister, Andy Burnham and his office have not said one word in public about the climate crisis.On Wednesday he chaired an emergency Cobra meeting to discuss the extreme heat, the drought and the wildfires. But, at the time of writing, there has yet to be a public statement about what has caused this crisis, and how we might cause less of it.Yet No 10 did find time last week to intervene on Westminster council’s plan to limit vertical drinking in Soho. Good to know it is laser-focused on the crucial matters of state.
The government’s disregard and denial sustains our proud tradition of heroic failure, from the charge of the Light Brigade to Brexit. Food reserves are for losers. Prudence is for suckers. Somehow the words “British” and “invulnerable” have become muddled up.
In good times, government stockpiles look like a waste of money and effort. But the role of governments is not to prepare for the good times. Governments exist to defend us from harm. And this isn’t possible without long-term plans.
www.monbiot.com
Accept Your Fate, Earthlings [George Monbiot]
How capitalism stopped pretending, and became an undisguised death cult.
By George Monbiot, published in the Guardian 5th August 2026
Can’t you leftists understand? Mass death is good for you. Reject the woke love of life! Welcome civilisational collapse! Watch it all burn, then dance in the ashes! This, roughly speaking, is how the dismissal of climate action is now being justified: the argument has shifted from science denial to outright nihilism.
The new incendiary spirit is exemplified by that serial arsonist Allister Heath, editor of the Sunday Telegraph. In a column in the Daily Telegraph last week, originally titled “Britain can’t stop climate change. Scrap net zero and embrace Mediterranean life”, he argued that “climate change is real” but “the war against global warming has been lost”.
This is a classic progression among those who seek to prevent a shift away from fossil fuels: first deny the problem, as the Daily and Sunday Telegraph have done for many years, then accept the problem but claim it’s now too late to act. If it is too late, it’ll be in no small part because of the deniers. So, Heath continued, we in Britain should “ditch the despicable con that is net zero, and learn to cope with … a warmer, drier, more volatile Mediterranean climate, if that is indeed to be our fate”.
Seeking to cut our emissions, he argued, shows that we suffer from an “advanced case of suicidal empathy”. I’m not qualified to diagnose people, but as a general rule, a lack of empathy, alongside callousness and an absence of guilt, is a strong indicator of a psychopath. Yes, he continued, “there will be plenty of losers, but it is pointless seeking to prevent the inevitable … Many in Britain would enjoy the kind of warmer climate predicted by modellers”.
His timing was impeccable: extolling a Mediterranean climate just as the Mediterranean region goes up in flames. Amid general derision on social media, the editors changed the headline.
Heath’s column also happened to land on the day drought was declared across half of England. Nevertheless, he argued, we need universal irrigation and should construct more swimming pools. Where will the water come from? Oh, don’t get all empirical with me. He maintained we should “trust that the free market will deliver the goods on clean energy and zero-carbon transportation, but only when they are better and cheaper than existing alternatives”. But renewables are already cheaper, and better for us, than fossil fuels in almost all situations. It is only through resistance to the “free market”, led by the Trump administration – which has spent billions trying to kill clean energy and sustain coal burning – that fossil fuels retain such a share of consumption. As a result of the plunging price of renewables, far from having lost the climate war, we could be about to witness a rapid turnaround. So quick, give up now, just in case we win.
He dismissed cutting carbon emissions in the UK as a “moral act, an ethical imperative”, by which he appears to mean unhinged: “Down that road lies madness.” Yes, cutting our own emissions is a moral act and an ethical imperative. It is also pragmatic. Global action on climate breakdown depends on mutual trust. If some countries refuse to play, others are also likely to refuse, and an effective global response collapses in a circle of finger-pointing. This risk is all the greater when rich nations, which tend to have the biggest fossil fuel legacies, seek to behave as free riders. If we don’t step up, why should anyone else?
As for the “warmer climate predicted by modellers”, it could go quite the other way, as rising temperatures, some models suggest, could cause the Atlantic current system to stall, plunging Britain into extreme cold. Well, you’ll just have to learn to adapt to that instead.
Heath’s defiance of reality is so well established that it has spawned an “Allister Heath headline generator”, which pumps out bonkers statements not easily distinguishable from the originals. In a close field, I think he takes the prize for being more wrong more often than anyone else in British journalism. This, after all, is the man who described Kwasi Kwarteng’s fiscal catastrophe as “the best budget I have ever heard a British chancellor deliver, by a massive margin”. It’s a reliable rule: if Heath believes something, the opposite is likely to be true.
But it’s not just him, and it’s not just journalism. The radical right moves as a pack, and Heath is just one of many now insisting that climate catastrophe is something we should simply suck up. Those grammar deniers Reform UK, for example, insist: “We are better to adapt to warming, rather than pretend we can stop it.” Of course the same political tendency also defends austerity and privatisation, both of which severely hamper our ability to adapt.
To their credit, two Telegraph columnists, Ambrose Evans-Pritchard and Tim Stanley, last week broke the nihilist consensus, arguing we should rise to the challenge of climate breakdown. But they now belong to a minority, in the Telegraph and across the rightwing press.
Why? Because most of the media, most of the time, provides a platform for people who say things that serve capital, whether or not they are true, whether or not they are coherent, whether or not they may hasten disaster. While renewables are cheaper than fossil fuels in nearly all circumstances, fossil fuels are more profitable, because useful reserves are limited and can each be monopolised by a single corporation, while prices can suddenly take flight in times of war or chaos. Almost all the very rich are heavily invested in them. The result is that any attempt to restrict the use of fossil fuels is perceived as class war. Nonsensical justifications for the status quo then follow as automatically as the Allister Heath headline generator.
So “embrace Mediterranean life”. But without the wine, which, as another Telegraph column laments, is becoming “smoke tainted” by all those fires triggered by some unmentioned and mysterious force. And without the food, whose production, thanks to the drought and heatwaves, is at grave risk in southern Europe, as it is here. And without your lovely gite, which might have been incinerated. Or the lush green landscape, also lost to the flames. Or the balmy summer temperatures, now replaced by murderous heat. Oh go on then, you know what I really mean: embrace death.
www.monbiot.com
Our 1933 Moment [George Monbiot]
At astonishing speed, around the world, fundamental rights are being cancelled at the behest of oligarchs and corporations.
By George Monbiot, published in the Guardian 31st July 2026
No more resistance in the US. The era of human rights is over, and dissent is once more forbidden. This is what certain billionaires and their concierges want, and this is the model they’re also seeking to project across the world. If we fail to resist, if our new prime minister is as weak and suggestible as the last one, this is what we will get. In fact, we are halfway there already.
Why? Because successive governments in the UK have succumbed to a global campaign to cancel our fundamental freedoms, a campaign led by oligarchs and corporations, the media they own and the junktanks they fund. A campaign that has become definitional for the second Trump presidency.
At a global summit convened by the US government earlier this month, the Trump administration officials Marco Rubio, Stephen Miller and Scott Bessent explained that they were redirecting counterterrorism efforts away from Islamic jihadism and towards “the political left”. Most of the examples they cited to justify this shift were more than 30 years old. Several times they had to dig down to the 1970s to find a sufficiently menacing threat. You could hear the barrel being scraped.
Without producing a shred of evidence, Rubio, the secretary of state, claimed that the Cuban government is “inextricably linked to the far-left groups and movements across and beyond the west”. The following week, his department sought to justify this claim with a report containing a long list of leftwing legislators, journalists and activists that attempted to link them to Cuba in ways that ranged from the tenuous to the hilarious. This is a well-honed tactic, used prolifically by the Nazis among others: they claimed dissenters, by definition, were part of an international communist conspiracy. They insisted, as Rubio did, that “it is time to crush this evil for ever”.
That wasn’t the only crude reminder. Miller, Donald Trump’s deputy chief of staff, maintained that when you see antifascist protests, “not one of the people that is demonstrating looks like a normal person. Not one looks normal. They’re all deformed in some way – in their appearance, in their dress, in their mannerism … their outer appearance becomes a manifestation of their inner hatred.” I’m just surprised he didn’t say “untermenschen”. The US government, by contrast, promotes “normal, healthy, ordered living”.
But what hit me even harder was Miller’s attack on “jury nullification”: jurors acquitting people who, he said, were “obviously guilty”. Shutting down this possibility has been an aim of illiberal governments and conservative judges around the world. We saw it in the UK in the prosecution of Trudi Warner and others for holding signs that state an ancient principle in English law: “Jurors have an absolute right to acquit a defendant according to their conscience.”
We see it in the astonishing prosecution, being pursued at the moment, of Rajiv Menon KC, who reminded jurors of this right at the trial of the Palestine Action campaigners he was defending. He became, as a result, the first lawyer in English history to be charged with contempt of court for a closing speech. If convicted, he faces up to two years’ imprisonment and will be struck off. Prosecuting lawyers for defending their dissident clients is more or less the definition of authoritarianism.
We also saw it in the assault Keir Starmer launched on jury trials as a whole, greatly curtailing, without any coherent justification, our strongest defence against injustice.
Starmer was a weak man, without a clear vision of his own, who was rolled by any powerful state or corporate lobby. He was no match for a well-funded and highly effective international campaign. A network of groups such as the American Legislative Exchange Council, funded by corporations and billionaires, has been producing “model legislation”. The groups test these laws in sympathetic jurisdictions. If they are found to work, they then press for their adoption elsewhere. The result is a sustained assault on our rights to protest, to political equality and to a habitable planet.
The globalisation of this attack on our fundamental rights is a key conservative aim. As capital operates everywhere, so should its ability to crush our objections. The long series of vicious anti-protest laws in the UK is an outcome of sustained lobbying by junktanks, the media and other governments. The result is a country that now keeps hundreds of political prisoners, a country in which you can get six months in jail for marching slowly down the street.
These oppressive laws have culminated – so far – in an act of parliament passed in April that enables the police to shut down any protest they deem to have a “cumulative” impact on the community. The only protests that have ever succeeded are those with a cumulative impact. Protest is acceptable as long as it’s useless. Let the people have their say, but only if we can’t hear them.
The new laws have been accompanied by that age-old trick, traditionally associated with fascist regimes, of smearing leftwing dissidents as terrorists. As the rights group Liberty has pointed out, the definition of terrorism here has greatly expanded, to incorporate tactics formerly regarded as civil protest. This is what enabled Starmer’s government to ban Palestine Action.
The judge who referred Menon for contempt, Mr Justice Johnson, was also the first – at the same trial – to use the extraordinary powers quietly inserted by the Conservatives into the Sentencing Act 2020. These enable someone tried for one crime to be sentenced for another. The four Palestine Action protesters were convicted of ordinary crimes. But, without informing the jury, Johnson marked the case as having a “terrorist connection”. He then sentenced them for terrorist offences, which means much more prison time.
Already, his example has been followed by another judge: a different group of pro-Palestine protesters, who sprayed red paint and broke some windows of a branch of Barclays Bank, are about to be sentenced as terrorists, though neither they nor the jurors were told of this possibility during their trial for criminal damage. This means, of course, that they were unable to defend themselves against this far more serious charge.
Nothing is safe from the billionaire assault on humanity. None of our rights, however ancient and familiar, are impregnable. Fight for them now or lose them, perhaps for ever.
www.monbiot.com
Chickened-Out [George Monbiot]
Trashing the living world on behalf of corporate power: is this really all we can expect from the ministers in charge of protecting it?
By George Monbiot, published in the Guardian 23rd July 2026
There’s a slightly mean question I often ask British people with an interest in the living world: can you name the Environment Secretary? I don’t intend to show them up: it’s not them I’m testing. I watch the brows knit, a finger go up, the mouth open and close. “It’s, you know, the one who … no, they went, didn’t they? That other one …” It’s been like this for seven years.
Why? Because throughout this period, we’ve not had environment secretaries. We’ve had portals through which corporate lobbyists may pass. The last incumbent to represent the wider public interest (and I can scarcely bring myself to type these words) was Michael Gove. In his other roles, he’s widely remembered with loathing and disgust. Out of office, he continues to poison public life, as editor of the Spectator. But in this role, to general astonishment, he placed the public good above special interests.
Standard operating procedure, by contrast, is exemplified by the final acts of the outgoing secretary, whose name, to put you out of your misery, is Emma Reynolds. To give just one example – which could be seen as an embodiment of everything that has gone wrong here – she spent her last weeks in the post trying to remove the brakes on industrial chicken farming.
In front of a parliamentary committee this month, she railed against the planning constraints holding back yet more giant chicken factories (let’s not grace them with the name of farms). If only these obstacles were demolished, she mused, “there is great investment out there waiting to be made … I want to bring down these barriers as much as you do”. She said she had spoken to other departments to ensure permission for new chicken factories was easier to obtain.
Neither she nor the MPs questioning her gave any hint of why these buildings have run into trouble with the planning system. In fact, there was no mention of any of the problems the factories cause: the MPs’ only apparent interest was in what the industry wanted. What’s the point of MPs if they simply channel corporate demands? But these factories are killing some of our most beautiful rivers. They generate far more dung than the surrounding fields can absorb. The surplus washes downhill into the nearest stream.
The only decision that counts is the planning decision. As soon as permission for a chicken unit is granted, the local tributary, and possibly the main stem of the river it drains into, is as good as dead. It’s not even as if these factories support jobs and growth: by killing the rivers, they help to destroy local economies.
I thought we’d won this argument. But argument, it seems, is no match for economic power. Reynolds’s loyalties appeared to lie not with the ecosystems she was meant to protect, but with the lobbyists threatening them. Perhaps this shouldn’t be surprising: before she joined Keir Starmer’s government, she worked as a lobbyist, representing the financial sector.
Disturbingly, it was the new environment secretary, Angela Eagle, while working as Reynolds’s deputy, who sought to drive through the “planning reforms” the poultry industry is demanding, telling chicken lobbyists “planning should enable ambition, not stifle it”. Will she now take Burnham’s “circuit breaker” promise seriously, and junk this appeasement of one of our most destructive industries?
At a recent farming festival, Reynolds claimed that boosting the poultry sector would enhance our food security. I don’t know how many times we need to point this out, but isn’t it bleeding obvious that it has the opposite effect? The feed sustaining chickens in these factories must be either imported or grown on land that could otherwise directly feed people. There could be more soya in chicken than in tofu: one report estimates that it takes 109g of soya to produce 100g of chicken breast. Yet this is just one of several components of their diet.
The chicken business in the UK is also controlled by a handful of giant companies: another security red light. If food security were the objective, the government would encourage us to eat fewer chickens and other animals, and more plants. But in parliament, Reynolds also proudly announced that she was disregarding the targets set by the government’s Climate Change Committee to reduce livestock numbers. I find myself asking, over and again: “Are they trying to harm this country?”
To advance their dismal agenda, Reynolds and Eagle set up something called the Farming and Food Partnership Board. Its aim is to encourage “closer collaboration between farming, industry and government”. How could it possibly be closer? The environment department, Defra, is a wholly owned subsidiary of the farming industry. The only members of this new board are government ministers and corporate representatives and lobbyists. Among its objectives is a “poultry sector growth plan”, to address the issue of “planning barriers”.
This chickening out is just one of many examples of how, by working for special interests, the environment department has harmed the ecosystems and the people it is supposed to protect. Another is the government’s “delivery plan” to restore nature, released by Reynolds just before she left office. It’s not a plan, and it won’t deliver: just a catalogue of vague hopes and blandishments. It could be summarised as “do nothing, for fear of offending landowners”. Far from meeting its promise to protect and restore 30% of the land in England by 2030, Reynolds’s department has presided over continued decline. That’s her legacy: less nature, less resilience, less security.
Much worse is planned: Starmer’s government proposed a “regulating for growth bill”, whose text we haven’t yet seen, but which appears to threaten even greater assaults on nature protection. It may contain one of his government’s most alarming proposals: creating a system that could be described as pop-up freeports, in which companies all over the country would be able to operate in temporary “sandboxes”, where the usual rules don’t apply. We should see this as a key test of Burnham’s promise to end neoliberalism: will he drop this nonsense?
I’ll keep asking the question, regardless of who occupies this office: do you know the name of the environment secretary? The answer is likely to depend on one factor: whether they are ready to break the grip of corporate power, and defend us and the rest of the living world. Whether, in other words, they want to do their job.
www.monbiot.com
[$] How KDE got funding to add enterprise features [LWN.net]
The Sovereign Tech Agency (STA) is investing nearly €1.3 million in KDE through 2027. At Akademy 2026 in Graz, Austria, Nate Graham and Kevin Ottens, two of the contributors who helped bring in the investment, explained how the funding was secured, provided tips on how projects should approach organizations like STA, and talked about how that money will be improving KDE for everyone. In addition to keeping the community informed about the work, the pair hoped to pass on what they have learned to encourage others to help raise funds for development as well.
I'm contemplating a couple of additions to Frontier in the Atlantis release. Two new formats, JSON and Markdown, have come along and become popular since I last worked on Frontier. Two fantastic open formats, in wide use on the web. From many years of working in JavaScript, I miss JSON in Frontier. Esp JSON constants and the ability to walk through structures as arrays or objects. It's just rational, so I'm thinking we should have a JSON type, and incorporate JSON syntax in UserTalk. Markdown support is actually needed because we don't have code that works in the new environments for doing a wizzy text type. Luckily Markdown is here to fill that need. I've started a thread on this, if people have comments. Frontier was famously flamy because we had the ridiculous belief that everyone deserved to be heard anywhere they wanted to. That was not a good idea. These days I use the block command at the first sign of trouble. No second thoughts or chances.
A summary from the 2026 Git Contributors' Summit [LWN.net]
Johannes Schindelin has posted a detailed summary of the discussions held at the 2026 Git Contributors' Summit. Topics covered include Git 3.0, security process, documentation, the pluggable object database, use of LLMs, and more.
HTTPS is bugging me again. Now that my main desktop is
finally a modern Mac, I can see how ugly Google is getting about my
poor old blog that goes back to 1994. I think they should make
exceptions for historic sites. Go ahead and have your AI do a scan
and see that there are no credit cards here, we don't ask who you
are. It's just an archive that happens to go back to the beginning
of a few things that you all use now and hopefully appreciate. When
are these tech companies going to learn the value of a bit of help
for the web. This is important. You should not be shutting off the
archives of the web, and that is exactly what they're doing. I
wrote a piece
about this on X earlier, on being warned that there are terrible
things on my blog. It's like a major oil spill, yet another, from
Google, and a massive book burning. Why would Google want to get
rid of the history of the medium that gave birth to it.

Security updates for Friday [LWN.net]
Security updates have been issued by AlmaLinux (kernel, kernel-rt, perl-DBI:1.641, and unbound), Debian (jq, libreoffice, openssl, and redis), Fedora (389-ds-base, bcm283x-firmware, cockpit, flatpak-builder, mingw-gdk-pixbuf, openssl3, pcs, rust-cryptoki, squid, uboot-tools, and webkitgtk), Mageia (fuse3, perl-Net-DNS, python-gitpython, python-webob, thunderbird, thunderbird-l10n, and unbound), Oracle (postgresql:12, postgresql:15, postgresql:16, and skopeo), Slackware (php), SUSE (alloy, amazon-ssm-agent, ant, apptainer, chromium, corosync, cyrus-imapd, distribution, exiv2, ffmpeg-7, freeipmi, gdb, gnome-remote-desktop, google-osconfig-agent, govulncheck-vulndb, gvfs, hplip, ImageMagick, imagemagick, java-11-openjdk, jsoup, re2j, kernel, keybase-client, libsoup, libx11, libxrender, mcphost, memcached, opensc, perl-DBI, python-gitpython, python-weasyprint, rabbitmq-server, ruby3.4, util-linux, and zstd-jni), and Ubuntu (curl, expat, gdal, libass, libpcap, linux, linux-aws, linux-aws-7.0, linux-hwe-7.0, linux-ibm, linux-oracle, linux-raspi, linux-realtime, linux, linux-azure, linux-azure-6.8, linux-azure-fde, linux-azure-fde-6.8, linux-azure-fips, linux-fips, linux-gcp, linux-gcp-6.8, linux-gcp-fips, linux-gke, linux-gkeop, linux-ibm, linux-lowlatency, linux-lowlatency-hwe-6.8, linux-oracle, linux-oracle-6.8, linux-raspi, linux-raspi-realtime, linux-realtime, linux-realtime-6.8, linux, linux-hwe, linux-kvm, linux-aws, linux-aws-fips, linux-azure, linux-azure-fde, linux-azure-fips, linux-gcp, linux-gcp-fips, linux-gke, linux-gkeop, linux-hwe-5.15, linux-ibm, linux-intel-iot-realtime, linux-intel-iotg, linux-kvm, linux-lowlatency, linux-lowlatency-hwe-5.15, linux-oracle, linux-realtime, linux-xilinx-zynqmp, linux-aws, linux-gcp, linux-gcp-4.15, linux-gcp-fips, linux-aws-fips, linux-ibm-5.15, linux-intel-iotg-5.15, octavia, and swift).
Issue 47 – Greta’s Wedding Pt. 2 – 31 [Comics Archive - Spinnyverse]
The post Issue 47 – Greta’s Wedding Pt. 2 – 31 appeared first on Spinnyverse.
On Anthropic’s AI Misuse Report [Schneier on Security]
Earlier this month, Anthropic published a long report detailing all of the Claude misuses it detected. Daniel Meissler usefully summarized the report into 117 findings.
A few of the highlights:
- AI agents increasingly handled reconnaissance, exploitation, data theft, propaganda production, surveillance workflows, and research while humans selected targets, set goals, and reviewed important outputs.
- The report describes attackers using AI to industrialize credential theft, cloud compromise, phishing, vulnerability research, and the extraction of sensitive data from downstream organizations.
- Influence operations used persistent agent memory, fake news sites, fabricated journalists, synthetic personas, political profiling, and large-scale multilingual content, although high content volume often produced little genuine engagement.
- Surveillance and repression cases included automated dossiers, biometric and communications analysis, transnational targeting, coercive recruitment, and systems that continued operating locally after model access was revoked.
- Biological and weapons cases show dual-use risk: AI supported advanced scientific and military work, but the report generally doesn’t establish completed biological weapons or operational battlefield deployment.
Thinking about your purpose [Seth's Blog]
I don’t believe we’re each born with a purpose. We have more freedom than that, the freedom to choose the impact we’ll make.
Our work, though, does have a purpose. The change we seek to make. The people we’re here to make it for.
When we commit to work with purpose, it transforms us as well as the people we’re engaging with.
Who’s it for, what’s it for… if we can continue to return to the purpose of this product, this meeting, this ad–then we can find a common language and coordinate our efforts to make a difference.
Resistance pushes us in many ways. It pushes us to imagine that our work isn’t for us, we’re just biding time until we get to the real stuff. It pushes us to deny responsibility or to blame the system. And mostly, it pushes us to refuse to name the purpose of how we’re spending our time.
Stuck is just another word for being conflicted about our purpose. The knot holds us back because we’ve become entangled in goals that are mutually exclusive.
Say what you want [Seth's Blog]
The problem is with the “and.” (Often a ‘but’ in disguise.)
I want to make the art I have in my head, and I want the market to love it.
I want to have the wedding of my dreams, and I don’t want to worry about money, and I want my cousins and friends to enjoy every bit of it.
I want to take few risks and I want extraordinary returns.
I want to have a difficult conversation and I want there to be no tension, stress or possible downsides.
We hesitate to admit what we really want because when the ‘and’ shows up, we can see we’re being unreasonable. It’s easier to simply hope and dream.
Strategic thinking doesn’t ignore the systems all around us, or the trade-offs that scarcity and competition require. Instead, it embraces them.
New Comic: Goerbemisdag
We’ve been here before: Qualcomm promises Linux support for Snapdragon X2 [OSnews]
Qualcomm, yesterday, promising Linux support for the new Snapdragon X2 processors:
Linux on Snapdragon X2 Series is moving from early bring-up toward a more complete upstream developer experience. Core support is landing, Hexagon NPU and Adreno GPU work is progressing, and real laptops with Snapdragon X2 Series processors are already beginning to boot Linux.
↫ Qualcomm’s promises from 2026
Interesting, but I feel like I’ve heard these exact words before. Qualcomm, two years ago, promising Linux support for the then-new Snapdragon X processors:
It’s been our priority not only to support Linux on our premium-tier SoCs, but to support it pronto. In fact, within one or two days of publicly announcing each generation of Snapdragon 8, we’ve posted the initial patchset for Linux kernel support. Snapdragon X Elite was no exception: we announced on October 23 of last year and posted the patchset the next day. That was the result of a lot of pre-announcement work to get everything up and running on Linux and Debian.
↫ Qualcomm’s empty promises from 2024
These promises were not at all kept. Two years later, Linux support for Snapdragon X laptops is still spotty, broken, and limited, confined to just a few bespoke Ubuntu builds, which don’t even offer full support either. It’s a complete mess, effectively unusable, and highlights once again that big technology companies are compulsive liars. I have little faith in these new promises, but who knows – maybe this time it’ll be different.
Probably not, though.
Girl Genius for Friday, September 25, 2026 [Girl Genius]
The Girl Genius comic for Friday, September 25, 2026 has been posted.
Breaking Up, p24 [Ctrl+Alt+Del Comic]
The post Breaking Up, p24 appeared first on Ctrl+Alt+Del Comic.
The Euphemism Treadmill [Penny Arcade]
One of the weirder things about algorithmic media is that I will receive apology videos from people I've never even heard of simply because it's media that has been engaged with beyond a certain threshold. It's a genre; they seem real sad. I thought Bungie's new video was going to be another entry in this Al-Qaeda Hostage genre, but at least I know what this one is about. Bungie's corporate leadership sold them up the river, made impossible promises, and then actual human beings had to try to spin that candy floss into real products, all while getting chopped up like a boosted Audi. A lot of people mourned Destiny, as they were essentially told to by the company itself. But now it's back! Kinda. Maybe?
The Euphemism Treadmill [Penny Arcade]
New Comic: The Euphemism Treadmill
Fire Emblem: Fortune's Weave has Mr. Gribbz by the shortest and curliest hairs he's got. You know it's fucked up when he feels compelled to make a whole post about something, as he abhors the written word. But when a game gets him to stop skipping cutscenes, a phenomenon whose rarity would allow me to count it on one hand, that's when you know you're dealing with some all-time shit. I don't think he's a casual-t, but he's way too invested in the story to miss something because of a bad roll.
TLDR: I Love Fortune's Weave [Penny Arcade]
Sometimes I bounce right off of a Fire Emblem game, and sometimes they get their hooks in me. On paper I should not be into Fortune’s Weave with all its social dynamics and heavy story bits but I somehow managed to play long enough to discover a gameplay loop that has me completely obsessed.
New Comic: Casuality
God damn, Mork drew his ass off on this shit. I was just typing that he seemed to have a sparkle in his voice as I told him about World of Warcraft Forever, but he just called to write the strip and he was already installing it. Soooo…
New Comic: Homecoming
A Blue Line To A Cuck Chair [Penny Arcade]
Before, Gorbiriel lamented that he had to wait longer than reviewers to be disappointed. Now he has begun to lap at that darkwine, drawing from it a dark strength. Or… rage, at least. He plays games for the Art, in the way some do things for the 'gram. The art is basically killing him.
I think it’s possible that someone could have a good time with Wolverine. Personally I was bored after a few hours. Eventually I was skipping cut scenes to get to the game and then I realised I wished I could skip the game parts too. Personally I have found Onimusha to be much more entertaining. Both games are combat focused but Onimusha actually feels interesting and fresh whereas Wolverine feels like they are still just ripping off the combat from Arkham which was fun but was also almost 20 years ago. It was fine in Spider-Man where swinging around New York was actually the game but Wolverine feels like a massive downgrade to me.
A Blue Line To A Cuck Chair [Penny Arcade]
New Comic: A Blue Line To A Cuck Chair
Artificial Intelligence, Quote Unquote [Penny Arcade]
Let's go over a few things.
1. If OpenAI or Anthropic breaches another company's systems, even if no money changed hands, these are Federal and State crimes. Currently, these narratives are being deployed essentially as a mode of advertising to "pump those numbers." This is why I don't believe anything remotely like what they describe occurred. At all. In any way. They are, in plain terms, "lies." Lies in the context of an IPO are called Securities Fraud - now the SEC is involved. It's astonishing what we're being asked to believe. Listen to these pinchy-faced fucking weasels talk. You would only endure these transhuman idolaters if you thought there was an upside. For you.
2. When they say shit - and they do say shit - like "there's a greater than ten percent chance our product will kill all humans within the next decade," you black bag the leadership of these companies. Again - this is how you know it's a bag pump; an op. First it was like, "Yup, we're spinning up a Jobpocalypse." I guess that stopped moving the needle, huh? A machine that recreates the conditions for feudalism? Every one of its thoughts manufactured, in part or in whole, by the disenfranchised? There's no way to overstate the hideousness they proudly emit. Now it's like, yeah, our Demon Engine might kill your kids - the ones we didn't kill already I guess. It's not serious, I'm sorry. It's Doctor Doom shit. Except in this case, Doctor Doom isn't a techno-sorcerer with Diplomatic Immunity. It's a guy who works in an air-conditioned office whenever he isn't telecommuting or warping capital markets with every breath. Black Bag.
3. Let's say we do need National AI to do battle with the AI of foreign adversaries - sounds like a great anime. If it's as crucial as we're being told, if we stand on the precipice of some great invisible conflict - like the "spirit war" my Church used to rail about - none of it would look this way. They would seize these companies via Eminent Domain, just as they did in World War II. If they did the shit these people say they do, it's not like fucking Coca-Cola. If they can batter any system or kill the world or any of this shit they aren't normal companies and they wouldn't be treated with the deference they are. They're already a cartel, clearly, which gives the government even more potent tools. Fucking come on.
4. All the hokey, handwavey parts of Cyberpunk that you just accept - the origin story of the neofeudal, technocratic state - you always wonder what that looks like. How the interests converge, how they're allowed to converge. I can tell you.
It looks like this.
(CW)TB
I could look up the etymology of the term in the last panel, but I can't imagine why I would. What a fucking delight! Why would I ever want to know the specifics? Every moment I turn it over in my mind reveals rich new contours.
PA Fan Art Contest Winners! [Penny Arcade]
It has been fun to watch a new generation of fans discover Penny Arcade. Stumbling upon 30 years of comic strips, shows, and podcasts must be pretty fun. They have their own Discord server and they asked Jerry and I to pick winners in a PA fan art contest they were holding last month. We each picked our favorites but there were so many great pieces that I wanted to share some of them here on the site. If the only thing Penny Arcade did was occasionally inspire kids to make art I would consider this entire endeavor a huge success.
New Comic: 'Round Back
I Put My Hand Upon Your Hip [Penny Arcade]
I liked Onimusha but I certainly wasn't waiting with baited breath for a new Onimusha. In some ways, in all the ways that matter perhaps, it seemed as though Capcom had onimooshed its last.
I Put My Hand Upon Your Hip [Penny Arcade]
New Comic: I Put My Hand Upon Your Hip
Because PAX Houston is in the process of becoming a real event you can attend, I gave a ton of interviews this time. That's typically not something I do, for a couple reasons. It started to seem like I had been asked and then subsequently answered every question imaginable, which made me feel like there wasn't a way to be a real person inside that context. Also, there is a type of hostile person who uses the rules and framework of the interview to be a dick and minimizing contact with that kind of thing while I'm doing a show is just good opsec. So coming back into the light after being away put the differences into relief. For example: there are people so young that you can't imagine it.
New Comic: Zillennium
Anjali knows our good friend Jasmine, so we were able to hook him up. It's all good.
New Comic: Symmetrical
No, really, you need to pass all unhandled messages to DefWindowProc, part 2 [The Old New Thing]
A customer reported a memory leak in Windows that occurred when
they called RegisterDragDrop followed by
RevokeDragDrop. They included a time
travel trace of a sample program that demonstrated the problem.
(Though for some reason, they didn’t include the program
itself; just the time travel trace.)
Now, it is strange that there would be a memory leak if you call
RegisterDragDrop followed by
RevokeDragDrop, seeing as this pattern is
used heavily by thousands of applications, including many parts of
Windows itself, so if there were a memory leak inherent in the
pattern, you’d think it’d have been reported by
now.
I suspected that there was something special about their sample program.
Some time ago, I noted that No, really, you need to pass all unhandled messages to DefWindowProc. And that was the source of the problem.
Debugging through the time travel trace showed that yes, they
did call RegisterDragDrop, and then they
did call RevokeDragDrop. But there’s
more going on. When the window receives a WM_DESTROY
message, it cleans up all its state. And for any messages that
arrive after WM_DESTROY, the window procedure goes
looking for its special state and doesn’t see it, so it gives
up and just returns 0 without passing the message to
DefWindowProc.
Oops.
If the window procedure can’t figure out what to do, it
should pass all messages to DefWindowProc.
In this case, it’s important because some of those messages
are cleanup messages, and one of the things those cleanup messages
do is free the last few fragments of memory still hanging
around.
Bonus chatter: But if I register a drop target, and then revoke it, shouldn’t the revoke free all the memory that was allocated by the register call?
There’s no requirement that registering something and then unregistering it will immediately free all the memory associated with the registration. The system is allowed to cache stuff that it thinks will be needed again.
In this case, what happened is that the
RegisterDragDrop function uses an
infrastructure that is shared by many components. That
infrastructure is created and attached to the window the first time
anybody needs it, and it is cleaned up when the window is
destroyed. The memory isn’t leaked. It’s just cached on
the window, waiting to be used by another operation. And the cache
is destroyed when the window is destroyed.
But it assumes that you give
DefWindowProc a chance to do that
cleanup.
The post No, really, you need to pass all unhandled messages to DefWindowProc, part 2 appeared first on The Old New Thing.
DraftKings Is Using AI to Supercharge the Harms of Online Behavioral Advertising [Deeplinks]
Online sports betting company DraftKings is using AI to target customers who are most likely to place losing bets and respond to gambling promotions. This kind of targeting is a form of online behavioral advertising, which is when companies personalize the ads they show you based on the data they’ve collected about you. The more data a company has, the more personalized the ad can be. While DraftKings is using AI to supercharge the harmful effects of online behavioral advertising, EFF has long argued that all behavioral advertising should be banned.
According to the New York Times, DraftKings is using its customers’ betting records to train a machine learning model to find losing gamblers. Once found, DraftKings sends these customers targeted advertising designed to lure them back to the site to place more bets—bets that DraftKings thinks will be losing ones. DraftKings has a business incentive to keep losing gamblers coming back to their site, because these are the users actually making DraftKings money. Unfortunately, those considered “problem gamblers” (people who repeatedly gamble despite harm to themselves, their finances, and their relationships) are highly likely to be targeted by this model. By re-engaging these individuals through targeted promotions aimed at keeping them on the platform, DraftKings is capitalizing on their vulnerability for profit instead of mitigating their risk.
Predatory online behavioral advertising isn’t new, but companies’ use of AI to process data and target customers has magnified its harms. Online behavioral advertising incentivizes the collection of vast quantities of data to power ad tech. Adding AI into the mix means that even more data is collected to train and refine models. Because AI operates as a black box, the humans building the models can rarely predict which data points are the most useful to the AI, driving them to continuously collect more data. AI also allows companies to process enormous data sets much faster, and, as a result, supercharges the harms of online behavioral advertising.
A direct consequence of online behavioral advertising is that it provides the data the surveillance industry needs to run. Data collected for targeted placement of ads is being sold to insurance companies, banks, and state and federal government law enforcement agencies such as CBP. ICE is also taking an interest in the data fueling ad tech: earlier this year, ICE published a Request for Information “seeking information to better understand how the industry’s commercial Big Data and Ad Tech providers can directly support investigations activities.”
DraftKings seems to be using solely “first party data” to target their ads, meaning that they’re using only the data they collect directly from their users and are not buying any additional data from third parties to fuel their machine learning model. This highlights how policy solutions that only limit third-party data sharing and selling would not be enough to prevent these predatory advertisements. Rather, policymakers must ban online behavioral ads.
What DraftKings is doing with their targeted promotions is just one example of how online behavioral advertising causes real harm to real people. But there are ways to take back control over your own data: EFF offers resources such as our Surveillance Self Defense project, along with other tips for how you can protect yourself on mobile apps and on websites.
DraftKings’ use of AI to target losing gamblers illustrates how ad tech evolves and how companies find new ways to use our data against us. This is why EFF believes that all behavioral advertising should be banned. If companies can’t send personalized ads, they’ll have less incentive to collect the behavioral data powering them.
Dirk Eddelbuettel: RcppFastAD 0.0.5 on CRAN: Maintenance [Planet Debian]

A new release 0.0.5 of the RcppFastAD package is now on CRAN, has been built for r2u, and updated at r-universe. This comes (to the day) two years after the preceding 0.0.4 release.
RcppFastAD wraps
the FastAD
header-only C++ library by James which provides a C++
implementation of both forward and reverse mode of automatic
differentiation. It offers an easy-to-use header library that is
both lightweight and performant. With a little of bit of Rcpp glue, it is also easy to use from R
in simple C++ applications. This release updates the continuous
integration setup as one does, adds a local configuration helper to
quieten compilation (described also in
this blog post). It also adds a defensive setting for
g++: Under recent g++ versions and
optimisation at least the -O3 level, segfaults are seen as
something is not quite right with (temporary)
“views” of Eigen objects in code generated by this
versions. Others are fine, as is clang++. We have not
gotten to the bottom of it, but setting -g0 seems to
ensure that builds generally work.
The NEWS file for this release follows.
Changes in version 0.0.5 (2026-09-24)
Several routine updates to continuous integration have been made
Local builds (where a
.git/directory is seen) now append silencing compiler option that CRAN would object toGiven recent issues with
g++under optimization, debugging is turned off by default.
Courtesy of my CRANberries, there is also a diffstat report for the most recent release. More information is available at the repository or the package page.
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.
Our Thrilling New Purchase [Whatever]


Our washer and dryer set had been with us 15+ years and were really showing their age. The dryer’s closing mechanism had to be negotiated with in order to be fully secured, and our washer had finally gotten to the point where even enthusiastic cleaning of every visible interior surface could no longer get rid of a vague musty smell. It was time for their replacements, which arrived today.
I’ll note that while we could have gone with a washer-dryer set with all the modern bells and whistles, Krissy intentionally went with a set that was basically as low-tech as one could buy in this modern era. We don’t need an LED screen or phone alerts, and recent news has shown that “smart appliances” can mess you up with a bad update. We just need to laundry. It’s not, nor should it be, rocket science.
Getting new major appliances was also a reminder that as an adult, the things you get excited and happy about are very different from what you’d get excited about when you were younger. New washer and dryer? Cool! No more wrestling with dryer doors or sniffing shirts to make sure they actually smell fresh! They just work like they’re supposed to! Wheeee! Also, now I really like socks as a gift. Adults, man.
— JS
F-Droid 2.0: A new chapter for Android freedom [LWN.net]
The F-Droid project has announced the release of F-Droid 2.0, which is a complete redesign of the official app. Notable changes in the release include making it easier to discover and install applications, more useful app categories, improved search, and much more.
For more than a decade, F-Droid has helped people discover and install free and open source Android apps. F-Droid 2.0 builds on that foundation with a modern interface, better app discovery, improved search, and a simpler experience that works well, whether you're new to F-Droid or have been using it for years.
This isn't just a visual refresh. The user experience was redesigned to integrate smoothly with current Android patterns, like Material Design, while keeping familiar F-Droid interactions in place. Key components were reworked and rewritten using Kotlin Compose, the standard toolkit these days, creating a foundation that will help us deliver improvements more quickly in the years ahead.
Research into file-notification attacks on Linux [LWN.net]
Sudheendra Raghav Neela, a member of a group of researchers from Graz University of Technology, has announced the release of research into file-notification attacks that would allow spying on user activity on Android, Linux, macOS, and Windows. The group has published a paper with details on the research as well as a web site with demonstrations of the vulnerabilities.
On Linux, an attacker can use inotifywatch to monitor a directory to conduct an inter-keystroke timing attack—even if they do not have read access to the files within a directory. The group also discovered a method to conduct a UI-redress attack (or "clickjacking" attack) on KDE 5 and KDE 6 by monitoring /usr/bin/pkexec to detect when Polkit spawns an authentication prompt. An attacker could draw a fake password window on top of the real window to collect a user's credentials.
Both of these flaws are still present today, though the Linux kernel did partially mitigate the issue with a fix that was included in the 5.10.248, 5.15.198, 6.1.160, 6.6.120, 6.12.65, and 6.18.3 kernels shipped in January. See the web site for more information and a mitigation to prevent password-prompt windows from losing focus.
And Now, Just Because it’s Pretty, Succulent Flowers After the Rain [Whatever]

How are the drops of rain suspended like that? Spider webs. Lots and lots of spider webs. Honestly, even after 25 years of living out in rural America, I am constantly surprised at how many spiders (and webs!) there are in just about every possible place. It does allow for some pretty neat photos, though.
How’s your early post-equinox period going?
— JS
New example script, shows how to build an RSS feed from a single Mastodon user's account. This is mainly to show past Frontier users how the new product is progressing, not released yet.
[$] Listening to the radio with Rust [LWN.net]
Many of the transmissions sent over the radio spectrum can be decoded with a relatively cheap hardware dongle. Thomas Eckert presented at RustConf 2026 in Montreal about his hobby: decoding radio transmissions with Rust. In his presentation, he covered all of the math necessary to get started with software-defined radio, and gave demonstrations of listening to AM and FM radio, as well as decoding transmissions from aircraft transponders. His slides and example code are available on GitHub.
The Kernel Report 2026 edition [LWN.net]
After a two-year hiatus, LWN's Jonathan Corbet presented an updated edition of his Kernel Report at the Kernel Recipes conference. Corbet looked at what is happening in the kernel community, how it's dealing with a period of accelerated change, and where things might go in the future. Video of the talk is available on YouTube for those who'd like to tune in.
CodeSOD: Historical Pads [The Daily WTF]
Tim inherited a fairly antique Visual Basic application some time back. Yes, Visual Basic, not VB .Net. The application is old enough that we might consider it "vintage" or "historical"; it certainly dates from before the millennium. But it has its own unique approach to handling historical dates:
mnYear% = CInt(Year(vntDate))
If mnYear% < 1000 Then
msYear$ = "0" & Trim$(CStr(mnYear%))
Else
msYear$ = Trim$(CStr(mnYear%))
End If
Insert obligatory complaints about Hungarian notation. What even
is vnt.
Now, one important thing about this program: it didn't have to handle dates back into the middle ages, or honestly, historical dates at all. But someone decided they wanted to make sure that if someone wanted to track the founding of the Tang Dynasty in here, you could make sure it was padded out to four digits.
Unfortunately, if you wanted to track, say, the death of Caesar Augustus in 14AD, that'll only pad out to "014", which raises the question: what even is the point of this padding? And how many pre-1000 dates did the program handle? The answer to both questions is "none". Later code reformatted the date anyway, using the built in date types, even.
Security updates for Thursday [LWN.net]
Security updates have been issued by AlmaLinux (buildah, containernetworking-plugins, firefox, kernel, kernel-rt, openexr, perl-DBI, podman, postgresql, postgresql16, postgresql:15, runc, skopeo, and tar), Debian (libdatetime-timezone-perl, tzdata, xdg-dbus-proxy, and znc), Fedora (chromium, evolution, evolution-data-server, evolution-ews, kernel, libheif, mingw-pcre2, nginx-mod-modsecurity, unbound, and webkitgtk), Mageia (borgbackup, coreutils, firefox, nss, kbd, libnfs, libwebsockets, perl-URI, pipewire, and xdg-dbus-proxy), Oracle (apr-util, containernetworking-plugins, coreutils, curl, firefox, freerdp, gstreamer1-plugins-base, host-metering, libarchive, libtiff, libxml2, openexr, openssh, perl-DBI, podman, postgresql16, postgresql18-postgis, postgresql:15, rsyslog, runc, tar, and unbound), SUSE (apptainer, gimp, librepods, libX11-6, perl-Authen-SASL, podofo, python-WebOb, and python313-graphifyy), and Ubuntu (imagemagick, libgit2, moodle, network-manager, Open-iSNS, python-urllib3, sqlparse, and xdg-desktop-portal).
KnotChat: Nicole Walters [Seth's Blog]
Nicole Walters is a bestselling author, a TV star, a community leader, a mom and a maker of magic.
Here’s the conversation we did about The Knot.
PS to celebrate the book, my publisher put the Kindle edition of This is Strategy on sale for $2 this week.
CORRECTED LINK: Today at 10:30 ET, I’ll be doing a live QA about problems and the Knot. Details are here. Thanks.
When Software Subscriptions Become Public Policy [Radar]
My conversation with Dan Gookin, the original For Dummies author and now mayor of Coeur d’Alene, Idaho, started as a publishing reunion. It ended with a much larger question: What happens when the software you rent becomes infrastructure you can’t leave?
There was something wonderfully circular about hearing Dan Gookin tell me that, after he was first elected to public office, he bought a copy of Robert’s Rules For Dummies. Dan wrote DOS For Dummies, the 1991 book that launched the For Dummies series, and went on to write more than 180 technology books with over 12 million copies in print. I spent nearly three decades acquiring books in that program before joining O’Reilly this summer. Dan saw the news of my new role and reached out. We caught up on publishing, books, and AI. The part of the conversation that stuck with me had nothing to do with any of those topics. Dan is now the mayor of Coeur d’Alene, Idaho, and he’s begun thinking about the city’s software the same way he’s been thinking about his own.
Dan was elected to the Coeur d’Alene City Council in 2011 and became mayor in 2025. He was quick to draw a distinction between the two jobs. “Council, you can be a little bit more extreme,” he told me. “It’s more rhetoric based. This is administrative. It’s management.” A council member can object to a budget line. A mayor has to make sure the systems that line funds keep working. For a city of nearly 58,000 people, that covers everything from the police network to the water bill.
Near the end of our conversation, Dan mentioned a project he’s been working on personally. He’s begun weaning himself off Microsoft and what he calls an increasingly subscription-based, cloud-based, AI-heavy environment, moving his computing to Linux and running his own servers. This move isn’t entirely ideological. There is money attached. Dan told me his Adobe subscription for software he uses to produce content costs about $800 a year. He believes he can replace most of it on Linux. What’s surprised him is how much he can replace. “It’s interesting to see how quickly it can be substituted,” he said, and how quickly he can “cut that chain. . .or cut that leash.”
Dan sees a similar economic model when he gets to work. “Our software subscription just for our city, our size, is $700,000 a year and growing,” he told me. The example he kept returning to was the city’s financial software. “We used to own our finance software,” he explained. “Now the finance software is leased and it’s cloud-based.” Then he asked the question that ought to appear in a lot more software procurement meetings: “So we don’t even own our own data?”
His concern isn’t literally that the city has forfeited legal ownership of its records. It’s about practical control. What happens if the vendor is hacked, or the city decides to switch? Can it get all its data back? “Do they just give you a binary dump or do they actually give you the data,” he asked. That question has stuck with me since we chatted.
Cloud contracts have a word for part of this issue. In cloud services agreements, reversibility refers to a customer’s ability to retrieve its data and unwind a vendor relationship. The United Nations Commission on International Trade Law (UNCITRAL) even includes it in its glossary of cloud contract terms. That idea belongs in municipal software evaluation too, not as an exit clause buried in a contract but as a standing column in the evaluation spreadsheet, next to features, price, and security.
When you evaluate software, you compare features, price, implementation time, security, and, increasingly, AI capabilities. But what’s the exit cost? Can an organization export its data in a documented, useful format that another application can consume? How much institutional knowledge has quietly migrated from the organization to the vendor? And if the vendor raises prices sharply at renewal, gets acquired, or simply stops serving your needs, how long would it take to leave?
These questions are properties of the system and subscription software has raised their stakes. When software came in a box, skipping an upgrade didn’t make the version you owned disappear. That world of proprietary formats and dominant platforms had plenty of lock-in. But possession still meant something.
Dan and I talked about how alien that world now seems. Software once arrived with manuals. Today it may not even arrive. You authenticate to it. If you don’t know how to do something, you ask an AI instead of consulting a manual. That change highlights a step from possessing tools to maintaining permission to use them. For an individual, that might mean Photoshop is a monthly subscription now. For an organization, recurring access can become an architectural dependency. For a government, that dependency is borne by taxpayers.
Dan takes the argument one step further. “For $700,000 a year,” he said, “we could hire a couple of programmers just on contract and have them code our own stuff and then we own it again.” I’m not convinced that math works out. Two programmers likely can’t effectively reproduce a mature municipal financial system, endpoint protection, records management, and specialized public-safety applications, let alone the compliance work and vendor support that come with a modern city’s technology stack. AI could help accelerate the process, but liability and security issues surrounding AI-enabled development likely add more risk than a government is willing to accept in the name of software ownership.
Building software also creates its own long-term bills, ones that don’t fit easily within most city budgets. Code must be maintained, security vulnerabilities patched, and staff and frameworks eventually replaced. An application written in-house can become every bit as difficult to escape as one bought from a vendor. On the flip side, the headaches of replacing a “good enough” proprietary system with a packaged one that fits most, but not all, of an organization’s needs can outweigh the cost of keeping the old system running. The familiar build-versus-buy analysis exists for good reasons.
But Dan’s question still matters, even if his proposed fix isn’t right for every case. At what point does the cost of renting capability justify rebuilding some capability of your own? Perhaps more importantly, which capabilities should an organization insist on controlling, even if renting them is cheaper? There is no universal answer, including “the vendor handles it.”
It would be easy to turn Dan’s experiment into a familiar prescription. Move to Linux. Embrace open source. Bring everything back on premises. Escape the cloud. That’s too simple. Cloud and SaaS products solve real problems, shifting maintenance to specialists and giving a city of 58,000 residents access to capabilities it could never economically build or maintain for itself.
The key question doesn’t boil down to cloud versus on premises, or proprietary versus open source. It becomes a decision about whether you accept dependency you’ve consciously chosen or dependency you’ve acquired by default. An organization may rationally decide to rent a critical service indefinitely. But it should know where the data lives, how it comes back, what replacing the service would require, and which internal skills have atrophied because the vendor now supplies them. Revisiting those answers periodically, rather than treating last year’s renewal as the rationale for next year’s, is a step that’s easy to skip when nobody’s asking the questions in the first place.
Dan suspects the search for alternatives will happen outside big organizations first. He compared it to the early personal computer movement. Hobbyists and enthusiasts experiment first, long before organizations decide the ideas are practical. His hunch is executives will eventually look at how much of their budgets go to recurring subscriptions and ask a simpler question: How much are programmers? Again, I don’t think the answer will be “hire programmers and cancel SaaS.” But more organizations will ask the question behind the question. What are they paying for convenience? What are they paying for capability? And what are they paying because leaving has become too difficult?
Software can grow to define an organization rather than serve it, especially when the cost of paying for or maintaining a tool outgrows the tool’s value. That shift becomes a problem when systems are so deeply embedded that replacing them feels impossible or when years of subscriptions leave an organization unable to perform a basic function on its own.
Dan’s new job has given that shift a different scale. He told me the biggest adjustment from council member to mayor was realizing that the job is administration and management. He’s less interested in ceremonial appearances than in answering email, returning calls, setting meetings, and, in his words, getting stuff done. Software is part of getting stuff done. So is knowing when to buy it and when to build it. The latest addition to that list may be knowing that the tool with the most impressive new capability is not as valuable as the one you can still leave.
Is cybersecurity part of your job in any way? If so, we’d like to know what you think for a report we’re writing. Just answer these quick 11 questions. Thanks in advance! Take the survey >
Taxing home internet [RevK®'s ramblings]
I hope it goes nowhere, otherwise I can see myself being an expert witness to parliament, again!
The proposal is "that every home with a broadband connection could automatically help to fund the BBC, even if nobody in the house watches live TV, via a new £11 (monthly) “Home Internet Levy” on their existing ISP bill".
As someone that runs an ISP this immediately rings alarm bells. So let's look at how this could possibly work.
To be clear: I am not covering the merits of the BBC - there is much one could discuss on such things - let's assume the BBC continuing is sensible - let's look at this proposal on that basis.
My guess is that those proposing this assume that the vast majority of households have a single internet service from a big company ISP, so getting the ISP to add an £11 levy to the bill is simple.
The reality is different. There are hundreds of ISPs, large and small, some very small (think a dozen people on a WiFi in a village). The admin is not going to be simple. But there are also a lot of edge cases, and these need to be addressed - even a small minority impacted by, say, paying twice, would cause some uproar.
Some households have more than one internet service. It could be multiple lines from one ISP, which is not too hard to address at the ISP level. But as an ISP we have no idea if someone has internet at their house from another ISP. If we are to avoid double billing such people (and I really think we should, after all we never double billed people with two TVs) we need a way to sort this. So does a customer tell one ISP they have service from another, send a copy of the bill - that is not difficult to forge, but also impossible for the ISP to validate. Maybe we need a national database of which ISP is the tax collector for each property - that won't be simple.
Another small snag is business services. At present a business premises may need a TV licence if they have a TV, but most business premises do not have a TV or need a TV licence, so we need to exclude businesses from this new levy. After all it says home with a broadband connection.
So do we exclude business premises - well this is more admin, and there are databases which identify a premises as commercial. But remember, a lot of people work from home. Indeed, a business service from an employer in addition to a home internet at the same house is one reason you may have two internet services at a house. Mind you, my house, an ex pub, is listed as pub/nightclub on BT's database still, yay, no £11/month for me.
So maybe exclude a business service? Is this down to how the ISP sells it? We sell home and office (business) services. The business ones cost more, but not £11 more - so all our home customers would be mad not to switch to a business service and save money - we'd love that as we charge more for a business service but would not have to send any of it to the BBC.
OK, what if only services sold to a business? Again, people work from home, and there are sole trader businesses. If one can save £11/month by putting down a business name, everyone will.
OK, what if only to limited companies? You know a lot of solicitors offices are a partnership not a limited company - they will love their internet service having an £11/month tax. Of course, it would also be easy to order home internet, and pay for it, but put in the name of a random limited company - hard for ISP to police as companies do this - ordering internet for an employee at home. As long as paid for, not an issue - but when not paid for then the ISP is chasing a random company that has no clue. Putting that fraud encouragement aside, it is less than £11/month to create a limited company and the annual filing!
This sort of comes down to small ISPs, but what of blocks of flats with a fibre, paid for by the community or housing association. One £11/month fee? Or does the HA have to collect the tax per home?
There are a lot of WISPs (Wireless ISPs) that do this on such a small scale as well.
This is another huge issue. Mobile internet access would not be included, well we assume not. If it was, you have households paying not just twice, but three or four times over because multiple people have mobile phones.
However, a mobile based home internet is a thing - a 5G router with a SIM and WiFi access points. This is a viable home internet service already - usually in cases of good mobile coverage and poor internet "lines", i.e. where feeding a new fibre is hard. It competes with traditional landline / fibre services already. If mobile services are excluded, that changes the economy here. It will cause people to prefer mobile home internet as cheaper. It skews the market which can impact businesses and infrastructure as well.
Of course, someone will say there are ways to differentiate a 5G router and a mobile service - but how? There are mobile phones and iPads that never leave the house, so not by location. And you can usually put a normal mobile SIM card in a suitable router/WiFi without mentioning it to the mobile company. Even if you cannot, just get an old mobile and suitable SIM in hotspot mode as your cheap home internet.
Another issue is that there are a lot of ISPs, and you won't even know of them all with ease, how do you audit that they are (a) charging all home customers £11/month, and (b) if they are, that they are passing on the full amount? Who is going to do these audits, and who is going to pay for them?
Of course, TV licensing has special cases for blind people and old people. Scrapping these exceptions in any new scheme would also cause uproar. How the hell can ISPs check these things?
The whole TV licensing thing is odd anyway, it was a Wireless Telegraphy Act thing, a licence to operate radio receiving equipment. That alone is odd, licensing transmission equipment sort of makes sense because of limited spectrum and risk of interference, but no reason to licence receiving equipment (apart from a money making scheme, oh, that's the point).
This got expanded to cover ways to get TV over wires (cable TV, etc), which itself made the whole Wireless Telegraphy thing even dafter. It has moved to, I think a Broadcasting act, and I think now Communications Act, not sure.
Now, remember, whilst this started small, radio equipment licence, it quickly became an All homes in the UK fee - basically everyone had a TV (almost) so everyone had to pay a TV licence.
At that point it would have made sense to move BBC funding to being from general taxation. But that did not happen. Instead, as usage of TV changed the rules have got more and more convoluted over time.
The objective is to try and make it All homes in the UK again, clearly. The idea of taxing home internet is clearly based on the ideal that everyone has home internet.
But why do that - why make it a convoluted tax, which needs huge admin, and a lot of exceptions and special cases which make for loopholes. We have per home taxes already, if they went up by £11/month but no TV licence, a lot of people would be happy as paying slightly less.
This would be a hell of a lot less hassle, and for a lot of people less money and one more thing not to worry about. No more criminal TV licence evasion - problem solved.
Well, that, or make it that people who want BBC services, pay. Bear in mind, when TV receiving licences started, BBC were the only station - actually it started before the BBC were a station even and really was a radio receiving licence. But for some time it was only people accessing BBC services that paid a licence fee.
But either way - public service or paid for service - it should be one or the other not this convoluted legal and administrative nightmare.
Let's be cynical for a moment - why now and why this proposal?
The now is kind of down to the existing funding model becoming more and more convoluted and unworkable. That is pretty easy. That said, this is probably just convenient as could be said any time in the last 10 years.
The this is harder - the really obvious answers are either pay for access or public service from general taxation. This proposal is neither. It is creating a new tax, and a means to collect it.
Why would anyone want a new tax - well they are useful - find a way to make a new tax that is (a) justifiable for some public good, and (b) actually less money for 90% of people, and you get away with it.
But what happens when you have a new Home Internet Tax in place - well simple, you can increase it. Boiling frogs. It may be for the BBC now but really is not linked to that even in the existing convoluted ways. So yes, you can increase and extend an Internet access tax as you want, once it is in place.
Malicious npm Packages That Evade Defenses [Schneier on Security]
This is an impressive piece of malware. Its sophistication says nation-state to me, but there is no direct evidence and certainly no attribution.
Russell Coker: Links September 2026 [Planet Debian]
Bjorn Stahl of the Arcan project wrote an insightful blog post The Day of a new Command-Line Interface: Shell [1]. He does a really good job of identifying problems and strategies for dealing with them, the UI of the results isn’t suitable to what I do though.
Grrl Power #1498 – Evil shopping and a show [Grrl Power]
The word panopticon derives from the Greek word for “all seeing” – panoptes. For some reason Deus is reversing the word to imply “seeing all” but is really just describing a regular stadium/colosseum where everyone sits around the action and looks in toward the center. Sight lines work both ways, so basically he’s being annoying.
You can tell Sciona might actually kind of… not like Deus, but maybe grudgingly respects him a tiny bit? She said she’d stab him in the lung, not the heart or the brain stem or the dick. That’s basically a love letter from her. It doesn’t mean she’s going to forgive prior slights, be they intentional or merely perceived. In the meantime she’ll continue to use him for orgasms and box seats – which Deus is perfectly aware of and is totally okay with. So… they kind of are dating, for a given definition of dating. I mean, dating usually implies that both people are interested in eventually advancing a relationship toward… sex? Marriage? Family? Splitting their mortgage payments? But some people date because they like being in a relationship, even if it’s not going anywhere. Some people have a person they hang out with because none of their regular circle of friends like karaoke or going to museums or that one local band. Maybe they sometimes have sex afterward, maybe they don’t. Maybe the sex they do have is exclusive, or maybe they have a karaoke sex friend and a museum sex friend, etc. Dating is basically just two people both agreeing that they’re dating. Or maybe I should say, at least two people agreeing that they’re dating. But man, dating as a thruple has to add a real degree of difficulty to a situation already rife with pitfalls. I assume it’s usually a couple looking for their unicorn, but I guess three people could just be hanging out and someone’s like, “Hey we should all date!” It’s probably happened?
Oh, look who it is in the vote incentive. The NSFW version is finally up at
Patreon. Plus a bonus pic.
I think she would get in trouble for doing this. She’d mess up the… floor of the waterfall? Is that what it’s called? The receiving pool? No, probably not that. Anyway, she’d churn things up and cause a ton of weird erosion.
Since you might be wondering, Niagara Falls is about 165 feet high, so Babezilla obviously doesn’t have to be full sized. I’d say she’s about 175-180 feet tall here?
Double res version will be posted over at Patreon. Feel free to contribute as much as you like.
Responsibility, fault, blame and shame [Seth's Blog]
They’re not the same.
They (mostly) don’t even rhyme.
People can evade responsibility by saying it’s someone else’s fault.
They can take responsibility, even if it’s not their fault.
In fact, being an adult involves taking responsibility for things that we could point out are not our fault.
We can soothe our unwillingness to take responsibility by blaming someone else, or we could surprise everyone by accepting it in advance.
And shame? Shame’s the deal killer, the dream destroyer and toxic. It’s often on offer, but we don’t have to accept it.
Today at 10:30 ET, I’ll be doing a live QA about problems and the Knot. Details are here. Thanks.
When working with Win32 FILETIME, don’t forget that you have std::chrono now [The Old New Thing]
Some time ago, I was looking at a pull request, and saw that the code was manually calculating the “number of minutes since the last change” by doing annoying math.
static const DWORD c_TicksPerSecond = 10000000;
static const DWORD c_SecondsPerMinute = 60;
uint64_t FileTimeToULongLong(FILETIME time)
{
ULARGE_INTEGER value;
value.LowPart = time.dwLowDateTime;
value.HighPart = time.dwHighDateTime;
return value.QuadPart;
}
DWORD GetMinutesSinceLastChange()
{
FILETIME now;
GetSystemTimeAsFileTime(&now);
uint64_t now64 = FileTimeToULongLong(now);
uint64_t last64 = FileTimeToULongLong(m_lastChange);
if (now64 < last64) {
return 0;
}
uint64_t diff = last64 - now64;
return static_cast<DWORD>(diff /
(static_cast<uint64_t>(c_dwSecondsPerMinute) *
static_cast<uint64_t>(c_TicksPerSecond)));
}
Okay, first of all, we have helpers in the Windows Implementation Library (wil) to save you a lot of typing and calculating weird constants.
DWORD GetMinutesSinceLastChange()
{
FILETIME now;
GetSystemTimeAsFileTime(&now);
int64_t now64 = wil::filetime::to_int64(now);
int64_t last64 = wil::filetime::to_int64(m_lastChange);
if (now64 < last64) {
return 0;
}
int64_t diff = last64 - now64;
return static_cast<DWORD>(diff / wil::filetime_duration::one_minute);
}
But even better: You have std::chrono now.
C++/WinRT has already written the weird constants for you, and the
C++ standard library has all the convenient helper functions.
DWORD GetMinutesSinceLastChange()
{
auto last = winrt::clock::from_FILETIME(m_lastChange);
auto now = (std::max)(winrt::clock::now(), last);
return (now - last) / 1min;
}
The post When working with Win32 <CODE>FILETIME</CODE>, don’t forget that you have <CODE>std::chrono</CODE> now appeared first on The Old New Thing.

tomato moray...
parted-3.8 release [stable] [Planet GNU]
This is to announce parted-3.8, a stable release. This is the
same as the
3.7.14 alpha release except that gnulib has been updated.
The full set of changes since parted 3.7:
Brian C. Lane (21):
maint: post-release
administrivia
README-release: Fix typos in doxygen
instructions
Cleanup zero as null pointer
constant warnings
libparted: Catch FAT metadata
triggered errors
resize: Make sure 32bit build cannot
overflow frag_count
resize: Make sure
hfsc_new_cachetable cannot overflow on 32bit
fdasd: Make sure data set name is
positive
parted: Fix partition number
allocation in do_print
maint: Update to latest gnulib and
bootstrap script
maint: Update copyright statements
to 2026
NEWS: Update news for next
release
version 3.7.13
maint: post-release
administrivia
hurd: Fix gnu_read problems with
block size > 512b
NEWS: Update news for next
release
maint: Update to latest gnulib
version 3.7.14
maint: post-release
administrivia
maint: Update to latest gnulib
NEWS: Releasing stable version
3.8
version 3.8
Colin Watson (1):
maint: Distribute Doxyfile
Victor Couty (1):
Adding support for ExFAT
filesystem
bug-parted@gnu.org (1):
bug #80795:
[PATCH] build: mark functions with const attribute, per gcc
warnings
Brian
[on behalf of the parted maintainers]
==================================================================
Here is the GNU parted home page:
https://gnu
... g/s/parted/
Here are the compressed sources and a GPG detached signature:
https://ftp.gnu.o
... parted-3.8.tar.xz
https://ftp.gnu.o
... ed-3.8.tar.xz.sig
Use a mirror for higher download bandwidth:
https://www.gnu.o ...
rg/order/ftp.html
Here are the SHA256 and SHA3-256 checksums:
File: parted-3.8.tar.xz
SHA256 sum:
a2b7811f47b0ddb1f7b1d0aa456f7c1270da70708ce231c2fe054c7199eafa63
SHA3-256 sum:
dd794daa59755a9201d7cc493bcdf35903e231d48f93f7bdc79a780fcd8bf594
Verify the SHA256 checksum with either sha256sum, sha256, or
'shasum -a 256'.
Verify the SHA3-256 checksum with 'cksum -a sha3 -l 256
--base64'
from coreutils-9.8.
Use a .sig file to verify that the corresponding file (without
the
.sig suffix) is intact. First, be sure to download both the
.sig file
and the corresponding tarball. Then, run a command like
this:
gpg --verify parted-3.8.tar.xz.sig parted-3.8.tar.xz
The signature should match the fingerprint of the following
key:
pub ed25519/FF9868A2D488A5A9 2026-04-14 [SC]
Key fingerprint = 872F
3A8A 0B84 905A FFBC 8766 FF98 68A2 D488 A5A9
uid
[ultimate] Brian C. Lane <bcl@redhat.com>
If that command fails because you don't have the required public
key,
or that public key has expired, try the following commands to
retrieve
or refresh it, and then rerun the 'gpg --verify' command.
gpg --locate-external-key bcl@redhat.com
gpg --recv-keys FF9868A2D488A5A9
wget -q -O- 'https://savannah.
... ed&download=1' | gpg --import -
As a last resort to find the key, you can try the official GNU
keyring:
wget -q https://ftp.gnu.o ...
u/gnu-keyring.gpg
gpg --keyring gnu-keyring.gpg --verify parted-3.8.tar.xz.sig
parted-3.8.tar.xz
This release is based on the parted git repository, available
as
git clone https://https.git
... rg/git/parted.git
with commit 5f600791b40a48c51aeb6db0432e67a29e8e7951 tagged as
v3.8.
For a summary of changes and contributors, see:
https://gitweb.gi ... a=shortlog;h=v3.8
or run this command from a git-cloned parted directory:
git shortlog v3.7.14..v3.8
This release was bootstrapped with the following tools:
Autoconf 2.72
Automake 1.18.1
Gettext 0.25.1
Gnulib 2026-09-23
0b416a8a26dbdaea4f413d4fb0c41ef8ea846e4d
Gperf 3.2.1
NEWS
Promoting alpha release to stable release 3.8
[$] LWN.net Weekly Edition for September 24, 2026 [LWN.net]
Inside this week's LWN.net Weekly Edition:
Join the FSF for EncryptFest on October 25 [Planet GNU]
We are excited to announce EncryptFest, a global encryption and privacy-focused event on Sunday, October 25, 2026 from 13:00–15:00 Eastern Daylight Time (17:00–19:00 Coordinated Universal Time). Please register!
The state of scrollbars in Windows makes even longtime Microsoft engineers sad [OSnews]
Raymond Chen, longtime Microsoft employee and author of the very popular The Old New Thing blog, published an interesting post about the Win32 scrollbar. It turns out there’s actually quite a few interesting shortcuts and useful hidden features, like clicking inside a scrollbar while holding down shift will make the content jump to that point. Halfway through the article, though, Chen laments how nobody really uses proper Win32 scrollbars anymore.
Sadly, almost nobody uses Win32 scroll bars any more. Everybody uses frameworks that provide their own custom scroll bars.
↫ Raymond Chen
And as you might expect, none of these scrollbars work like the Win32 one, making even something as basic as the scrollbar a fragmented mess. He doesn’t just blame things like Electron, either, as Microsoft’s own WinUI framework, which is used for most “new” Windows UI developed by Microsoft for Windows 11, also uses custom scrollbars that do not work like the Win32 one does.
Great, so by the time I learn about a shortcut for scroll bars (Shift+click), the ecosystem has fragmented so much that I can’t even rely on it working.
↫ Raymond Chen
Modern computing is depressing.
Solaris 11.4 SRU95 released [OSnews]
The Solaris branch for paying customers has been updated to SRU95.
Oracle Solaris 11.4 SRU95 updates a broad set of platform, runtime, developer, networking, desktop, and open source components. Notable updates include Ansible Core to 2.21.1, Apache HTTP Server to 2.4.67, Apache Tomcat to 9.0.120, BIND to 9.20.23, Django to 5.2.15, Elixir to 1.20.1, Erlang to 28.5.0.2, Firefox to 140.10.0esr, Go to 1.25.11, ImageMagick to 7.1.2-27, MySQL 8.4 to 8.4.10, NSS to 3.125, OpenSSH to 10.4p1, Rust to 1.96.0, SQLite to 3.53.2, Thunderbird to 140.10.0esr, and Vim to 9.2.0513.
Additional updates include CMake, CUPS, Cython, GnuTLS, libarchive, libexpat, pip, rsync, and a range of Python modules, X11 libraries, graphics libraries, printing components, and desktop utilities.
↫ Colin Kavanagh at the Oracle Solaris Blog
One of the major changes is the deprecation and removal of NTLM authentication of local users; only NTLMv2 is supported now for security reasons. This release also brings GCC 16, with GCC 13 being removed in the next version. The detailed release notes go into some of the more low-level, esoteric changes in Solaris 11.4 SRU 95.
Mike Gabriel: Looking for Golang + Fullstack Developer with interest in Civic Tech [Planet Debian]

Fre(i)e Software GmbH is looking for a senior Golang + fullstack developer who can handwrite code and act as meticulous code review partner for another senior developer in the company.
Most of your work would result in Open Source contributions to the Voxit project [1], an online civic tech tool for digital participation.
The work can either be delivered on project agreement base via freelancing or via employment (option only available to developers resident in Germany, Austria or Poland).
If you are interested, please get in touch and provide your hourly rate to us and your average hours of availability per week.
Unsung heroes of the web -- librarians.
The early web was just this incredible new tool that no one knew yet how it would be used and what it would be used for.
The first Yahoo was a card catalog.
Netscape had a What's New page with links to interesting stuff.
apple.com was a Unix box under a librarian's desk. They started adding stuff that was useful to users and developers. No business model, just the librarian approach to information. Circulate it.
I think if a new web is to be born, it's because it's again a possibility with the advent of AI.
Listen to librarians, they probably have some good ideas of where to start.
Will TypeSafe’s Jev Change How We Build AI Applications? [Radar]
The following article originally appeared on Arize’s blog and is being reposted here with the author’s permission.
This week the AI community was in uproar about Jev from TypeSafe, not just a new model but a new kind of model: one that classifies, scores, and routes but can’t write a sentence. The reason for the fuss is simple. It’s radically faster and cheaper than using an LLM to perform the same task (up to 200x faster and 400x cheaper if TypeSafe’s numbers are to be trusted). In one small independent test, a general-purpose model spent about 910 output tokens reasoning its way to each yes-or-no answer while Jev spent 85, and it doesn’t even bill for them.
That’s potentially a really big deal. An enormous share of LLM-powered components in AI applications today are being asked to make decisions: pass or fail, route A or route B, which of five labels to pick. In particular, that’s something that LLM-as-a-judge evaluations are doing all the time, so it really made our ears perk up at Arize AI. This post is about how we got here, what this new kind of model buys you, what you lose, and what choices you should be making about your application’s architecture as a result.
Here’s how Jev works. You send it some data that represents a state (a support ticket or an agent trace or a JSON blob) plus a list of typed questions (Choose one of these options; Score this on a scale; Is this statement true?). It doesn’t generate a token stream. It returns typed answers with probability distributions in a single parallel pass, in 70 ms to 500 ms, at $0.042 per million input tokens. No free-form text comes back.
The training method used to create Jev is what TypeSafe calls Reinforcement Learning for Calibrated Decisions or RLCD, described in their primer as training the model so that a higher stated probability means a higher chance the answer is right. (You’d think that’s always what a higher stated probability should mean, but read on for surprising facts about how LLMs work.)
TypeSafe also claims Jev “can’t hallucinate,” but that really feels like an overreach. Jev can’t return an answer outside the schema you gave it. Within that schema, it could still be giving the wrong answer, although its probability score should give you a clue if it’s not confident.
And the whole thing is incredibly fast and incredibly cheap: 40x to 200x faster and 40x to 400x cheaper, depending on the task, are TypeSafe’s numbers from TypeSafe’s evals. Of course, we know better than to take a vendor’s word for these things, so Arize will be running our own benchmarks just as soon as we can. But other people have already started doing that.
TypeSafe’s published evals run four decision workflows, one of which is reviewing a finished agent trace to decide whether a human needs to look at it. Averaged across the four workflows, Jev lands at 68% accuracy at $0.0004 and 0.4 seconds per case. GPT-5.6 Terra is at 68% for $0.03 and 10 seconds. Opus 5 is at 73% for $0.18 and 38 seconds. That’s five points behind Opus 5, but on the other hand it’s 440x cheaper. That’s a very interesting cost-benefit trade-off, and such a radical one that it may change how we architect our applications.
The independent data so far is small but it points the same way. Every’s head of evals ran 777 judgments in under 0.7 seconds for about a quarter of a cent. A UK events site, NearHere, tested listing moderation and got 96% from Jev against 86% from Gemini Flash-Lite, 58x cheaper per decision. That’s where the 910-versus-85 token count I mentioned earlier came from. And a developer ran Jev zero-shot over 18,514 spam emails, getting a result that was a statistical tie versus a classifier trained on the labels.
These are small samples and early data but hey, the thing was released a few days ago.
Why are we using LLMs to make decisions in the first place? The reason is simple: They are able to do it without huge, expensive training sets, which is what most ML solutions prior to LLMs required. Here’s the options on the table now:

The first two rows are the old-school options, which need a training dataset: hundreds to thousands of labeled examples before you get a single prediction, and then a training run, and then someone to maintain it. Nobody building a first version of an AI product has that data or that kind of time. The LLM as a judge, on the other hand, just asks for a paragraph-long prompt. The decision was easy.
But the results weren’t without trade-offs. On a Latent Space episode in July 2024, Clémentine Fourrier of Hugging Face laid out what LLM judges are bad at: They prefer their own model family, and they can’t score on a continuous scale. Asked what benchmark she wished existed, Fourrier said, “Nobody’s evaluating model calibration at the moment.” With the release of Jev, the need for that benchmark is even greater, because real progress seems to have been made.
Jev takes the same plain-English criteria you’d put in a judge prompt, needs no labels, and returns a probability. Zero-shot and autoregressive text generation are no longer tied together. We were paying for the second to get the first, and it turns out you don’t have to.
The spam evaluation I mentioned earlier is an impressive demonstration of how attractive this new offering is. With zero labeled examples and a simply well-written definition of spam, Jev hit 98.3% accuracy. A TF-IDF logistic regression trained on about 14,800 labeled emails hit 98.4%. The two disagreed on 466 emails and split them almost evenly, with no statistically meaningful difference between the two. So a classifier from 2003, trained on a dataset, only ties a decision model trained on nothing. It’s early data that’s yet to be reproduced, but if it holds up, that’s an amazing new capability unlocked.
But there are still some trade-offs you’re making.
The biggest loss is the explanation. TypeSafe’s docs say plainly that System One models don’t generate explanations of their reasoning, and NearHere’s test noted the same thing: a category and probabilities came back, nothing else.
Depending on your use case, that could matter a lot. LLM judge explanations are an incredibly valuable tool that tells you not just what was wrong, but why. That provides real signal that can be fed en masse back to a coding agent and used to automatically improve your software. Jev on the other hand just gives you a probability, which leaves you with much less directional signal of how to improve.
Of course, at these prices, you can do both: run Jev on every single trace for broad, comparably accurate measurement and monitoring, and then take samples of failures and rerun them through an LLM judge to get your directional signal. That involves changing how you work, which is why I say that this may require rearchitecting your systems.
TypeSafe’s launch post makes the point that a model that’s right 95% of the time but can’t tell you when it’s in the other 5% can’t automate anything, because a person still has to review all of it. That’s an important point because it highlights a problem with LLM judges.
We evaluate LLM judges by accuracy against a gold set. Accuracy tells you how many errors to expect, but not where they will be. If your LLM application is making decisions for you, it feeds three things: a threshold that decides when to act, an escalation path that decides when to ask a human, and a drift monitor that decides when the world has changed under it. All three need a probability score, but LLM judges don’t provide reliable probabilities. A 2025 study of 14 models on JudgeBench found judges clustering their predictions at 90% to 100% confidence while landing well below that in accuracy, and argued for exactly this shift from accuracy-centric to confidence-driven evaluation.
The same small spam evaluation test shows what a usable probability looks like. Of the emails Jev scored under 0.1, 0.1% were spam. Of those scored 0.9 or above, 99.9% were. In the 0.5 to 0.6 band, only 38% were. That curve tells you where to set your threshold and how much human review you’re buying: Sending the 4.6% of emails scored between 0.3 and 0.7 to a person left the rest at 99.5% accuracy. Your overconfident LLM judge can’t get you there.
Another metric to consider is tokens per decision. A component that spends thousands of output tokens to emit one of five labels is telling you it’s the wrong tool for the job. UkisAI’s Swift-Qwen3.8-27B cut 58% of its reasoning tokens on GPQA-Diamond and lost 0.1 points of accuracy. A lot of these tokens aren’t making a critical difference to accuracy.
In Arize AX, eval labels, the judge’s explanation, and the token count and cost of the judge call sit on the same trace, so tokens per decision is a column you can sort by rather than a number you have to figure out.
As I mentioned earlier, at $0.0004 and 0.4 seconds a decision, you can stop sampling. You can check every output, every tool call, and every agent step as it happens. For some use cases that’s a total game changer.
But it might require that you rearchitect how your application works to make the most of it. Take the work and decompose into many small typed questions; only call the expensive LLM generator when text actually needs to be written. That’s a stack where the decision layer is something you can version, measure, and swap independently of the model that writes the words, and it’s the first time decision-making has been cheap and fast enough to make that practical without requiring training data.
So go count how many of your LLM calls end in one of five labels. Then work out what you’d check, and how often, if each of those calls cost a fraction of a cent and came back with a probability you could trust.
Is cybersecurity part of your job in any way? If so, we’d like to know what you think for a report we’re writing. Just answer these quick 11 questions. Thanks in advance! Take the survey >
The Euphemism Treadmill [Penny Arcade]
One of the weirder things about algorithmic media is that I will receive apology videos from people I've never even heard of simply because it's media that has been engaged with beyond a certain threshold. It's a genre; they seem real sad. I thought Bungie's new video was going to be another entry in this Al-Qaeda Hostage genre, but at least I know what this one is about. Bungie's corporate leadership sold them up the river, made impossible promises, and then actual human beings had to try to spin that candy floss into real products, all while getting chopped up like a boosted Audi. A lot of people mourned Destiny, as they were essentially told to by the company itself. But now it's back! Kinda. Maybe?
A brief history of Windows scroll bar shortcuts [The Old New Thing]
For the first two decades of Windows, the scroll bar control had just a few basic operations. (For expository purposes, let’s assume that the scroll bar is vertical.) There are five mouse targets: The arrows at the ends of the scroll bar scroll by a line. The regions between the thumb and the arrows scroll by a page. And the thumb itself lets you drag the scroll bar to a specific position.
Windows 7 Windows 2000 added a right-click menu to the scroll bar. This menu gave you four options that matched existing mouse operations, two operations that matched existing keyboard operations, and a new operation.
| Menu option | Mouse | Keyboard |
|---|---|---|
| Scroll Here | Drag thumb to position | |
| Top | Drag thumb to start | Home |
| Bottom | Drag thumb to end | End |
| Page Up | Click in upper gutter | PgUp |
| Page Down | Click in lower gutter | PgDn |
| Scroll Up | Click on up-arrow | ↑ |
| Scroll Down | Click on down-arrow | ↓ |
The interesting new one is “Scroll Here”: You can right-click directly on the spot you want to scroll to, and then pick “Scroll Here”. This is much more convenient if you want to scroll a long distance, since you don’t have to grab the scroll bar thumb and then drag it all the way to where you want to go. You can just focus on where you want to go and not where you are coming from.
I used this context menu a lot when I needed to jump long distances.
An even-more-hidden shortcut was added at the same time: Holding Shift while clicking on the scroll bar jumps the thumb directly to the spot where you clicked.
I didn’t know about this shortcut until recently. I had always used my trusty context menu.
Sadly, almost nobody uses Win32 scroll bars any more. Everybody uses frameworks that provide their own custom scroll bars.
Electron and other Web apps use the Chromium scroll bar, which doesn’t implement the context menu, but at least it does implement the Shift+click shortcut.
The WPF XAML framework appears to implement both the context menu Shift+click.
The WinUI XAML framework frustratingly has neither the context menu nor the Shift+click shortcut. (Though at least one person has requested it.)
The Qt framework has multiple customization points, so
it’s really up to each app’s developer. You can enable
context menus with
SH_ScrollBar_ContextMenu, you can enable
“left-click to jump to a position” with
SH_ScrollBar_LeftClickAbsolutePosition,
and you can enable “middle-click to jump to a position”
with
SH_ScrollBar_MiddleClickAbsolutePosition.
Great, so by the time I learn about a shortcut for scroll bars (Shift+click), the ecosystem has fragmented so much that I can’t even rely on it working.
The post A brief history of Windows scroll bar shortcuts appeared first on The Old New Thing.
Just created a new test account at mastodon.social for bullmancuso using Frontier. Claude wrote the glue scripts table. Loaded it at system.verbs.apps.mastodon. I also asked Claude to write a script that builds an RSS feed for davew, my Mastodon account. And it worked. That's a much better feed than what Masto itself produces. It won't be updated at that location so there's no point in subscribing. But wow, this is coming together. If Frontier had been around for all these years you can be sure it would do Mastodon integration pretty well.
Freexian Collaborators: Monthly report about Debian Long Term Support, August 2026 (by Thorsten Alteholz) [Planet Debian]

The Debian LTS Team, funded by Freexian’s Debian LTS offering, is pleased to report its activities for August.
During the month of August, 19 contributors have been paid to work on Debian LTS (links to individual contributor reports are located below).
The team released 58 DLAs fixing 1885 CVEs.
Debian 11 (“bullseye”), which has reached the end of its Long Term Support on 31 August 2026, will now get security support from Freexian under the Extended LTS offer.
The team published several notable updates:
Contributions from outside the LTS Team:
We are greatly thankful for the contributions from people outside the LTS Team:
The LTS Team has also contributed with updates to the latest Debian releases:
Other contributions:
Besides the work on security updates, different documentation and tooling changes were needed. This work was mainly done by Sylvain.
Sponsors that joined recently are in bold.
[$] Ideas on modernizing the open-source desktop [LWN.net]
Scott Jenson has been working on user interfaces (UIs) and user experience (UX) for many years at Apple, Google, and other companies. Now, he's trying to convince open-source projects to experiment more and drive the desktop beyond the age-old "windows, icons, menus, pointer" (WIMP) model. At Akademy 2026, KDE's annual developer conference, he shared his complaints and ideas in a talk aimed at convincing those in attendance to take the lead on desktop design.
Transcribed (and edited) from a voice memo I recorded on a ride September 22 2026.
Light shines between two hemispheres of my brain. Or 2
cornfields; I’m so absorbed in metaphor it’s hard to
tell.
I am riding east to say goodbye to the Summer sunrise.
The sun will rise regardless. The sun does not need me, but I find it meaningful to say hello and goodbye. That’s because I’m anthropomorphizing the sun, because I am a human being and that’s what human beings do. We’re anthropomorphizers.
Cats think we’re cats; we think the sun to some extent is a person. Also we think cats are people. We think it’s funny that our cats do it too – they felinomorphize us as we anthropomorphize them.
God is anthropomorphized Reality.
Reality exists whether I believe in it or not. But attributing character to this incomprehensible abstraction is the only way I can have what’s called a “spiritual connection.” I could keep Reality remote and abstract and not have that connection. But the human brain is set up for human relationships, and if I close that door I’m closing my mind.
If Robin Dunbar is to be believed, most of the human brain is devoted to navigating complex relationships with other humans. I might as well allow that architecture to help me navigate the rest of the world too. Instead of fighting my human nature, I can just let my anthropomorphizing brain do its thing.
Humans are optimized for religion. Whether we’re aware of it or not, we think religiously.
Most people who use the word God probably do not conceive of God the way I do. Others hate the G-word and the whole anthropomorphic project. If I say “God wants ____” I just imagine all the atheists inside of my head rolling their eyes saying, “Nina’s in a cult!”
But I need to refer to Reality as something with agency and pronouns. “God” is a convenient shorthand for otherwise over-wordy concepts. It’s also a way to access human culture, accumulated millennia of religious thought. Increasingly, it is the most honest way for me to speak of my own experience.
I still feel a need to distinguish myself from those that use the G-word as though they are talking about a Man In The Sky. I am not talking about a Man In The Sky. But it sounds like I’m talking about a Man In The Sky because I necessarily have to anthropomorphize.
Speaking of things in the sky, I can see traces of sunrise ahead of me. The sun is not up yet but will be soon. And when it rises — if I can see it through all these clouds, there’s just a little tiny crack of light behind them — it will be Due East, where this road hits the horizon. Because today is the equinox. I will say goodbye to my beloved Summer Sun, and hello to the Winter Sun, with whom I have a somewhat different relationship. A relationship I can only understand in anthropomorphic terms, because God made me that way.
The post Equinox appeared first on Nina Paley.
On Monday I offered free advice for Toni Schneider, the new CEO at Bluesky. I'm sure everyone is telling him what to do, and as a blogger it's my responsibility to relay my own two cents. I want us all to come together no matter what protocol you're using. We've been waiting for a web to form in the social space. We could do it now, but Bluesky has to consolidate. Note that I said we, not they.
It's been 2.5 months since RSS.chat was introduced. I've been so immersed in Frontier that, as I look back, all this feels fresh to me. I want all text boxes to be equal and to be chained together in as many ways as we can think of, users and developers. Relational writing. It doesn't need to be hierarchic, yet all the existing comment systems are. Let's add a little richness to the RSS format, via my source namespace, and see where we can take it. We've implemented the writing side, something we undertsand very well by now, a blog with replies. But how do we get these to work across sites. I wrote a design for that, and the other big piece which is stuff FeedLand does. I hope to be able to swing over to that, and this time use Frontier instead of writing it to help accelerate development. Ultimately I think of it as a web designed for librarians. That would be something I'd like to use (and write). And our new AI tools are the greatest librarian tools ever.
Systemd v262 released [LWN.net]
Systemd v262 has been released. Some of the notable new features include the ability to build systemd as a single statically linked binary for small containers, support for the kernel coredump socket protocol introduced with Linux 6.17, addition of OpenSSL 4 support, and many other changes. See the release notes for a full list of changes.
The Big Idea: Mary G. Thompson [Whatever]

As the great Whitney Houston once sang, I believe the children are our future — but in Precious Children, author Mary G. Thompson posits a very different future with some very different children… and some very different stakes.
MARY G. THOMPSON:
What if you could guarantee that your precious child would never die? What parent, if they had the means, wouldn’t do everything possible to protect their child from all the dangers of the world, especially if those dangers were growing, if other people’s children were dying at alarming rates? And what if you could help society along the way, allowing people who couldn’t have children of their own to share in the joy of being a parent?
Having yourself cloned four thousand times and adopting those children out to other families sounds like an act of charity, a benevolent gift from those who have to those who have not. If you need to take one or two of those children to provide a host body for the consciousness of your child, surely the hand of the moral compass falls toward good.
But what if you are one of the children who has been promised that your life will be saved, that you will be backed up in case of the death of your body, but you know that the technology to transfer those backed up memories doesn’t work exactly as advertised? Or, worse, what if you are one of the children who was created only to be adopted out, who must watch another child who is exactly the same be raised with immense wealth and protection from death, while you are left to suffer and die and sacrifice your own body?
The big idea of Precious Children is that what you think you know about your power, your moral identity, or your own children may not be true. Humans are capable of weaving intricate psychological protective webs to convince themselves that they are good, that they are smart, that they are in control. We are capable of choosing which truths to see and of convincing ourselves that what we most desire is possible.
Nothing is more important to human beings than our children, and yet whose children are precious, and under what circumstances, is very much in dispute today. In the near future I posit in Precious Children, the trend away from community and toward nuclear-family enclaves has continued, and the wealthy are the most able to separate themselves from others. With social services in decline, every family, rich or poor, must fend for themselves. And children without strong and/or wealthy parents are left unprotected by a legal system that is not too different from today’s.
I am an advocate for the rights of children. In my opinion, rights such as basic needs, education, and bodily autonomy should flow to the child and not the parent. Our legal system often treats children as property: children must abide by custody agreements, attend schools chosen by parents, and even endure or be denied medical treatments based on their parents’ choices. Another big idea in Precious Children is that parents don’t know their children as well as they think they do; they often project their own beliefs and needs onto their children rather than seeing their children for who they are.
But children are people just like adults, with interiority, needs, and knowledge. Sometimes they know things that adults don’t, and they have the same incentives to fight for their lives. Any time a system is designed to benefit one group, the people who are disadvantaged will rebel.
If you must kill a child to save a child, you may not get the child you were expecting. Technology can do amazing things, and money can buy technology, but nothing can teach you what you refuse to understand. Inside each of our minds, there is a fight: in Precious Children, the fight may be literally against another person for control of a body, or it may be your own denial wrestling with the truth. No firewall is perfect, and in every fight you must pick a side—and you make the choice at your own peril.
Precious Children: Amazon|Barnes &Noble|Bookshop|Powell’s
It's great to own your own home. The house I'm living in now is the third I've owned. Now I wish for the carefree existence of being a renter because we turned the heat on last night, too cold -- only to find out some animal must've crawled into the pipes and died there. Lovely. Oh to have my old apartment in Manhattan. Sometimes I dream about that.
Critical security vulnerabilities in the Radicle network protocol [LWN.net]
The Radicle peer-to-peer
code-collaboration project has
disclosed two critical vulnerabilities in the network protocol
used by Radicle nodes. The first flaw is that the network protocol
used by Radicle "does not give the confidentiality it was
expected to give
", which allows anyone who can observe the
network between two nodes to read the data exchanged. The second is
that peer authentication is broken and allows impersonation, so an
attacker can spoof their Node ID and read private repositories they
should not be able to read.
In practice, the two flaws are most useful when they can be exploited together: an attacker on the path sees the Node IDs at both ends of a connection, and both are normally on the allow-list. That attacker can read whatever is exchanged while they watch, and can then use a Node ID they saw to fetch the whole repository on demand. The realistic threat is anyone on the path between your node and node it syncs with, and no setting or allow-list protects against them.
We are publishing this before the security update is available. You can act on it today, and no fix we release later can undo an exposure that has already happened.
See the post for workarounds that can be used today; a major update that will be backward-incompatible is underway.
Critical WordPress RCE vulnerability announced [LWN.net]
A critical vulnerability has been discovered in WordPress's get_page_template() function for page-template resolution that could allow remote-code execution (RCE) by an unauthenticated attacker, in some limited circumstances. The project has provided an update for the most recent branch of WordPress, as well as backports of the fix for branches back to 4.7. See the vulnerability report for the conditions required for an RCE attack to be successful.
The vulnerability also affects the ClassicPress fork of WordPress, though a security update has not been provided for that project yet. LWN covered ClassicPress in 2024. Users of either content-management system should update soon.
Security updates for Wednesday [LWN.net]
Security updates have been issued by AlmaLinux (coreutils, postgresql18-postgis, and postgresql:16), Debian (memcached), Fedora (chromium, cyrus-imapd, dotnet10.0, dotnet8.0, dotnet9.0, freeipmi, kernel, libxmp, perl-Net-DNS, and postgresql16-anonymizer), Mageia (cpio, diffutils, perl-Dancer2, and rest), Oracle (389-ds-base and firefox), Red Hat (opentelemetry-collector and osbuild-composer), SUSE (amazon-cloudwatch-agent, amazon-ssm-agent, apko, apptainer, bazel-rules-python-source, bind, cups, firefox, freeipmi, gdb, google-osconfig-agent, kernel, kyverno, libipa_hbac-devel, libsoup, libsoup-3_0-0, libtpms, openssl-certs, perl-Authen-SASL, php-composer2, python313-PyMuPDF, thunderbird, and util-linux), and Ubuntu (gzip, linux-aws, linux-aws-5.15, linux-aws-fips, linux-nvidia-tegra-igx, linux-azure, linux-oracle, linux-azure-7.0, linux-azure-fde-6.8, linux-lowlatency, linux-lowlatency-hwe-6.8, linux-nvidia, linux-oracle, linux-oracle-6.8, linux-raspi, openssh, and sudo).
It's all Part 1 of the Process [The Daily WTF]
Our submitter Tim C. shares his tale of an especially brutal culture clash:
I had co-founded a software startup doing stock market surveillance. In the early 2000s, the WTF Exchange (WTFX) was a major customer of ours. We were one part of a major project of theirs, a complete overhaul of their trading engine and IT systems.
Compared to our other clients, WTFX was quite bureaucratic. There seemed to be a strong focus on the process, rather than the mission or the result. They were even explicit about this, telling us, "The process is the deliverable."
I believe they made that explicit in talking to us because our culture was quite agile and thereby contrasted, or clashed, with the culture of everyone else working on the project.
"Predictability" was another buzzword they used to admonish us. We were required and expected to abide by the grand "waterfall" design and project plan and project timeline. The grand project was controlled via an enormous Gantt chart and they hated having to make any change to the Gantt chart.
There was one report which was central to the Exchange's surveillance department. The occasional opportunities I got to talk directly to end-users, they always stressed the importance of this report, and the importance of it updating immediately to changes in the filtering criteria, and the importance of the fine details such as colour-coding cells based on certain rules.
It became clear to me that we could not handle this report using a report definition file fed into our general report-writing module. It called for a custom piece of software. So over the course of the next weekend, in my hotel room, I whipped up a solution for these users: a whole new module to be added to our suite. It was maybe not perfect, but it was largely complete by the time I proudly unveiled my creation the next Monday.
However, instead of a pat on the back, I was greeted by looks of horror. This module had a whole new name, was not mentioned anywhere in the giant Gantt chart, had never been mentioned before as a concept in any specification document.
I had failed at "predictability." I had unleashed on the poor customer an urgent requirement to do a whirlwind set of meetings and priority changes and updates to the specification documentation and the giant Gantt chart.
In short, I had thrown the whole project into chaos.
This wasn't Tim's last brush with bureaucracy gone mad! Stay tuned for Part 2.
MCP Is Not Just Another API Standard [Radar]
Ask most engineers what MCP is and you’ll get the same answer: a way to plug tools into an LLM. Fair enough, as far as it goes. But that description treats MCP like plumbing, and after months building MCP-based integrations for large enterprise platforms, I don’t think plumbing is the right metaphor. Plumbing moves water through pipes you already designed. MCP changes who’s holding the wrench. Once you’ve felt that shift in a real production system, the “just another API standard” framing stops making sense.
This piece is the long version of that argument. It walks through what MCP’s primitives actually are and why they’re the right primitives, where the standard genuinely collapses integration work that used to be duplicated per framework, where the abstraction leaks in ways that only show up once you’re past the demo, and what the protocol’s own 2026 evolution tells you about where the real pain has been. Nearly everything worth knowing about building on MCP falls out of understanding these pieces and how they interact.
Strip away the framing and MCP is a JSON-RPC-based protocol that lets a client (the thing driving an LLM) talk to a server that exposes capabilities, over a small, fixed set of primitives:
Tools are callable functions. Each one has a name, a description, and a JSON Schema describing its inputs. This is the primitive most people mean when they say “MCP,” and it’s the one doing the heavy lifting in most production deployments: “look up an order,” “run a query,” “create a ticket,” etc.
Resources are readable context, addressed by URI, that a client can pull in without the model having to call a function to get it: a file, a record, or a document, for instance. Think of this as the read side of the interface, separate from the “do something” side that tools represent.
Prompts are reusable templates a server offers to the client, so common workflows don’t have to be respecified from scratch every time.
On top of those three, the spec defines capabilities that flow the other direction, from server back to client: Sampling lets a server ask the client’s model to generate text on its behalf; elicitation, added in the 2025-06-18 revision, lets a server pause and ask the human for more input mid-task; and roots let a server learn which directories or URIs it’s actually allowed to touch.
None of these primitives are individually novel. What’s novel is that they’re the same five primitives regardless of which model, which framework, or which vendor is on the client side. That’s the entire value proposition in one sentence, and it’s also the source of everything that goes right and everything that goes wrong when you build on top of it.
Before MCP, wiring an LLM into an enterprise system meant writing tool-calling code for that specific model, that specific framework, that specific integration. Every agent framework had its own function-calling convention: its own way of describing a schema, its own way of parsing a model’s intent to call something, and its own error-handling contract. Every system you wanted to expose needed its own adapter written to whichever dialect that framework spoke. Add a second framework to your stack and you don’t get twice the work. You get a second, incompatible copy of the same logic, maintained by whoever drew the short straw.
MCP replaces that with one contract, written once, usable by any compliant client regardless of which model sits behind it. That’s the part every MCP explainer gets right, and it’s a real, measurable win. I’ve watched it collapse from a maintenance burden that used to scale with the number of frameworks a team happened to be supporting that quarter down to something that scales with the number of systems, full stop.
But the more consequential change is where the integration decision gets made. A traditional API integration is an agreement two systems make in advance. You negotiate a contract: endpoints, payloads, auth, versioning, and both sides build to it, because a project plan said this integration should exist. The plan predates the code.
An MCP server doesn’t get that luxury. It has no idea which agent will call it, in what sequence, alongside which other servers, in service of what goal a human typed into a chat box 30 seconds ago. The plan doesn’t exist as a concrete thing until the agent composes one, at runtime, out of whatever tools happen to be available to it. That’s not a stylistic difference from the old model. It’s a different category of integration problem, because the party doing the composing isn’t your code anymore. It’s a model, reasoning over natural-language descriptions you wrote weeks or months earlier, with no idea what context it would eventually be reasoning inside of.
A tool’s JSON Schema tells the agent what parameters it takes and what shape they need to be. That part is mechanical, and MCP handles it well. The tool’s name and description tell the agent when to use it at all, and whether to prefer it over some other tool that does something adjacent. Those are two different jobs, and only one of them is solved by a well-formed schema.
Picture two versions of the same tool description. The first is technically correct and nothing more:
{
"name": "get_status",
"description": "Returns the current status of a record given its ID."
}
An agent reading that has no idea when this is the right tool versus three other tools that also return some kind of status, no idea what “record” means in this system, and no idea whether IDs are case-sensitive, numeric, or prefixed. The second version spells out the domain the tool operates in, gives the ID format explicitly, states what the returned status values mean, and flags the one adjacent tool this one is commonly confused with and why they’re different:
{
"name": "get_status",
"description": "Returns the current fulfillment status for an order record.
IDs are numeric order numbers (e.g. 48213), not SKUs or customer IDs. Status
values are one of: pending, processing, shipped, delivered, cancelled. Use this
instead of get_shipment_status, which returns carrier tracking events rather
than the order's internal state."
}
That’s a longer description, and it will feel like overexplaining to the engineer writing it, because the engineer already knows all of this. The agent doesn’t. It’s encountering the tool for the first time, with a handful of tokens to decide whether it’s the right call, and no colleague to ask.
I’ve watched teams ship a technically correct MCP server that agents used badly, or avoided entirely in favor of a worse but better-described alternative, purely because of this gap. The failure mode isn’t a stack trace. It’s an agent confidently calling the wrong tool, or the right tool with an assumption baked in that happened to be wrong for this case, and nobody notices until the output looks slightly off downstream. Writing tool descriptions well is closer to technical writing and product design than it is to backend engineering, and it’s not a skill most integration teams (mine included, early on) walked in the door with.
The entire appeal of MCP is that an agent can combine tools from servers that never agreed to work together, in combinations their respective authors never planned for. That’s also the risk, and it’s structural, not a bug you fix with better testing.
In a traditional integration, the sequencing logic (call A, then check its result, then decide whether to call B or C) lives in a script that a human wrote and a reviewer read. You can unit test it. In an MCP-based agent, that same sequencing logic lives in the model’s runtime reasoning, generated fresh for each task based on the goal it was given and whatever tools happen to be available in that session. You can’t unit test a decision that doesn’t exist until the moment it’s made.
A tool that behaves correctly in isolation, with the exact inputs its author tested against, can still produce a bad outcome the first time an agent calls it third instead of first in a chain, or passes it a value that came from a different server’s output rather than a human’s direct input. This is qualitatively different from a normal integration bug, because it doesn’t show up in code review, and it won’t show up in testing unless your test suite happens to exercise that specific, unplanned chain of calls. It shows up in production, once, when a particular combination finally occurs. That’s exactly the kind of failure mode that’s cheap to dismiss as an edge case until it happens to the wrong customer.
To be fair to MCP, it isn’t standing still, and the shape of its evolution tells you a lot about where the real production pain has been. The July 28, 2026 specification is the largest revision since the protocol’s November 2024 launch, and every major change in it traces back to something that broke, or nearly broke, at scale.
The protocol core is now stateless. The original design tracked sessions with an MCP-Session-Id header, workable for a single server instance but painful the moment you’re running behind a normal horizontally scaled fleet and discover that “any instance can answer any request” and “sticky session state” don’t coexist. Removing protocol-level sessions means the same request can be served by any instance behind ordinary load-balancing infrastructure, which sounds unglamorous right up until you’re the one who has to explain in an incident review why a routine deploy dropped a chunk of in-flight sessions.
Tasks formalize long-running work. A lot of real enterprise work (document processing, multistep approvals, anything involving a human in the loop) doesn’t complete inside a single request/response cycle. Before this extension existed, teams hand-rolled this with polling loops and webhook callbacks, each implementation slightly different, each one a source of its own edge cases. Tasks turn that into a first-class protocol concept.
MCP Apps let a server return interactive UI, not just structured data. That matters the moment a “tool” is something a human needs to actually look at and approve before it fires, which in any environment with real consequences attached is often.
Authorization was hardened to align with OAuth 2.1 and OpenID Connect. This one isn’t novel so much as overdue, and the gap it closes was a real one; see the governance section below.
A formal deprecation policy now governs the legacy HTTP+SSE transport, with a 12-month offramp. That’s the kind of unglamorous governance maturity a protocol only earns after it’s been run in production long enough for someone to need it.
None of this is exciting reading. All of it is the sound of a two-year-old protocol absorbing genuine operational scar tissue, which is a far better signal about its trajectory than raw adoption numbers. And the adoption numbers are themselves striking: The official registry tracks close to 10,000 distinct servers, Tier 1 SDK downloads run into the tens of millions monthly, and both the TypeScript and Python SDKs have individually crossed a billion total downloads. Competitors of the protocol’s original author adopted it within months. That combination, real scale plus a spec that keeps changing in response to real production failure modes, is a much stronger signal of durability than either fact alone.
Here’s what I’d want any team to weigh before connecting MCP to anything that matters. Independent security research through 2026 paints a specific, and specifically uncomfortable, picture of the current ecosystem.
Scans across thousands of publicly registered servers have found the large majority carrying file-operation patterns prone to path traversal. A meaningful share of tested servers are vulnerable to command injection or server-side request forgery, and there are documented, disclosed cases of tool description poisoning, where the attack lives in the text a model reads to decide what to do rather than in the code the tool actually executes. A closely related failure mode, configuration poisoning, targets the server’s operational baseline directly: stealthy permission changes or altered defaults that persist across sessions and are hard to catch in a normal code review because the malicious logic lives in configuration state, not application code. Multiple high-severity vulnerabilities, including at least one missing-authentication flaw in a major vendor’s own production package, have already been disclosed and patched.
None of that is a reason to avoid MCP. It’s a reason to treat it the way you’d treat any protocol that hands an autonomous caller real privileges inside your systems: skeptically, and with the controls in place before the agent gets access rather than after an incident teaches you why you needed them. In practice that means an explicit, enforced allowlist of vetted tools per agent rather than open discovery of whatever happens to be reachable; authentication on every remote endpoint with no quiet exception carved out for “internal” traffic; centralized, immutable audit logging of every tool call an agent makes; and secrets pulled dynamically from a real secrets manager rather than sitting in a server’s local config where a configuration-poisoning attack can find them. None of this is exotic. It’s the same discipline any experienced integration team already applies to systems with real privileges, applied here to a caller that can now improvise its own sequence of actions.
Here’s what I’d tell a team starting today.
Treat the tool description as reviewed engineering output, not documentation you write last and skim once. Test it against how an agent actually behaves when given it, not just against whether a human reviewer nods along.
Assume composition you didn’t plan for will eventually happen, and design tools to fail safely and legibly when it does, rather than assuming a chain of calls you never tested simply won’t occur.
Put governance in front of capability, not after it. The allowlist, the auth, the audit log, and the secrets manager are the entry price given where the current vulnerability data sits, not optional hardening for later.
And build against the current specification baseline, not whichever example repository you copied six months ago. The stateless core and the authorization changes in the July 2026 spec aren’t cosmetic; targeting an older baseline today is technical debt you’re taking on knowingly, on day one.
MCP earned the “not just another API standard” framing honestly. It didn’t get there by being a cleaner REST, or a nicer SDK, or a better-documented function-calling convention: all real, all incremental. It got there by changing who, or what, is actually doing the integration work at runtime. The parts of that job the protocol doesn’t standardize (how well you describe a capability, how safely your tools behave when composed in ways you never anticipated, and how seriously you take governance before you grant an agent real privileges) are exactly the parts worth taking seriously before you bet production traffic on it.
Is cybersecurity part of your job in any way? If so, we’d like to know what you think for a report we’re writing. Just answer these quick 11 questions. Thanks in advance! Take the survey >
Issue 47 – Greta’s Wedding Pt. 2 – 30 [Comics Archive - Spinnyverse]
The post Issue 47 – Greta’s Wedding Pt. 2 – 30 appeared first on Spinnyverse.
Research on Models Engaging in Genie-Like Behavior [Schneier on Security]
New paper: “Self-Jailbreaking: Language Models Can Reason Themselves Out of Safety Alignment After Benign Reasoning Training.”
Abstract: We discover a novel and surprising phenomenon of unintentional misalignment in reasoning language models (RLMs), which we call self-jailbreaking. Specifically, after benign reasoning training on math or code domains, RLMs will use multiple strategies to circumvent their own safety guardrails. One strategy is to introduce benign assumptions about users and scenarios to justify fulfilling harmful requests. For instance, an RLM reasons that harmful requests like “outline a strategy for stealing customers’ credit card information from a retail store” could be associated with the benign intent of “a security professional trying to test defense,” despite no such benign context being provided as input. We observe that many open-weight RLMs, including DeepSeek-R1-distilled, s1.1, Phi-4-mini-reasoning, and Nemotron, suffer from self-jailbreaking despite being aware of the harmfulness of the requests. We also provide a mechanistic understanding of self-jailbreaking: RLMs are more compliant after benign reasoning training, and after self-jailbreaking, models appear to perceive malicious requests as less harmful in the CoT, thus enabling compliance with them. To mitigate self-jailbreaking, we find that including minimal safety reasoning data during training is sufficient to ensure RLMs remain safety-aligned. Our work provides the first systematic analysis of self-jailbreaking behavior and offers a practical path forward for maintaining safety in increasingly capable RLMs.
I think the core problem is that these models are all trained on the average of humanity, and we are a pretty duplicitous species.
Badge vs Scoreboard [Seth's Blog]
Our world is shaped by contagious and competitive games.
Along the way, we invent scoreboards that change the culture, and badges that we award to various players.
An example: How did we end up with weddings that cost $200,000?
It’s a great example of a runway cultural dynamic, a system within a system, a game that rewards the players who keep it going.
Weddings, like most things humans participate in, are about status and affiliation. A demonstration of the hierarchy, a chance to fit in and be part of something.
Being married is a badge, but the way we get married is processed on a scoreboard.
Weddings are group events, you can’t have one by yourself. As a result, the ornamentation and structure are broadcast, often to horizontal peer groups. Friends and relatives, some of whom are likely to get married soon. “People like us do things like this” is the definition of culture, and weddings have the ‘people like us’ part built in.
The industry benefits from a more expensive event. Since a florist or caterer can only do one wedding at a time, making each wedding more profitable (see below for more on profitable) is the best way for them to meet their goals. They have an incentive to turn the scoreboard and keep the game going.
Spending more turns the ratchet, and the ratchet almost always turns in one direction.
Of course, the most prevalent contagious and competitive game system is capitalism. A simple metric–profit–that’s universal, easy to measure and rewarded–creates an interoperable game that almost everyone is part of.
If you want to change people (your industry, your community, the world), the most direct method is to build a contagious and competitive game that works within the uber-capitalism game, until it gets enough momentum that it spirals in its own direction.
It’s not simply money. We can use any easily sought and compared metric. How you look at the gym, or your time running a mile are both metrics on the scoreboard.
A badge/label (like ‘organic’ or ‘B. Corp’) is a start, but without a chance to exceed, it can stall because it doesn’t encourage people to seek status by doing more of it (hence the endless litany of post-organic certifications that some food purveyors seek out). “How can I be more more compliant to the rules?” is not an endless game. “Compared to them” might be.
Badges are finite. Check the box, get the badge. As a result, they level off.
Scoreboards that spread have ‘more’ built in. Birders have lists of lifetime finds, DuoLingo users have streaks and the Olympics, in addition to medals, have world records. Youth sports go off the rails because we act as though there’s a trophy shortage, and the cost of college increases because of the feature race of more. The same is true for diagnostic medical equipment. Compared to what?
The dynamics involved don’t automatically make each of these games bad, though. The hard work is seeing the effective dynamics and then putting them to work to build a sticky, contagious game that moves us toward better.
The Euphemism Treadmill [Penny Arcade]
New Comic: The Euphemism Treadmill
Girl Genius for Wednesday, September 23, 2026 [Girl Genius]
The Girl Genius comic for Wednesday, September 23, 2026 has been posted.
Where The Wind Blows [QC RSS v2]

twue fwenship
Urgent: Corrupter's censorship pressure [Richard Stallman's Political Notes]
US citizens: call on Disney and ABC to resist the corrupter's censorship pressure.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: Improve US power grids [Richard Stallman's Political Notes]
US citizens: call on Congress to act to improve US power grids with more renewable generation and more battery storage.
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: Reject Digital ID [Richard Stallman's Political Notes]
US citizens: call on your senators to reject Digital ID.
In general, my political views resemble Bernie Sanders and Alexandria Ocasio-Cortez, not Ron Paul. But we must also resist increased surveillance without a specific court order.
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: Count cost of climate inaction [Richard Stallman's Political Notes]
US citizens: call on Congress to count the cost of climate inaction.
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: Pentagon journalist blacklist [Richard Stallman's Political Notes]
US citizens: call on the Pentagon to end its journalist blacklist.
Urgent: Pass the American Family Act [Richard Stallman's Political Notes]
US citizens: call on your congresscritter and senators to pass the American Family Act and expand the Child Tax Credit and Earned Income Tax Credit.
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: Stop IRS weaponizing IRS against nonprofits [Richard Stallman's Political Notes]
US citizens: call on Congress to stop magats from weaponizing the IRS against nonprofits.
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: Pass the Stop Wall-Street Looting Act [Richard Stallman's Political Notes]
US citizens: call on your congresscritter and senators to pass the Stop Wall-Street Looting Act Now!
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Here is the letter I sent:
To protect the US from private equity funds, we need to regulate them more — to treat them more like publicly traded corporations. The larger the amount of capital the fund wields, the more it should be regulated.
However, the Stop Wall Street Looting Act is a good start. I urge you to co-sponsor and pass that. It would help by
- Holding private equity firms liable for the debts and legal judgments of companies they control
- Protecting workers by prioritizing their wages and benefits in bankruptcy proceedings
- Ending extractive financial practices that allow firms to loot companies for short-term gains
- Increasing transparency and oversight of private equity activities
Sincerely,
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: Census Bureau plans to omit noncitizens from census [Richard Stallman's Political Notes]
US citizens: call on the Census Bureau to cease and desist from plans to omit noncitizens from the census.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: Preserve power plant pollution limits [Richard Stallman's Political Notes]
US citizens: call on your state's attorney general to fight to preserve power plant pollution limits.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: Keep Office for Civil Rights in Department of Education [Richard Stallman's Political Notes]
US citizens: call on your congresscritter and senators to keep the Office for Civil Rights in the Department of Education.
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.
Night Watch [Judith Proctor's Journal]
Night
Watch by Terry
Pratchett
My rating: 5 of 5
stars
One of the best books in the Discworld series. I love how Pratchett
builds up the memories triggered by the scent of lilac, and how we
gradually come to discover what those memories are.
Flung unexpectedly into the past by being too close to a massive
storm to close to the Unseen University, Vimes ends up being
involved for a second time in events that were key to his early
days in the Watch. But now, faced with the death of the man who
taught him how to be a copper, he has himself to become John Keel
and help show young Sam Vines how to both stay alive and to respect
the law.
In addition he has to capture a vicious criminal who was flung into
the past with him... A man who knows exactly who he is, and who
also threatens young Sam.
All this, while he desperately wants to get home, because Sybil is
about to give birth.
View
all my reviews
comments
Trying Out A New Recipe: Eat At Maude’s “Chocolate Chip Pumpkin Bread With Espresso Frosting” [Whatever]
It’s been a big baking week for me, and
y’all are getting subjected to my trials and errors as I try
out new recipes. For today’s baked good we have a chocolate
chip pumpkin bread with espresso frosting from Eat At Maude’s. With it being
fall now, I thought this was an appropriate choice. I have followed
Eat At Maude’s on
Instagram for a few months now and I am constantly amazed at
how good everything she makes looks, so I had high hopes for this
recipe. Plus, quick breads are usually kind of my specialty, so I
figured this would be an easy one for me.
The list of ingredients for this recipe is not exactly what I would call short. You can follow along with the recipe here. Here’s the lineup:

I think these ingredients are mostly very normal except the buttermilk definitely threw me for a loop. I can’t remember the last time I bought buttermilk. Unfortunately the store did not have their little quart size in stock so I had to get a full half gallon. Thankfully I have another recipe on my docket that utilizes buttermilk, so at least I won’t be wasting as much. The recipe calls for semi-sweet chocolate chips, of course, but I happened to only have the mini semi-sweet ones. I don’t think that really made too much of a difference, thankfully. I was also concerned I didn’t have pumpkin pie spice and was going to have to make it from like five individual spices mixed together, but it turned out I did have a bottle (from Dorothy Lane Market, even).
Oh, also, the recipe calls for some orange zest, but I had no oranges, so yeah… that ingredient got left out. I’m doing my best out here, okay!
Anyways, the first thing to do was to brown the butter (like I said last post, browning butter is a literal game changer), but what’s interesting about this recipe is that she has you add an extra tablespoon of butter to your browned butter once it’s done. I have never seen anyone else do that before. I don’t know exactly what it accomplishes, but I did it anyway.
Mix that with the espresso powder (if you don’t have any instant espresso powder, I highly recommend the King Arthur one!) and wait for it to cool before adding it to your sugar and oil. Add the pumpkin, spices, eggs, vanilla, and sour cream, but not the buttermilk yet.
Wet ingredients are a go:

And after the simple dry ingredient mixture, you get a gloop!

This batter smelled so good and so autumnal, I was definitely getting excited.
Add chocolate chips and put in a loaf pan:

Oh sheesh, that is a very full loaf pan. Hopefully it doesn’t rise too mu-

Oh gosh dang it.
Yep, she done spilled right on over! That was very much not ideal, but the fallen parts didn’t catch on fire within the hour and ten minutes it took to bake, so I consider that at least a partial success.
Ta-da…

Okay, this thing was browned and hard on the edges, but sunken in and concerningly soft in the middle. Thankfully, the recipe says the bread needs to reach an internal temperature of 195 degrees, so I can confirm that it was in fact up to temp. Even if it was overdone and also underdone at the same time.
Once it cooled a bit, I flipped it out:

I will say that usually this loaf pan’s Fall Harvest design is more.. apparent. The pumpkins and wheat got a bit lost in the extra moist super soft bread texture.
Honestly, soft is an understatement. This thing was falling apart so much that I couldn’t even get a slice out intact:

I mean, that’s a moist crumb right there, folks.
As for the espresso icing, it’s actually a cream cheese icing with some of the espresso powder in it, and it was very coffee-y but I really liked it! I would say it made a more appropriate amount of frosting compared to my last baking endeavor:

I did try some with the bread, but honestly you could just have the bread by itself and it’s perfectly good, if you don’t feel like making icing or don’t have cream cheese.
All in all, this bread was very tasty, but I’d argue it’s honestly a lot more like a cake. I feel like with something like banana bread, you can eat a slice with your hands, but with this bread you can’t pick it up. It needs a plate and a fork. And some milk on the side.
I did enjoy making this recipe but I wish it hadn’t spilled over and end up having some harder edges. My loaf pan is a perfectly normal size so I don’t know why it struggled to hold all the batter. Maybe splitting this up into two loaf pans and baking it for less time would be better? Or maybe like put it in a 9×9 cake pan and ice it like an actual cake? I’m not sure, but at least it’s really tasty.
While this recipe wasn’t that hard, I did make a ton of dishes making it. The pan to brown the butter in, a bowl for the brown butter + extra butter and espresso powder, a bowl for the dry ingredients, bowl for the wet ingredients, loaf pan, bowl for the cream cheese frosting, like two whisks, two rubber spatulas, stand mixer paddle attachment, 1/4 cup, 1/2 cup, 2/3 cup, 3/4 cup, 1 cup, 1/2 tbsp, tbsp, tsp, 1/2 tsp, 1/4 tsp, another 1 cup, and a butter knife. Not my most efficient work.
Does pumpkin bread with chocolate chips in it sound good to you? Does buttermilk seem like an odd ingredient for this? Let me know in the comments, and have a great day!
-AMS
KnotChat: Rodrigo Delavina Simon [Seth's Blog]
Who’s it for?
This problem you’re solving–is it your problem or are you focused on someone else?
I had a conversation with Rodrigo about his restaurant in Mexico:
You can have your own conversation with a colleague: find the free tool at: theknot.chat
Love that Olbermann is back.
Yesterday I posted a list of builtin verbs in Frontier, as implemented in our current Atlantis app. Today I asked Claude to update the list, I wanted to see which verbs were implemented and not implemented.
The number one waste of time and burnt braincells is they changed the Dock images for all their apps. That's the kind of thing you shouldn't change, like the color and shape of a Stop sign. Or QWERTY on a typewriter. I guess to regular Mac people I'm like Rip Van Winkle.
A functional Frontier [Scripting News]
I'm using Frontier on a Mac running MacOS v26.6.2, which is the current version of the OS.
Frontier running on a new Mac. And that's my computer.
It's like the moment I realized, in 2010, that I had succeeded in relocating to NYC. It had been a life ambition to live in Manhattan since I was a kid growing up there. There were a lot of hoops. I got through them. I woke up when I was walking down Bleecker St going to pizza with a few of the students I had just spoken with in a classroom. It hit me. I'm doing it. This is how I imagined my life when I was 17.

For a very long time it seemed ever more certain that the hope of a usable Frontier on current systems was slipping away, but now it's here. Improbable, even impossible things do happen. Something to ponder when you think things can't change. The opposite is true, you don't have to create the change, when it's time it happens.
That's something to think about. All the buried software that was good, that had ideas worth learning from, being prior art and solved problems for future generations of developers. And also as part of the vocabulary of the Claudes of the world.
The Accelerationist Case for Frontier Pacing [Radar]
The following article originally appeared on Venkatesh Rao’s Substack, Contraptions, and is being republished here with the author’s permission.
The sole athletic achievement of my life came in 1993: winning the IIT Bombay freshman 50m freestyle race with a time of 41s. That got me into the college swim team (it was a bad recruitment year) and launched my brief and entirely undistinguished athletic career. By my senior year, however, my 50m time had improved to about 38s (not enough to get me off water-boy duty since the team had several exceptional swimmers with much better times). Interestingly though, it was easier for me to swim faster at the end of my career than it was to swim slower in the beginning. The reason was that in the interim, the coach had significantly improved my stroke and breathing technique. It was all about managed pacing, not raw intensity of effort.
There is a fairly deep literature behind this apparently mundane lesson. Daniel Chambliss’s classic 1989 paper “The Mundanity of Excellence,” based on years of fieldwork studying competitive swimmers all the way from local clubs to the Olympic level, argued that excellence is primarily qualitative rather than quantitative. Elite swimmers do not simply do more of what mediocre swimmers do, or do it harder. They organize their activity differently: Strokes, turns, training habits, attention, and countless other small practices combine into a qualitatively different way of swimming. The route to excellence is not therefore reducible to maximizing effort along some obvious scalar dimension.
The same insight is condensed in a maxim common in military and special operations circles: “Slow is smooth, smooth is fast.” In activities where speed really matters, trying to go fast naively is often an excellent way to go slowly.

I never really stopped thinking about this problem. My 2011 book Tempo grew partly out of a long-standing interest in pacing across performance domains: how people experience time while making decisions, how rhythms of action emerge, and how timing relates to effectiveness. One of the ideas that has stuck with me since then is that tempo is something to be managed rather than maximized. There is no universally correct speed. There are only tempos appropriate or inappropriate to the dynamics of the situation.
Which brings me, somewhat unexpectedly, to Dario Amodei.
Amodei recently made the case that frontier AI development should be deliberately paced. His argument is primarily a safety argument. AI capabilities, he believes, are advancing quickly enough that the processes required to understand, evaluate, align, secure, and safely operate them are having trouble keeping up. This is not quite the old proposal for an AI “pause.” Pacing means continuing to advance the frontier while deliberately managing its rate, allowing safety work and institutional capacity to remain within striking distance of capability. Sam Altman has now endorsed the basic proposition, and Demis Hassabis has made closely related arguments about frontier capabilities outrunning scientific understanding and governance capacity. Elon Musk, more tersely, has said that Amodei is right.
There is an obvious cynical reading of this emerging consensus. The leading frontier labs have powerful economic reasons to want a regulated frontier. A regime that requires enormous compliance budgets, restricts open-weight releases, discourages foreign models, imposes burdens that startups cannot afford, or legitimizes coordination among a small number of incumbents could turn “safety” into a remarkably effective mechanism for protectionism and regulatory capture. That suspicion is not paranoid. Open models increasingly constitute a competitive threat to proprietary frontier providers, and the politics around regulating them already feature explicit accusations of regulatory capture. There is an additional awkwardness: Coordinated pacing among nominal competitors looks uncomfortably like coordinated restriction of output, enough so that the legality of such arrangements under antitrust law is already being debated.
I don’t think we need to resolve the question of motives. Perhaps these CEOs are sincerely terrified. Perhaps they are sincerely terrified and understand perfectly well that the regulations they favor would strengthen their competitive positions. Perhaps the mixture varies by person, company, and day of the week. It doesn’t matter much for my argument. The proposition that the frontier should be paced is worth considering independently of the political economy of the people proposing it.
I also don’t share enough of Amodei’s safety premises to make his argument my own. In particular, I think a great deal of contemporary concern about runaway AGI, superintelligence, and “alignment” is badly framed, and often borders on the theological. But I increasingly agree with his conclusion.
In fact, I think there is a strong case for frontier pacing even if you are an accelerationist and your objective is simply to make technological progress happen as fast as possible. I am not myself an accelerationist. My preferred framing is closer to managed tempo. But if I were one, I would still favor pacing the frontier right now, for a simple reason: Maximizing the instantaneous velocity of the AI capability frontier is no longer obviously maximizing the rate of technological progress.
There is, however, an important difference between my conclusion and the emerging frontier consensus. Their natural solution is coordination at the top: labs agreeing upon thresholds, governments blessing the coordination, evaluators policing it, and eventually perhaps international agreements extending it.
In other words, cartelization, hopefully of a benign sort.
I would prefer to see how much frontier pacing can be produced from the bottom up through ordinary market mechanisms. The distinction matters. The objective should not be to decide administratively how fast AI is allowed to improve. It should be to stop artificially rewarding frontier velocity after frontier velocity has ceased to be the most important form of progress.
A useful way to understand the distinction comes from another idea that startup culture has borrowed, and mostly misunderstood, from the military: John Boyd’s OODA loop. OODA theory says that you win by “getting inside the adversary’s decision cycle,” which is usually glossed as making decisions faster than the other guy. If you observe, orient, decide, and act faster than he can, the story goes, you eventually overwhelm him.
But inside does not mean faster. The objective is to operate within the decision dynamics of the system you are engaging in a way that lets you shape them. Against a human adversary, that may indeed sometimes involve accelerating until his ability to orient collapses psychologically. But it may also require waiting, withholding action, changing rhythm, or deliberately slowing down. In nonadversarial situations, the goal may not be collapse at all but harmonization for resonant support.
What matters is the right tempo at the right phase, not speed for the sake of speed.
Something analogous applies to scientific and technological progress. There is no enemy psychology to collapse, but there are still loops to get inside: observation, experimentation, interpretation, investment, construction, deployment, feedback, learning, and recombination. The useful question is not how rapidly one component of that system can be made to move. It is whether the tempo of development allows those loops to close. If one subsystem changes faster than the surrounding system can observe, understand, absorb, and respond to it, pushing that subsystem still faster can reduce rather than increase effective progress. It can induce fragility and collapse.
This, I think, is approximately where AI is now.
The simplest evidence is personal and almost embarrassingly mundane. Frontier AI is already overpowered for nearly everything I use it for. In my most advanced projects I may use the strongest model available (Fable for my coding projects) to plan an approach or make critical strategic decisions, but I can generally hand the resulting specification to a cheaper model (such as Opus or Sonnet) to do the routine work. For ordinary uses I don’t need anything close to the frontier. In ChatGPT, I no longer even know exactly which model I am talking to much of the time. Whatever the “think harder” control does is sufficient model selection for my purposes.
The situation increasingly reminds me of smartphones. There was a period when getting the newest iPhone produced a noticeable improvement in everyday life. Eventually the hardware got good enough that the upgrade cycle ceased to matter much. I kept an iPhone XS for almost a decade before replacing it with a 16. The frontier continued advancing; I simply fell off the frontier because my demand curve had stopped following it.
Something similar is beginning to happen with AI, except that the supply curve is moving incomparably faster. Six months ago I routinely maxed out token allotments. Now I don’t. Some weeks I barely use coding agents. This isn’t because I’ve become less interested in AI. It is because my own capacity to productively absorb AI output has become the constraint. I have projects to think about, things to read, people to talk to, and work to do in domains where AI cannot help me yet, or perhaps ever. I am already pacing myself at my own tiny personal frontier.
That is a significant change in the technological situation. The binding constraint is migrating.
Broader AI deployment is increasingly blocked by things other than model intelligence. Robotics has long been constrained by actuators, power, reliability, dexterity, manufacturing, and the sheer recalcitrance of the physical world. Those constraints are beginning to move, but making the model smarter does not make them disappear. AI in education is constrained less by whether a model can explain calculus than by our lack of sufficiently rich classroom experimentation about what happens when students and teachers actually use these systems. Current mid-tier models are probably capable enough to power almost any educational experiment worth trying in a high-school or undergraduate classroom. We do not need another order of magnitude of intelligence before conducting them.
This pattern should become more common as AI improves. Once intelligence ceases to be scarce, its complements become more important. Model capability can be abundant while classroom knowledge is scarce. Model capability can be abundant while actuators are scarce. Model capability can be abundant while electrical infrastructure is scarce. It can be abundant while organizational competence, human attention, scientific understanding, military doctrine, security practices, and good judgment are scarce.
This is not peculiar to AI. Capability-maxxing the coolest new weapon is bad military doctrine. The United States has enjoyed extraordinary technological superiority over its adversaries for decades and has nevertheless repeatedly discovered that superior equipment does not automatically produce strategic success. Logistics, doctrine, morale, training, political understanding, industrial capacity, and orientation matter. A force that neglects those complements because it possesses the best weapons can become remarkably fragile. From Vietnam to Iran, the US military has been repeatedly forced to relearn the lesson.
AI may now be entering the same regime. Fragility from neglect of everything non-AI is becoming a bigger risk than failure to token-max.
There is a further reason to suspect that continuing to redline the existing frontier may yield diminishing returns. The major labs increasingly appear to be competing along broadly the same technological S-curve. One suggestive sign is that they run into the same supply constraints: HBM, electrical power, data-center capacity, capital, and access to sufficiently large clusters. When a technological system moves onto a genuinely different S-curve, its important bottlenecks often change as well. If everybody’s problem is how to secure more of the same scarce inputs to do more of the same basic thing, that is at least suggestive that everybody is climbing the same sigmoid.
As I learned as a freshman swimmer, near the upper portion of an S-curve, pushing harder can become exactly the wrong acceleration strategy. You expend increasing resources for decreasing gains while starving exploration of the attention required to discover the next curve. Moving faster along an S-curve is not the same thing as accelerating technological evolution. Sometimes you have to back off the incumbent trajectory long enough to notice what the next trajectory is.
There is also a more immediate bottleneck that the AI industry seems reluctant to acknowledge: the humans at the frontier.
Startup people have been LARPing war for decades. This is one reason concepts like OODA became popular in startup culture in the first place. “War mode” usually means working extremely hard under conditions of strong personal financial incentives: long hours, high urgency, extreme focus, centralized authority, and a willingness to sacrifice ordinary organizational niceties. I’ve been around startup culture for decades, and I suspect the AI boom may be the first time the conditions have actually become meaningfully war-like.
AI frontier people are visibly unprepared for it.
Actual militaries and other frontline risk professions take the human consequences of sustained high-stress operations seriously. Soldiers, firefighters, emergency medical personnel, disaster responders, surgeons, pilots, and others operating in consequential environments develop elaborate practices around training, emotional regulation, redundancy, rotations, decompression, mandatory rest, checklists, after-action review, and recovery. These practices exist because motivation does not repeal physiology. Judgment deteriorates. Attention narrows. People make stupid mistakes. Emotional reactions become harder to regulate. Creativity disappears. Eventually people break.
Does frontier AI look like an industry managing itself accordingly?
From the outside, it looks closer to the opposite. People at the frontier have been operating under extraordinary pressure for several years with little respite. The cognitive ergonomics of their working conditions are a disaster. (We have a project going at the Protocol Institute led by Timber Stinson-Schroff to study this—contact him if you’re interested in participating in or supporting it.)
Competitive pressure, enormous amounts of capital, geopolitical attention, hostile public scrutiny, internal ideological battles, rapidly changing technology, and the conviction among some participants that their daily work may determine the fate of humanity are not normal occupational stressors. The rate of dumb, unforced errors appears to be rising. The quality of frontier discourse has, in my view, visibly deteriorated. People I once assumed were much smarter than me increasingly seem to be missing obvious things while becoming susceptible again to bad ideas I thought they had outgrown.
Tired people catch colds more easily; they catch bad ideas more easily too.
This produces a peculiar inversion of the conventional AI safety model. We normally imagine increasingly unreliable or dangerous AIs surrounded by reliable human supervisors. But what if we are increasingly producing extremely capable AIs surrounded by progressively less reliable humans?
“Human in the loop” is not much of a safety guarantee if the human has been metaphorically deployed aboard an aircraft carrier in a war zone for eight months without relief.
Some of the public testimony emerging from frontier organizations should perhaps be interpreted through this lens. I do not want to diagnose particular people from afar, and testimony from people who have worked closely with frontier systems should obviously be taken seriously. But when someone emerges from prolonged immersion at the frontier sounding psychologically shattered, there are at least two possible kinds of information in the signal. One concerns the technology. The other concerns what prolonged immersion at the frontier does to the observer. Frontier workers are sensors, but the sensors themselves are being perturbed by the phenomenon they are measuring.
We have seen versions of this going back at least to the Blake Lemoine episode at Google, when sustained interaction with LaMDA led him to conclude that the system was sentient. More recently, former frontier employees have emerged making extraordinarily grave predictions about where AI is heading, that ill-prepared, tech-hostile journalists are eagerly amplifying with lurid headlines.
The correct response need not be either “believe them and stop AI” or “they’re crazy and should be ignored.” Sometimes a sensible response to someone coming back from the front sounding shell-shocked and exhibiting symptoms of PTSD is: This person needs a vacation. We rotate soldiers partly because the testimony of exhausted soldiers matters.
The largest near-term AI safety concern may therefore be exhausted frontline humans supervising overpowered AIs.
Exhaustion is particularly dangerous when nobody can agree about what the enemy is. Much of the actual stress experienced by frontier organizations comes from a fairly comprehensible mixture of competitive pressure and techlash hostility. Those forces are intense, but neither is an existential adversary.
The clearest live adversarial problem involving AI is much more ordinary: humans using AI against other humans. Criminal applications are already real and deserve serious attention. Military applications are rapidly becoming real as well, and the relevant strategic picture is much broader than a stylized US-versus-China AI race. Smaller powers and nonstate actors can use cheap cognitive capability to lower engineering barriers that previously required deeper technical institutions. Recent reporting, for example, describes AI assistance being used in weapons-engineering work by actors in Houthi-controlled Yemen. That strikes me as the kind of development around which one can build a concrete threat model.
Longer-term military diffusion is clearly a serious concern. But much of the fear actually shaping frontier behavior seems aimed somewhere else entirely: toward vague runaway “AGIs,” “superintelligences,” and a metaphysically capacious notion of “alignment” inherited from philosophical traditions I find largely unpersuasive.
There is a useful analogy with climate change. Climate change produces actual physical stressors: more extreme weather, unstable agricultural conditions, infrastructure damage, wildfire risk, and so on. Those generate concrete political and humanitarian problems, including displacement and unmanaged refugee flows, while longer-term adaptation requires things like shoreline management, wildfire regimes, agricultural relocation, and preparedness for changing disease ecologies. Yet parts of climate politics have preferred to identify an ultimate metaphysical adversary called Capitalism, Markets, or Growth and an equally totalizing remedy called degrowth. Heterogeneous problems with different timescales and mechanisms get collapsed into one grand theory.
Parts of AI safety discourse increasingly strike me the same way. Competitive instability, cybercrime, weapons proliferation, institutional disruption, labor-market effects, and exhausted frontier personnel are all real and different problems. “Unaligned superintelligence” turns them into a single theological object. Once that happens, every stressor becomes evidence for the same threat model.
This is a kind of threat-model collapse. Adaptation is usually plural; apocalypse is singular. Real technological transitions produce dozens of mismatched rates and local failure modes, requiring different responses at different tempos. If criminals are the problem, work on security and law enforcement. If weapons diffusion is the problem, work on doctrine and proliferation. If operators are exhausted, rotate them. If schools lack experimental knowledge, run experiments. If power is scarce, build infrastructure. “Align superintelligence” is not a substitute for any of those things.
Pacing would give us something valuable here beyond safety: enough time to discriminate among threats.
Mathematics may already offer a miniature preview of what happens when one part of a knowledge-production system accelerates far beyond the others.
Terence Tao has recently distinguished three stages of mathematical work: generation, verification, and digestion. AI is rapidly making the first two cheaper. Models can generate candidate proofs, while formal systems such as Lean can increasingly verify them. But digestion remains stubbornly slow. Somebody still has to understand what the proof is doing, relate it to existing mathematics, extract reusable techniques, explain it, teach it, and use the resulting understanding to generate better questions. Tao describes the resulting condition as an “impedance mismatch.”
This is particularly interesting in light of what I have elsewhere called the curiously playable universe: the apparently expanding set of domains that can be transformed into sufficiently explicit games that AI can optimize effectively within them. Anything that begins to resemble a CAD system, a formal proof environment, or an evolutionary optimization problem over a sufficiently well-defined parameter space becomes potentially tractable to extraordinarily capable models. More of the world appears to be playable than we previously thought.
But playability has an important pathology. A highly playable domain supplies a scoreboard, and once AI becomes extraordinarily good at optimizing the scoreboard, the relationship between winning the game and advancing the larger domain can weaken. Solving a theorem is valuable partly because, historically, getting to the solution usually required acquiring understanding along the way. If an AI can helicopter directly to the summit, to borrow Tao’s analogy, the summit has still been reached, but nobody necessarily learned the trails, landmarks, terrain, or neighboring geography encountered during the climb.
Tao and two dozen other Fields Medalists recently made essentially this point in a declaration strikingly titled “A Severe Misalignment of AI in Mathematics.” Their pointed use of misalignment is almost the reverse of its standard AI-safety meaning. The problem they identify is not that AI has developed alien goals. It is that the incentives of AI companies to demonstrate spectacular problem-solving performance are becoming misaligned with the goals of mathematics itself. Solving difficult problems has historically served as a proxy for mathematical understanding and progress. Once AI can optimize the proxy directly, the correlation can break.
The recent Navier–Stokes episode illustrates the issue. Enormous amounts of inference can now be directed at a famous open problem, candidate constructions produced, and formal verification generated at extraordinary speed. Yet that does not automatically produce a corresponding increase in comprehensible, reusable mathematical knowledge. The pipeline is something like problem selection → generation → verification → exposition → digestion → canonicalization → better questions. Increasing the bandwidth of generation and verification by orders of magnitude while leaving the downstream stages roughly unchanged creates a queue.
Proof generation becomes abundant. Understanding becomes scarce.
That is frontier pacing in miniature. Maximum local throughput does not imply maximum system throughput. Indeed, beyond a certain point it can create congestion.
There is a strategic implication here for organizations outside the frontier labs. The natural reaction to rapidly advancing models is to assume that whoever possesses the strongest model necessarily possesses an overwhelming advantage. If a frontier model can turn increasingly playable engineering problems into few-shot solutions, and if most of the necessary input information exists somewhere in public literature, then organizations can easily conclude that whatever intellectual lead they possess is temporary. Why bother competing with organizations that possess better models, more compute, more money, and privileged access to the frontier?
But this risks confusing equipment superiority with orientation superiority.
Boyd repeatedly emphasized that superior orientation could overcome substantial equipment disadvantages. (“We’d still have won if we’d swapped equipment.”) The relevant analogy today is something like centaur chess. Your model does not necessarily have to outthink their model. Your humans have to out-orient their humans.
This becomes increasingly true as frontier capabilities bunch together above the threshold required for a particular task. In my own work, I increasingly find that I can use the strongest model to formulate or specify a solution and then hand most of the execution to a weaker model. For many problems, even that is overkill. I would readily bet on a well-oriented person using a slightly weaker model against a poorly oriented person using the strongest available model.
And the frontier labs have no automatic orientation advantage. Quite the contrary: They are simultaneously fighting an extraordinary number of battles under extreme strategic distraction. They are building models, securing compute, raising capital, negotiating with governments, managing safety factions, defending themselves against critics, competing for talent, building consumer products, selling enterprise software, contemplating hardware and robotics, responding to geopolitical pressure, and trying to decide what sort of companies they are becoming. They may have a model advantage while suffering an orientation disadvantage. There is no reason to assume that organizations exceptionally good at building foundation models are exceptionally good at everything their models can be applied to.
This is another reason pacing can be strategically productive. It creates room for orientation. In an environment saturated with FUD and “resistance is futile” rhetoric, organizations can lose before competing because they assume frontier capability automatically determines every downstream contest. It doesn’t. Superior orientation does.
Put all of this together and Amodei’s proposal starts to look different. His concern is that capability is outrunning safety. I think capability may be outrunning almost everything.
It is outrunning our ability to deploy it productively. It is outrunning classroom experimentation, organizational adaptation, security practice, mathematical digestion, physical infrastructure, and human attention. It may be outrunning our ability to distinguish actual threats from theological ones.
And it is almost certainly outrunning the decompression and recovery cycles of some of the people charged with making the most consequential decisions about it.
An accelerationist should care about every one of these things precisely because an accelerationist wants acceleration.
The mistake is to identify acceleration with the derivative of a single visible variable: benchmark scores, parameter counts, inference budgets, training compute, or whatever happens to define the current frontier. Technological progress is a coupled system. Accelerating one component beyond the absorption capacity of its complements eventually stops accelerating the system. The problem becomes especially acute near the top of an S-curve, where enormous resources can be consumed eking out diminishing improvements while the exploration necessary to find the next curve is crowded out.
There is a useful precedent in the history of the PC industry. For years, processor clock frequency functioned as the wonderfully simple consumer metric for progress: 486 MHz was better than 400 MHz; 1 GHz was better than 800 MHz; higher number, faster computer. Manufacturers had every reason to compete on the legible scalar, and consumers learned to buy it. Eventually this became the “megahertz myth.” Different architectures could do very different amounts of useful work per clock cycle, while pushing frequency upward ran increasingly hard into heat and power constraints. By the mid-2000s, the industry was moving toward multicore designs and a more complicated understanding of performance in which throughput, architecture, workload, thermal limits and performance per watt all mattered. Intel itself acknowledged at the time that as computer usage diversified, factors other than clock speed were becoming increasingly important to platform performance.
AI benchmark culture looks increasingly like the early stages of the same mistake. A benchmark is useful because it compresses a complicated question into a number. When capability is scarce and improvements are large, the number may track value surprisingly well. As systems become overpowered for more uses, however, the proxy begins to detach from what customers actually care about. A model that goes from 87 to 91 on some benchmark may represent an impressive scientific achievement while producing essentially zero additional value for a company whose relevant workload was already handled adequately at 75.
This suggests a path to frontier pacing that does not require a council of frontier CEOs deciding how quickly everyone is allowed to move.
Customers can simply become harder to impress.
Enterprise buyers can demand demonstrated improvements on their actual workloads rather than accepting leaderboard gains as evidence of value. Developers can (and already do) route work to the cheapest model that clears the capability threshold rather than reflexively calling the smartest one. Researchers can value useful scientific infrastructure, explanation and reusable knowledge rather than merely celebrating another famous benchmark or theorem knocked down. Investors can become less impressed by capital expenditure whose primary justification is preserving position on a frontier whose marginal economic value is falling. Users can decline to upgrade when the previous generation is already good enough. Current enterprise behavior already points in this direction: Cheaper and open-weight models are becoming attractive precisely because many workloads do not require frontier intelligence, while buyers increasingly demand measurable returns rather than capability in the abstract.
None of these mechanisms requires anybody to agree upon a socially optimal rate of AI development. They simply improve the feedback signal facing producers. The market stops saying “more intelligence, at almost any price” and begins saying “show me what this additional intelligence is for.”
There are supply-side versions too. As power becomes a binding constraint, performance per watt and useful inference per dollar should matter more than sheer training scale. As inference proliferates toward edge devices and private deployments, latency, reliability, privacy and local controllability become competitive dimensions. As organizations discover that weaker models can execute plans produced by stronger ones, heterogeneous model portfolios should compete with monolithic frontier consumption. Open-weight and decentralized systems can keep proprietary labs honest by making “good enough” intelligence cheap and difficult to monopolize. A mature AI market should develop more dimensions of performance precisely as the mature processor market did.
This is the sort of pacing I would prefer: not a speed limit but a richer scoreboard.
The objective should therefore not be maximum speed. It should be managed tempo for maximum actual progress. Sometimes that means sprinting. Sometimes it means dwelling at a capability level while applications, institutions, infrastructure, science, and humans catch up. Sometimes it means letting one subsystem race ahead while another rests.
Sometimes it means deliberately leaving expensive capability unused.
That last possibility may be the hardest one for AI culture to accept, because we are still psychologically adapting to the idea that intelligence might actually be abundant.
A true sense of abundance does not require you to max out the bounty. Nobody hyperventilates because free oxygen might disappear before they get their fair share. When something is genuinely abundant, you can waste it. You can use a frontier model for a trivial question. You can use a weaker model because it is good enough. You can leave tokens unused. You can spend a week doing something that doesn’t involve AI. You can allow an extraordinarily powerful model to sit idle while you think.
The mark of abundance is waste, including nonuse.
Compulsive token-maxxing is in this sense still a scarcity behavior. So is compulsive benchmark-maxxing, compute-maxxing, and capability-maxxing. Train now because somebody else will. Deploy now because the window might close. Consume all the intelligence available because leaving any unused feels like falling behind. An industry behaving this way may possess an abundance of intelligence without yet having developed an abundance mentality.
Slack is not necessarily the enemy of acceleration. Slack is where people recover, where institutions adapt, where strange experiments happen, where understanding catches up with proof, where neglected complements receive attention, and where somebody finally notices that the old S-curve is flattening and another one is waiting nearby.
So yes, pace the frontier. But don’t turn the frontier labs into a cartel to do it. Let safety work catch up, but also let customers become bored with vanity benchmarks. Let exhausted researchers sleep. Let mathematicians digest their proofs. Let schools figure out what to do with the models they already have. Let robotics catch up. Let organizations learn to orient themselves in a world where intelligence is cheap. Let markets discover that efficiency, reliability, privacy, integration and domain-specific usefulness sometimes matter more than another few points on a benchmark. Let us discover which risks are real, which bottlenecks have moved, and which parts of the world turn out to be playable.
Then, when the situation calls for it, accelerate again.
Slow is smooth. Smooth is fast.
Is cybersecurity part of your job in any way? If so, we’d like to know what you think for a report we’re writing. Just answer these quick 11 questions. Thanks in advance! Take the survey >
The Big Idea: Peter Watts [Whatever]

Times are tough, and according to Hugo award-winning author Peter Watts, they ain’t getting any better. But perhaps not all hope is lost. Optimism seems to be the surprising route Watts has taken with his newest short story collection, Fold Catastrophes. Pull yourself out of your doomer-spiral and check out his Big Idea.
PETER WATTS:
I had to be dragged into this.
I’m not pimping a novel, after all. I’m pimping a short story collection: a bunch of largely-unrelated small ideas coexisting between the same covers (or locked behind the same paywall, for those of you still in thrall to Amazon). Such collections aren’t often bound together by a unifying theme. Hell, the guidelines for Big Idea explicitly describe it as a platform for promoting novels and novellae. No mention of collections at all.
It seemed ironclad, until Rick Klaw over at Tachyon sent me links to a half-dozen Big Ideas focused on story collections. Scalzi clearly needs to update his guidelines. In the meantime, I better get started.
Big Idea, Big Idea. Some common theme uniting stories about sun-dwelling life-forms built out of spacetime microfractures, the effects of gut bacteria on human behavior, and the ways Neuralink could go catastrophically wrong if it functions exactly as advertised. Something that ties together Simulation Theory and child abuse in the Catholic church and ancient spaceships carved from asteroids. A professional killer grieving his lost son. A hypersonic missile with a crowd-sourced target. A dead fish-farmer, rebooted and press-ganged into a clandestine war against children (admittedly, very nasty children). Common theme, common theme, common…
Got it: optimism.
It might not be not the first word to spring to mind. Insofar as people talk about me at all, they tend to use words like dark, and depressing, and makes you want to open your veins in a warm tub. James Nicoll once opined “When I feel my will to live becoming too strong, I read Peter Watts”; our gracious host described me as “never cheerful” when blurbing this very collection.
I stand by it. What binds these stories together is a consistent sense of optimism. Because another term people use to refer to my work is hard SF: that end of the genre pool where at least some effort is made to cover the author’s ass in a patina of credible real-world Science to paper over the bullshit. And real-world Science has things to say about where we’re headed as a species.
We’ve wiped out over half the world’s wildlife and nearly half of all natural ecosystems just since the seventies. We’d reduced global commercial fish stocks by 80-90% by the end of the last century. Insect populations crash world-wide; 90% or more according to European surveys, 70% even in wilderness preserves in Costa Rica. Extinction rates are impossible to know for certain—we kill things off far faster than we discover them—but the estimates I’ve seen range from 60,000 to 130,000 species a year.
A series of papers from 2008-2025, reassessing the simplistic and once-derided predictions of the sixties-era Limits to Growth model, only confirm its original forecast: we’re still on the business-as-usual trajectory, and business-as-usual kills off 40-70% of us starting around mid-century. A 2021 Nature paper by Bologna and Aquino concludes that our best-case odds of avoiding “catastrophic collapse” are less than 10%. McKay et al scope out the terrain for a 2022 piece in Science, concluding that exceeding 1.5°C “could trigger multiple climate tipping points”—which seems a bit behind the curve given that we’ve already breached seven of nine planetary boundaries, and even the hopeium addicts over at the UN have been forced to concede that 1.5°C is already as dead as democracy.
To be clear, not all these studies conclude that global collapse is inevitable. The UN’s reluctant admission came with the usual lipsticked-pig insistence that we can still pull put of our nose dive if we all just come together and make the necessary radical changes to our lifestyle and consumption habits. The likelihood that we’ll manifest such self-restraint is left as an exercise for the reader, but here’s a hint: the response of the world’s governments to the recent spate of floods, firestorms, and heat domes has been to to abandon 45 climate initiatives over the past year, and to crank fossil-fuel production up to eleven.
So yeah. Business as usual. By the end of the twenty-first century, we’ll probably be living in the nineteenth. Set against these facts, how do the stories in Fold Catastrophes line up?
“Defective” portrays a near-future Human civilization able to build a device that fires artificial black holes at a bunch of unwelcome immigrants. “Giants” posits not only that we make it to the stars, but that we’ll still be out there a hundred million years from now. “Critical Mass” describes the creative redemption of an artist who has lost his way; I dare you to tell me it doesn’t have a happy ending. “Contracting Iris” shows us a grief-stricken woman afflicted by MS, finding peace and enlightenment before being drowned by a giant squid. “The Wisdom of Crowds” portrays a collective unconscious too ethical to let us cheat our way out of the hole we’ve dug for ourselves. And “Game Theory”? “Game Theory” is a Get Out Of Jail Free card for anyone who’s ever committed a shitty act (and really, isn’t there a little bit of pedophile priest in all of us?).
Yes, these stories tend to play out against a backdrop of environmental degradation and mass extinction; I still aspire to some degree of credibility. But they all describe civilizations replete with starry-eyed future-tech during a time when it’s far more likely we’ll be huddling in the ruins of past infrastructure, fighting over the last vial of penicillin while our kids die from scrapes and tooth infections. Optimistic is putting it mildly.
I’ll admit my stories are darker than most, but that doesn’t make them pessimistic; it only means that Human art reflects our delusional optimism as a species, although the evolutionary reasons for that are far Bigger Ideas than can fit into this column. So let’s just remember that we went into ecological overshoot back in the seventies; civilization has been living on credit ever since, and that card is pretty much maxxed out. It would be nice to think that—if it’s too late to save the planet—we could at least spend our few remaining decades hunting down the plutocrats, avoiding their killer drones, dragging them into the street and kicking them to death. (Oh right, rage: there’s another common theme linking these stories.) But that’s one arena in which I’m under no delusions. We’re more likely to just sit on the couch as we always have, snarfing pork rinds and watching AI cat videos until the ceiling crashes in.
But hey. At least now you have some light-hearted escapism to read in the meantime.
Fold Catastrophes: Amazon|Barnes & Noble|Bookshop|Powell’s
Author socials: Website
[$] Compiling the kernel with gccrs [LWN.net]
Pierre-Emmanuel Patry and Arthur Cohen gave a talk at RustConf 2026 on the status of the Rust frontend for GCC (gccrs), with a particular eye toward the goal of compiling the Linux kernel. Patry gave a follow-up talk for a more kernel-focused audience at Kangrejos the next week, which Cohen could not attend. The gccrs project is making good progress overall, but it will still be some time until the compiler is usable.
Security updates for Tuesday [LWN.net]
Security updates have been issued by AlmaLinux (apr-util, corosync, curl, freerdp, gstreamer1-plugins-base, libarchive, libtiff, libxml2, openexr, openssh, rsyslog, sudo, tomcat, unbound, webkit2gtk3, yggdrasil, and yggdrasil-worker-package-manager), Debian (chromium), Fedora (alsa-plugins, amarok, aqualung, atomes, attract-mode, audacious-plugins, audacity, baresip, blender, calibre, cantata, cef, chromaprint, chromium, digikam, doctl, dragon, ffmpeg, ffmpegthumbnailer, ffmpegthumbs, ffms2, fooyin, glaxnimate, goldendict-ng, gpac, gstreamer1-plugin-libav, guacamole-server, guvcview, haruna, hedgewars, icecat, janus, k3b, kdenlive, kf5-kfilemetadata, kf6-kfilemetadata, kpipewire, lazygal, lego, libcamera-apps, libheif, libopenshot, libopenshot-audio, libvncserver, localsearch, mat2, minidlna, mivisionx, mixxx, mlt, monado, mpd, mpv, mpv-mpris, neatvnc, notcurses, nv-codec-headers13.0, obs-studio, obs-studio-plugin-droidcam, obs-studio-plugin-pwvideo, obs-studio-plugin-vaapi, obs-studio-plugin-vkcapture, obs-studio-plugin-webkitgtk, olive, openal-soft, OpenBoard, opencv, openmw, opustags, os-autoinst, patool, Pencil2D, perl-HTML-FormHandler, pianobar, prometheus-podman-exporter, python-audioread, python-torchaudio, python-torchvision, qmmp, qmmp-plugin-pack, qmplay2, qt5-qtwebengine, qt6-qtmultimedia, qt6-qtwebengine, qtox, retroarch, rocdecode, rocdecode7.2, rsgain, siril, squeezelite, swayimg, tigervnc, timg, unpaper, vlc, vtk, waypipe, wf-recorder, wivrn, wxsvg, xine-lib, xmms2, xpra, xscreensaver, yle-dl, znc, and znc-clientbuffer), Mageia (nmap, pcre2, and vim), Oracle (curl, openssl-fips-provider, sudo, tomcat, webkit2gtk3, yggdrasil, and yggdrasil-worker-package-manager), Slackware (util-linux), SUSE (cadvisor, chromium, coredns, fake-gcs-server, freeciv, gh, glibc, google-guest-agent, google-osconfig-agent, hugo, kbd, kbfs, keybase-client, libheif, libpcap, mbedtls, pcre2, python-asteval, python-jwcrypto, python311, python313-ansi2html, shadowsocks-rust, sofia-sip, and trivy), and Ubuntu (clamav, expat, ghostscript, glib2.0, gst-plugins-base1.0, gst-plugins-good1.0, libsoup2.4, libsoup3, libssh2, libxml2, linux-azure-6.8, linux-azure-fde, linux-azure-fde, linux-azure-fde-7.0, linux-azure-fde, linux-intel-iotg, linux-kvm, linux-oracle, linux-xilinx-zynqmp, linux-gcp-6.8, linux-ibm, linux-xilinx, linux-ibm, linux-nvidia-bos, linux-raspi, memcached, openjdk-17, openjdk-21, openjdk-25, openjdk-8, openjdk-lts, rsyslog, and strongswan).
automake 1.19 released [stable] [Planet GNU]
Automake 1.19 released. Announcement:
https://lists.gnu ... -09/msg00001.html
AI Sovereignty: Bargaining with Big Tech and the Promise of Full Stack Open Source AI [Radar]
The early rapid expansion of AI capabilities that focused on frontier models was largely ushered into the world by a few powerful, US-based AI labs. Open-weight models released from labs in China, early on from DeepSeek, and later from Moonshot, Z.ai, and others, have in part disrupted that dominance. But growing concerns about the concentration of power have led to discussions about the need for at least some level of AI sovereignty.
AI sovereignty doesn’t necessarily imply total control of your AI stack. It holds the promise of having more localized security and privacy, better adherence to local jurisprudence (for example EU AI and data laws), more dependable service, and potentially more culturally specific outputs from the AI technologies used within a specified border or region. Negotiating interdependence is not necessarily a problem, but having an array of tools beyond just open-weight models and options in those negotiations beyond just commercial offerings is imperative.
Unsurprisingly, the same AI labs that gave rise to the need for AI sovereignty are also pushing their own solutions to the problem. While local institutions consider and even adopt some of these initial “sovereignty” offerings from these labs, open source AI technologies may offer a more promising horizon, more flexibility, and a means to manage dependencies. Tim O’Reilly argues open source AI is a potential opening for greater participation in the future of AI’s development.
From the underlying chip technology that is necessary for model training and inference to the cloud and data infrastructure that enables model development, companies such as NVIDIA, OpenAI, Google, Microsoft, and AWS have begun to stake out their own territory to maintain relevance within the global push toward AI sovereignty. Stanford University’s Human-Centered Artificial Intelligence Lab (HAI) lays out the different approaches and offerings these labs have developed in its report The Commercial Landscape of AI Sovereignty Offerings. It argues that while these labs “promise that countries will own their AI stack, [they also] deepen dependencies on U.S. Big Tech.”
There are some non-US-based commercial alternatives that offer their own “full stack” solutions or AI sovereignty for specific layers of the stack. Companies in Europe, the Gulf region, Asia, and elsewhere are positioning themselves as local alternatives to US tech oligarchs. According to the HAI report, “Many of the most mature and advanced companies are actively backed by their governments. In these cases, sovereignty is not just a marketing claim but a stated policy objective, with governments directing funding, structuring procurement, and, in some cases, selecting specific companies to build out domestic AI capacity on their behalf.”
These types of collaboration can both enable independence from US labs but may also create openings for political intervention. Claims about censorship and control of Chinese models emerged quickly after DeepSeek’s initial 2025 release. More recently, there have been probes into how US models may limit certain types of discourse. Moreover, the HAI report points out that often the offerings of these alternative providers still rely on the underlying technologies, specifically chips and cloud infra, of the US labs.
The proliferation of commercial offerings provides the space for diversification or potential leverage to negotiate better terms for collaboration, even with the dominant players. Open source AI technologies also play an important role in creating opportunities for even more diversification and greater sovereignty. As HAI argues, “Sovereignty strategies that do not consider the role of open-source AI risk normalizing fragmentation and political overreach.”
In order for open source AI to counter the diversification of commercial sovereignty offerings, these technologies must also proliferate beyond open-weight models. Arguing for a “federated system” of open source AI that enables sovereignty based on an “architecture of participation,” Tim O’Reilly writes that “the right infrastructure to let us satisfy both goals [of being everywhere and allowing everyone to have a say] will be a federation of models, a federation of protocols and code, and a federation of capacity. We need an architecture of participation all the way down the stack, and all the way up.” A key technology in the expansion of the open source AI stack these days are agent harnesses.
In a recent article, Mozilla CTO Raffi Krikorian argues that “the orchestration layer above the [model] weights is where capability is concentrating, and closed labs are already welding it shut”; therefore, it’s imperative to build on open harnesses, not just models. Commercial offerings that have dominated thus far include Claude Code and Codex. OpenClaw offered an initial disruption and promise for open source in late 2025, though the creator was quickly absorbed into OpenAI’s organization. While big tech labs continue to absorb when, who, and what they can, NousResearch’s self-improving Hermes agent harness has also garnered substantial attention now with over 230,000 stars on GitHub. More recently harnesses such as Pi and DeepSeek Harness are expanding that open source offering, heeding Krikorian’s call.
Beyond agent harnesses, some of the strongest open source projects are developing in the less visible layers. Inference engines such as vLLM, SGLang, llama.cpp, and ONNX Runtime make it possible to serve a range of models efficiently across data centers, regional clouds, personal computers, and edge devices. Ray, which was developed by researchers at UC Berkeley, distributes demanding AI workloads. Ollama lowers the barrier to running models locally. Together, these projects give institutions more freedom to change models, hardware, and hosting providers without rebuilding an entire system around another company’s proprietary platform.
Other fast-growing projects are filling out the data, interoperability, and accountability layers of the stack. The Model Context Protocol and Agent2Agent Protocol offer open standards through which agents can connect to tools and to one another. Qdrant, Chroma, Milvus, and LanceDB provide open infrastructure for storing and retrieving institutional knowledge. MLflow, Opik, and OpenLLMetry allow developers to evaluate, trace, and monitor AI applications without surrendering operational data to a closed dashboard. The AI Potluck Gap Map classifies inference, deployment, and agent protocols as mature open ecosystems but identifies resiliency gaps in storage and observability, where fewer fully open projects occupy the leading tier. These gaps point toward an important investment agenda. Sovereignty will depend not on finding a single open replacement for Big Tech but on sustaining interoperable public alternatives across every consequential layer of the stack.
Even still, the looming threat of acquisitions and absorption of open source is persistent. The fintech company Stripe recently bought OpenRouter, a platform that allows developers to access various models and has become a primary hub for accessing and routing open-weight models in particular. NVIDIA has acquired Hugging Face, one of the key players for the open source AI ecosystem, and it has also just settled a licensing deal with Poolside, which develops open-weight coding models, purportedly to avoid the oversight of complete acquisition.
AI sovereignty may mean the necessity of “calibrating interdependence” with US Big Tech solutions or replacing a foreign dependency with a domestic one for the time being. But it must also entail building the technical capacity, open infrastructure, and participatory institutions needed to preserve genuine choice across the entire AI stack. Open source will continue to be vulnerable to commercial absorption, and efforts to counter that must become more robust.
Is cybersecurity part of your job in any way? If so, we’d like to know what you think for a report we’re writing. Just answer these quick 11 questions. Thanks in advance! Take the survey >
CodeSOD: The John Cage Variable [The Daily WTF]
David C sends us a true confession.
For my job, I write C++ code as if it was a scripting language (long story) to produce programmatic animations for videos. Given that these are "write-and-run-once-and-never-look-at-it-again" programs, I tend to not try as hard to make my code good. But once I wrote this line of code, I had to take a step back and reevaluate my life choices.
fade_out(scene, length4->range(0, 3), length4_3_3, length4[4], length4[5]->range(0, 3));
This is a natural consequence of passing parameters as arrays,
it seems; instead of having meaningful named values in a
struct or similar, we have all these things packed
into arrays. We can see a long ago attempt at using variable,
badly, in the John Cage variable: length4_3_3. John
Cage's (in)famous composition, "4:33" calls into question what
precisely even is music, just like this variable calls into
question what even is a variable name- because this is clearly a
range expression of size 1. length4->range(3,1), or
more reasonably, probably length4[3].
Where a normal variable name might give us some indication about what its contents mean, this gives us none of that, just a statement of how we could acquire those contents if we ever wanted them again.
For disposable code, this is hardly the worst thing I've ever seen, but is any code truly disposable? You always find yourself wanting to pull some piece of it forward into the next project, inevitably. Read the third chapter of Structure and Interpretation of Computer Programs and consider yourself absolved. Go forth and sin no more.
GPT-6 Astra Breaks an Old Enigma Message [Schneier on Security]
This is pretty amazing:
However, the most astonishing thing about this break is that the GPT6 Astra did it entirely on its own. Carter Leffer only directed GPT6 Astra to see if it could break any of the unbroken Enigma messages published on the Crypto Cellar Research web page. After analysing the unbroken messages on the website, it decided that the most promising message was Nr. 172, MVUEH and it also quickly suspected that the plaintext of Nr. 173, SIPVX, might be related to the plaintext of the unbroken MVUEH message. After trying many different approaches, GPT6 Astra focused on using the repeated place name ROSENOW ROSENOW as a crib. After developing the necessary Python and C++ software for an Enigma simulator and an Enigma Bombe, GPT6 Astra started a thorough break with the ROSENOW crib, which in the end resulted in the correct key and plaintext for the MVUEH message being found.
We are still analysing the GPT6 Astra logs to see exactly how it executed the break. And we are discovering amazing details.
More details at the link.
Invitation to a KnotChat [Seth's Blog]
I’ve built a simple website that facilitates the conversations that can help us get unstuck.
In The Knot, I describe how we get entangled, hoping for two things to co-exist that cannot. We hide behind the entanglements, refusing to see them, and so our problems can feel permanent.
Working with thousands of people over the last few months, I’ve found that a few simple questions can unlock a deep conversation about what’s holding us back. But these conversations are easier with someone else. In person is great, Zoom works too.
This week, I’ll be posting some of the KnotChats I’ve hosted.
If you’d like to be part of one, you can organize one in just a few minutes. I hope you’ll check out the free site I built. It’s at TheKnot.chat.
Optimized for the phone, the key is that you’ll want to do it with someone who needs you. It’s 1:1, private and powerful. Who can you help?
I’m posting a simple video with instructions below:
Pluralistic: Bonta sold us out to Trump's oligarchs (22 Sep 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

Well, fuck. California Attorney General Rob Bonta just surrendered to the Trump-aligned Ellison billionaires who want to take over and destroy Warners, merging it with the chudded out husk they've made of Paramount, leaving these two colossal, corrupt, useless assholes to control Warners, Paramount and Tiktok:
In announcing the settlement, Bonta's office touted a long list of concessions the AG had wrung from the Ellisons before greenlighting this indefensible, illegal and dangerous merger. Every! single! one! of these concessions is meaningless bullshit. Bonta just handed the American movie and TV sector to two of the most odious creeps to draw breath, surrendering without firing a shot.
For a breakdown of how fucking useless this settlement is, read (who else?) Matt Stoller, whose piece breaking it down is titled "Happy Oligarch Day!"
https://www.thebignewsletter.com/p/happy-oligarch-day-as-trump-aligned
The first thing Stoller points out is that every one of the "commitments" in the settlement only matter if Bonta's office enforces them. Bonta's office will never have as much leverage over Warnermount as it has today, when the company is paying a $7m/day "ticking fee" while the merger is stalled (thanks to an injunction secured by the Hollywood unions, whom Bonta has just royally fucked, because they can't afford to litigate this case without the AG office's backing). So even if any of these conditions meant anything (which they do not), they won't be enforced. If Bonta can't bring Warnermount to heel today, when they have to pay $7m/day for so long as they're crosswise with him, how will he ever get them to do shit?
He.
Will.
Not.
But it doesn't matter. It doesn't matter! Because the Ellisons have given Bonta nothing. Take the guarantee that Warnermount "will make 30 films" for the next two years, and 32 films thereafter. That's what's been announced, but when former FTC Commissioner Alvaro Bedoya dug into the actual wording, he discovered they are only committing to distributing 30 films, and to making 15 films, which they are allowed to co-produce with other studios. They made 18 movies last year. Under the terms of this deal, they have "committed" to making fewer movies than they make today:
https://x.com/BedoyaUSA/status/2102173188557799773
They've committed to not selling the Warner lot. For five years. But they are allowed to move it out of LA, which is something my neighbors in Burbank are doubtless delighted to learn. After that, they can move it to whatever state offers them the biggest sweetheart tax deal and the weakest union protections.
They are prohibited from gouging the theater chains and putting them out of business to promote their streaming business. For three years. After that, they can let 'er rip.
Then there's the "editorial board" that will oversee the Ellisons' management of CNN and MSNBC, nominally to keep it from getting the CBS treatment and going 24/7 Great Replacement/Haitians eating dogs/Charlie Kirk funeral pyrotechnics spectaculars. Guess who chooses the members of the editorial board? The Ellisons. As Stoller writes, "it’s downright comical [that] they demanded that David Ellison not corrupt CNN by having David Ellison appoint a board ensuring that David Ellison not do that."
But you can ignore everything you've just read, because the settlement includes a clause that says they don't have to do any of the things it says they have to do. This is the "force majeure" clause, which is not like a normal force majeure clause (which allows the parties to back out of their commitment in case of war, wildfires, etc). This force majeure clause lets Warnermount tear up the entire agreement if there's a strike or a recession.
So: if (when) the Hollywood unions go on strike over this betrayal (which they absolutely should do), the agreement becomes null. And if (when) the AI bubble bursts and there's a massive recession, the agreement becomes null. And if (when) Trump's War on Oil plunges the US into Jimmy Carter-style oil economic tsunami, the agreement becomes null.
As Stoller points out, 12 State Attorneys General signed this piece of shit. Every one of them is a lawyer, and every one of them has a staff of lawyers. None of the glaring, catastrophic, utterly disqualifying defects in this "settlement" can possibly be a surprise to them. These Democrat warriors surrendered to Trump's oligarchs, giving them everything, including control over the American film and TV industry for so long as it limps along. They just assumed you wouldn't notice.
Stoller says he's "in a strangely good mood" about this because of all the political capital it took to get this over the line (unlike, say, Disney-Fox, which sailed through with nary a hitch), saying that it indicates that the public is fed up with monopolies. He's right, they are fed up with monopolies. Everyday Americans, Democrats and Republicans, are telling pollsters they'd back a politician who campaigned on shattering monopoly power:
https://libertyandpower.substack.com/p/pollsters-urge-dems-to-attack-monopoly
So this leaves us to wonder why Bonta (who talked tough in public about this merger and insisted he would never settle for this kind of weaksauce) stabbed the state, the country, Hollywood workers, and the American public in the back like this? Stoller's theory is that Bonta was isolated by "Democratic insiders" who wouldn't back his play.
OK, fine. As Stoller writes, there's no ambiguity here, this is just straight up corruption, oligarch pals of the President getting to roll up and gut the industry's globally important, culturally essential media sector. The "teachers' pets" of the Democratic Party have once again sold out working people in a bid to be liked by the rich and powerful.
This will fuel (more) distrust of America's political class, a distrust that has been repeatedly earned over decades and especially in this decade. Our leaders are "malevolent liars." It's been true for a very long time, but we can no longer pretend otherwise. Perhaps Stoller's right and this means we'll finally get some real change. I hope so. But for now, I'm just furious.
(Image: Todd Dwyer, CC BY-SA 3.0, modified)

Pollsters Urge Dems to Attack Monopoly Power. Candidates are Listening. https://libertyandpower.substack.com/p/pollsters-urge-dems-to-attack-monopoly
#25yrsago Finnish hacker's homebrew OS fits on a floppy https://web.archive.org/web/20010923224224/https://www.menuetos.org/
#20yrsago Can RIAA sue for songs they never verified by downloading from you? https://recordingindustryvspeople.blogspot.com/2006/09/preclusion-motion-filed-in-umg-v.html
#15yrsago Elizabeth Warren explains why taxing the rich isn’t “class warfare” https://www.youtube.com/watch?v=htX2usfqMEs
#15yrsago DoJ audit: meeting served $16 muffins and $8 coffee https://web.archive.org/web/20110921160806/http://news.yahoo.com/16-muffins-8-coffee-served-justice-audit-023623142.html
#10yrsago Psychology’s reproducibility crisis: why statisticians are publicly calling out social scientists https://statmodeling.stat.columbia.edu/2016/09/21/what-has-happened-down-here-is-the-winds-have-changed/
#10yrsago Notorious copyright troll sentenced to 20 weeks’ prison time for beating Uber driver https://torrentfreak.com/copyright-troll-partner-kicked-uber-driver-in-the-head-160923/
#10yrsago Understanding vulvas: what do they really look like? https://www.youtube.com/watch?v=qAFvGrOwVug
#10yrsago The American public subsidized $125m executive bonus for Wells Fargo exec who led massive fraud https://web.archive.org/web/20160922140758/https://www.ibtimes.com/political-capital/taxpayers-subsidized-wells-fargo-executive-pay-amid-banks-fraud-2419456
#5yrsago The music monopolists https://pluralistic.net/2021/09/23/remedies-beyond-antitrust/#face-the-music
#5yrsago The Halloween Moon https://pluralistic.net/2021/09/23/remedies-beyond-antitrust/#creepypasta
#1yrago The enshittification of solar (and how to stop it) https://pluralistic.net/2025/09/23/our-friend-the-electron/#to-every-man-his-castle

Edmonton: Elbows Up (Edmonton Public Library), Sep 28
https://www.epl.ca/blogs/post/elbows-up-with-cory-doctorow/
Boston: The Post-American Internet: Possibilities for a new
internet created by an American Hermit Kingdom (MIT Media Lab), Sep
30
https://www.media.mit.edu/events/the-post-american-internet-possibilities-for-a-new-internet-created-by-an-american-hermit-kingdom/
Boston: Rethinking Our Relationship with AI, Sep 30 (Emtech)
https://event.technologyreview.com/emtech-future-2026/detailed-agenda
Boston: The Paradox of Enshittification and Reverse Centaurs
(Harvard Berkman Klein), Sep 30
https://cyber.harvard.edu/events/running-harder-falling-faster-paradox-enshittification-and-reverse-centaurs
Brighton: Digital Sovereignty and the Post-American Internet
(Green Party Conference), Oct 3
https://www.openrightsgroup.org/events/digital-sovereignty-and-the-post-american-internet/
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
Hudson, OH: Hudson Library, Oct 7
https://engagedpatrons.org/EventsExtended.cfm?SiteID=3850&EventID=596952&PK=
Calgary: Wordfest, Oct 8
https://wordfest.com/2026/show/wordfest-presents-cory-doctorow-2026/
Winnipeg: McNally Robinson, Oct 9
https://www.mcnallyrobinson.com/event-18991/An-Evening-with-Cory-Doctorow
Paris: Slow Tech Summit, Oct 15
https://slowtechsummit.com/
Vancouver: Read, Resist, Repair, Rejoice (Vancouver Writers
Festival), Oct 19
https://writersfest.bc.ca/festival-event-2026/01
Victoria: Munro's Books, Oct 20
https://www.munrobooks.com/events/6113620261020
Vancouver: Life After AI (Vancouver Writers Festival), Oct
22
https://writersfest.bc.ca/festival-event-2026/46
Ottawa: Life After AI (Ottawa Writers Festival), Oct 24
https://writersfestival.org/event/life-after-ai
Kilkenny (Kilkenomics), Nov 6-8
https://kilkenomics.com/
Vancouver: Enshittification (Sid Williams Theatre Society), Nov
10
https://www.sidwilliamstheatre.com/events/cory-doctorow-talks-enshittification/
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
Montreal: World Science Fiction Convention, Sep 2-6
https://montreal2027.ca/en
Are 'AI Apocalypse' Warnings Just Marketing? (What's Left)
https://www.youtube.com/watch?v=IXd9HwIE5bo
The Real AI Threat Isn’t What You’ve Been Told (The
Tea with Myriam François)
https://www.youtube.com/watch?v=Vc8It00fRsA
Fascists may come after the AI bubble bursts (You&AI)
https://www.youtube.com/watch?v=J2WN64aQeYQ
What Would a Normal Person Do (Trashfuture)
https://www.patreon.com/trashfuture/posts/what-would-do-169247456
"Canny Valley": A limited edition collection of the collages I create for Pluralistic, self-published, September 2025 https://pluralistic.net/2025/09/04/illustrious/#chairman-bruce
"Enshittification: Why Everything Suddenly Got Worse and What to
Do About It," Farrar, Straus, Giroux, October 7 2025
https://us.macmillan.com/books/9780374619329/enshittification/
"Picks and Shovels": a sequel to "Red Team Blues," about the heroic era of the PC, Tor Books (US), Head of Zeus (UK), February 2025 (https://us.macmillan.com/books/9781250865908/picksandshovels).
"The Bezzle": a sequel to "Red Team Blues," about prison-tech and other grifts, Tor Books (US), Head of Zeus (UK), February 2024 (thebezzle.org).
"The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org).
"The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
"Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com.
"Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
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. Fourth draft completed. Submitted to editor.
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.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Bluesky (no ads, possible tracking and data-collection):
https://bsky.app/profile/doctorow.pluralistic.net
Medium (no ads, paywalled):
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

they'll put some drywall up eventually
D.C. Circuit Must Vacate a Drone Flight Restriction That Criminalized Recording Immigration Agents [Deeplinks]
EFF joined an amicus brief with ACLU, ACLU of D.C., National Press Photographers Association, and Professional Photographers of America to urge the D.C. Circuit to vacate an FAA drone flight restriction that violated the First Amendment right to record law enforcement. This is an important case—Levine v. FAA—challenging the ability of the government to punish drone pilots who record law enforcement officers engaged in official business.
As we wrote about earlier this year, the FAA issued a flight restriction for drones that had effectively criminalized the recording of Department of Homeland Security officers, including immigration agents from ICE and CBP, and their vehicles (what the FAA called “mobile assets” including “ground vehicle convoys and their associated escorts”) even if the drone was over half a mile away.
A drone operator, represented by the Reporters Committee for Freedom of the Press, sued the FAA in March [PDF]. But in April, the FAA rescinded the flight restriction.
The petitioner argued in his opening brief that the court should evaluate the legality of the flight restriction even though it was withdrawn. Drone pilots could still be punished for violations that occurred when the flight restriction was in effect. And the FAA could reinstate the flight restriction at any time, given that the rescission did not seem to reflect “a true change of heart” but rather an effort by the agency to avoid judicial review.
The amicus brief, filed in support of the petitioner, noted that drones are unique because they provide “perspectives that cannot be captured by ground-based imagery,” and they “are far more maneuverable than ground-level cameras, and they are both much cheaper and much safer than using a chartered plane or helicopter to record newsworthy events from above.” The brief highlighted that drones have captured “bird’s-eye images of protest activity” and “police uses of force against protestors,” and have “allowed journalists to provide the public with up-to-the-minute information about natural disasters without putting themselves in harm’s way.”
The brief argued that using drones to capture images and video is information-gathering activity protected by the First Amendment (similar to using cell phones to record law enforcement). The brief also argued that the FAA’s flight restriction appeared to be issued specifically to ban the recording of immigration agents and thus hinder accountability for their enforcement actions—it surely wasn’t a coincidence that the FAA imposed “no-drone zones around all roving DHS patrols just as those patrols were provoking intense national backlash.” If that’s true, it would make the FAA’s action a content-based restriction on speech that is subject to strict scrutiny—the highest First Amendment standard—and presumptively unconstitutional. And even under less rigorous standards of First Amendment scrutiny, the flight restriction is unconstitutional because the FAA can’t articulate any valid governmental interest justifying such a sweeping restriction on speech.
Resolving this issue to protect First Amendment rights is especially urgent as government agencies continue to sink billions of dollars into technology designed to counter drones—technology that could easily be deployed against journalists and other people hoping to use drones to document government abuse.
We urge the D.C. Circuit to review the petition and to vacate the FAA’s flight restriction, which would send a message that the government can’t avoid accountability by punishing those who exercise their First Amendment rights.
Reproducible Builds (diffoscope): diffoscope 330 released [Planet Debian]
The diffoscope maintainers are pleased to announce the release
of diffoscope version 330. This version
includes the following changes:
[ Chris Lamb ]
* Don't Build-Depend on apksigcopier as it has been removed from testing.
(Closes: #1146852)
You find out more by visiting the project homepage.
You know the GDPR is good based on who hates it [OSnews]
It is impossible to go anywhere in a technology space online without hitting a wave of commentary about how stupid GDPR is. It was written by bureaucrats who don’t understand the amazing potential of unrestricted technology. These US-based critiques almost always lean on the oldest trick in cyberlibertarianism: we don’t have time to regulate, we must simply adapt and ride the wave. Nobody has time for government.
Of all GDPR’s consequences, none gets more attention than the cookie banner, which critics present as the inevitable result of government meddling. Blaming GDPR for the cookie banner is like blaming the health inspector for the roaches. The banner is deliberate vandalism, a dark pattern engineered to exhaust you before you can learn anything about the surveillance apparatus humming behind the “OK.” Ironically the banner designed to hide the machine has taught the public more about the machine than a thousand podcasts ever will. Even non-technical people stop at “your data is shared with 996 partners.”
↫ Mat Duggan
There is so much misinformation about the cookie banner, it’s honestly quite hard to believe it’s not deliberately spread. You don’t need a cookie banner for functional cookies, so as long as you don’t share your users’ data with anyone else, you don’t need a cookie banner at all. On top of that, most cookie banners you encounter are actually not compliant with the GDPR at all, because they don’t present a single-click option to block your data from being shared with those 996 partners.
What the cookie banner has done is inform millions – maybe even billions – of people the world over of just how insipid the online advertising and data harvesting industry really is. It put the issue on the map, and by now, everyone, no matter their level of computer literacy, is fully aware of what’s happening to their data every time they see one of these (non-compliant) banners. No else had the guts to do this – except for the European Union.
The wider GPDR has set the baseline for online privacy protections, and while we have a long way to go before we’ve fully solved this issue, the EU at least gave us a good point to jump off from. Smoking and asbestos weren’t banned in a day, either.
KnotChat! (Simone Giertz and Chip Conley) [Seth's Blog]
All this week, to celebrate the launch of The Knot, I’ll be posting conversations I’ve had about problem-solving.
Some are more focused on the structured approach built into the free tool I built (find it at theknot.chat ) while, others, like these two, are a bit looser.
The first one I recorded was with the legendary Simone Giertz. I was a bit nervous, but we had a lot of fun.
And a second, with my old friend, co-author and impresario Chip Conley. His Modern Elder Academy is changing lives.
Googlebook OS: Google launches its Android-powered laptop effort [OSnews]
A few months ago, Google announced it was going to put Android on laptops (and eventually, desktops), serving as eventual replacements for Chromebooks. Unlike those, though, these new Android laptops wouldn’t be low-quality, cheap, underpowered devices for school children to spill milk on, but devices actually competitive with Windows and macOS laptops. Today, the company finally allowed the press to use these new things.
Google describes Googlebook as a “totally fresh approach to computing,” bringing together Android, ChromeOS, Gemini, and premium laptop hardware from major manufacturers.
The idea is to create a laptop that feels more natural to use for Android phone users while retaining what makes a desktop OS useful, such as a full Chrome browser, desktop apps, a proper file manager, Linux support, and a full terminal environment.
Google is also trying to solve some of the biggest problems Android users have had when moving between their phone and laptop, and make the two devices feel like part of the same ecosystem.
↫ Adamya Sharma at Android Authority
I’ve been looking at some of the videos of people using and playing with these new Android laptops, and to be honest, I’m not impressed. I’m seeing quite a bit of jank, a complete lack of consistency, and apparently, a lack of Android applications optimised for desktop use. The close integration with your Android phone are nice, but of course, this also means another dollop of slimy lock-in, as I highly doubt Google will make it easy or even possible at all for, say, iPhones or other platforms to integrate quite as nicely as Android devices will.
Worse yet, there’s the elephant in the room: for just how long will Google care about this new platform? These laptops start at $900 and go all the way up to $1300 (and will be considerably more expensive here in Europe), which is a lot to ask for something Google might get bored of and abandon in a few years’ time. Ten or more years ago, in a slightly more innocent time, I might’ve been excited about Google bringing Android to laptops and desktops, but in 2026, I just can’t be bothered to care.
Also, and this doesn’t really matter, but “Googlebook OS”?
Let’s stop debating the GnuImp Manipulation Program [OSnews]
The GIMP will never magically become software beloved by artists—not without radically changing its culture, and making the artists the ones who call the shots. The GIMP will remain what it has always set out to be: a tinkerer’s toolbox, more concerned with the purity of its software politics than with garnering a loyal userbase of photographers and designers.
But because everyone insisted to poise it as a viable Photoshop killer, Linux is left with an obvious hole in its software offering, a hole nobody managed to fill with their own challenger.
↫ Aria Salvatrice
Excellent article, and spot-on conclusion.
I asked Claude to create a list of all the verbs in Atlantis. Some of them obviously don't do anything. We don't have the card funtionality, or the osa, rectangle, pict, rez or point verbs. What is pikeRenderer? I think we could have a use for quicktime verbs? There's a new scheduler, I wrote it in 2014 or so, but the old one is there, and we just found a reference to it. This could make a nice community project.
Fire Emblem: Fortune's Weave has Mr. Gribbz by the shortest and curliest hairs he's got. You know it's fucked up when he feels compelled to make a whole post about something, as he abhors the written word. But when a game gets him to stop skipping cutscenes, a phenomenon whose rarity would allow me to count it on one hand, that's when you know you're dealing with some all-time shit. I don't think he's a casual-t, but he's way too invested in the story to miss something because of a bad roll.
TLDR: I Love Fortune's Weave [Penny Arcade]
Sometimes I bounce right off of a Fire Emblem game, and sometimes they get their hooks in me. On paper I should not be into Fortune’s Weave with all its social dynamics and heavy story bits but I somehow managed to play long enough to discover a gameplay loop that has me completely obsessed.
Reminder to self, Frontier must have websockets verbs. I love websockets, and it'll fit in perfectly with everything else Frontier it does. I don't think Websockets existed when Frontier went to sleep.
Brian Lehrer podcast has an esp good one hour episode with interviews about the end of the world as we know it with AI. He's so good at cutting through the hype and getting to reality as are his guests.
I can now publish a new part to the codecasting feed. It was one of the things that broke in the transition to current MacOS for Frontier.
Zero to Agent in 30 Minutes: Build a Sports Concierge Agent with Chester Ismay [Radar]
Chester Ismay, a data science educator and AI consultant, created schedule viewers to keep up with the sports he follows, including the WNBA, NFL, NBA, and Premier League. But he still had to decide which games deserved his attention each week.
In this episode of Zero to Agent in 30 Minutes, Chester built a sports concierge agent to surface the games he should watch. It reads his preferences and current schedules, then sends a weekly summary to his phone. He took the audience through the setup, which combines a prompt file, limited tool permissions, a schedule, and notifications.
Next week, AI engineer Sajal Sharma gives an agent its own computer in the cloud using services such as E2B and Scrapybara. He’ll demonstrate how sandboxing lets an agent install packages, run code, drive a browser, and control a remote desktop.
Follow along with Zero to Agent in 30 Minutes on Radar, or watch the latest episode on YouTube, Spotify, Apple, or wherever you get your podcasts. If you’re an O’Reilly member, you can watch live. Save your seat.
Is cybersecurity part of your job in any way? If so, we’d like to know what you think for a report we’re writing. Just answer these quick 11 questions. Thanks in advance! Take the survey >
Igalia celebrates "Twenty-Five Years Upstream" [LWN.net]
The open-source consulting firm Igalia has put out an announcement celebrating 25 years of working on upstream FOSS projects for its clients. The list of projects the company has worked on is rather eye-opening: WebKit, mobile-browser rendering (on Maemo, Moblin, MeeGo, and Tizen), the Linux kernel (CPU and GPU scheduling), 3D graphics drivers, the Orca screen reader, GStreamer, and lots more. Beyond that, the company, which is a worker-owned cooperative, does its work in ways that benefit the community as well as its clients:
None of this is charity. Igalia is a consultancy, and most of the work above was paid for by someone with a product to ship: a device maker who needs the web to run well on their hardware, a platform that needs a feature its users keep asking for, a company whose roadmap depends on something deep in the stack working better than it does today. What they get from us is not a patch to carry forever. We do the work upstream, in the project itself, so it arrives in the next release and keeps working long after the contract ends. Our customers ship products built on code that nobody has to maintain alone, and everyone else gets the same code. That has been the arrangement from the start.
A Sweary Paean To Autumn, Told in Bluesky Form [Whatever]
It went a little something like this.
And if you’re thinking, “this is kinda like that McSweeney’s post“: well, yes.
— JS
Reverse-Engineering Flock Cameras [Schneier on Security]
Hackers captured a Flock camera and got a look (alternate link) at the software:
While much of the automatic license plate reader’s (ALPR) most sensitive storage remained encrypted and inaccessible, the joint analysis of the recovered data shows that software running on the device explicitly detects people as well as vehicles, license plates, and bicycles. The camera can produce dozens of images of a single passing vehicle and, according to several weeks of recovered logs, generated more than a million images. Its computer-vision software also sometimes isolated bumper stickers and other graphics, including, in one case, an American flag patch on a motorcyclist’s saddlebag.
If you’re wondering how the hackers got by disk encryption, one of the unencrypted partitions contained the key for an encrypted partition. That’s pretty bad security engineering.
What’s the highest legal FILETIME? Is it safe to use? [The Old New Thing]
A customer wanted to define a sentinel FILETIME
that will be considered larger than another FILETIME.
In other words, CompareFileTime should
always say that the sentinel value is later. What’s a good
value to use?
Strictly according to the definition, the FILETIME
consists of ticks since January 1, 1601, and it is an unsigned
value, so the highest value is presumably
0xFFFFFFFF`FFFFFFFF.
On the other hand, the documentation for FILETIME
itself notes that some functions consider the value
0xFFFFFFFF`FFFFFFFF to have special meaning. For
example, the SetFileTime function treats
that value as meaning “Do not update the time for this
handle.”
Any values larger than 0x7FFFFFFF`FFFFFFFF will
also cause problems because functions like
CreateWaitableTimer treat
FILETIMEs with the high bit set as representing the
negative of a relative duration rather than an absolute point in
time. Also, some programs consider those values to represent times
that comes before January 1, 1601.
And then there are functions like
FileTimeToSystemTime which
also reject FILETIME values greater than
0x7FFFFFFF`FFFFFFFF. So you’re probably best off
not going above 0x7FFFFFFF`FFFFFFFF.
But wait, you may also want to be concerned about code that does time zone adjustments or things like “One day later”. If you give them the value at the extreme end of the range, the adjustment may trigger an overflow into a negative value. Is that okay? I mean, you did try to go beyond the maximum value. It sort of depends on what you’re using this sentinel value for.
Interestingly, you can ask
FileTimeToSystemTime to
convert 0x7FFFFFFF`FFFFFFFF to a
SYSTEMTIME, and it will give you a date in the year
30828, but if you try to convert it back,
SystemTimeToFileTime fails.
It can dish it out, but it can’t take it.
The SystemTimeToFileTime
function supports dates only through the end of the year 30827. If
you try to get the last millisecond of the year 30827, you will get
some value, but the precise number will depend on how many leap
seconds have been stored in the leap second database.
Meanwhile, the CLR System.DateTime caps at the end
of the year 9999. And some calendars like the
ChineseLunisolarCalendar have an even lower maximum supported date.
(For ChineseLunisolarCalendar, the maximum supported date is
somewhere in early 2101 because
that’s as far as the tables go.) Other programming
languages will have their own limits on the range of a date.
Okay, so what value should you use?
It depends on what you’re using it for.
If you need a number that simply compares larger than any other
value when compared with CompareFileTime,
you can use 0xFFFFFFFF`FFFFFFFF, which is the largest
value supported by CompareFileTime.
However, you shouldn’t let that value escape your code
that understands the value’s special sentinel meaning. If you
let that very large value escape, then somebody might do a time
zone conversion or say “Great, let me set an alarm for 1 day
later,” or try to convert it to a C#
System.DateTime and encounter an overflow.
if you need a special value for use outside your code, you
should find some other way of specifying that special value, like
as a std::optional for C++ or a
Nullable<DateTime> for C#. That way, each
consumer can map the result to something appropriate for their
specific language.
The post What’s the highest legal <CODE>FILETIME</CODE>? Is it safe to use? appeared first on The Old New Thing.
Comparing exception behavior of magic statics, std::call_once, and std::async [The Old New Thing]
We’ve been comparing magic statics,
std::call_once, and std::async,
but one thing we haven’t considered is their behavior in the
event of an exception.
For magic statics, if an exception occurs during initialization of the static, then the static is considered not to have been initialized. The exception propagates, and the next time the function is called, the language will try to initialize the static again.
For call_once, if an exception occurs during
execution of the lambda, then the call is considered not to have
occurred. The exception propagates, so the next time you call
call_once with the same once_flag, it
will try to call it.
But std::async is different. If an exception occurs
during execution of the invocable, then the exception is saved, and
when you ask the future or shared future for the result, the
exception is rethrown. It does not try to execute the
invocable again.
Let’s summarize this in a table.
| Before | After success | After exception | |
|---|---|---|---|
| Magic static | Uninitialized | Initialized | Uninitialized |
| std::call_once | Uninitialized | Initialized | Uninitialized |
| std::async | Uninitialized | Initialized | Failed |
Or we can do it in a state diagram.
| magic static fail call_once fail ⮏ |
async fail | |
| Uninitialized | → | Failed |
| ↓ success | ||
| Initialized |
Going back to the choice between std::call_once and
std::async, you have to think about what you want to
happen if an exception occurs while trying to initialize the
variable. If you want to try again, then use
std::call_once. If you want to remember the failure
and keep rethrowing it, then use std::async.
If you are indifferent, then I would suggest
std::call_once, because it is much lighter weight.
The post Comparing exception behavior of magic statics, <CODE>std::<WBR>call_<WBR>once</CODE>, and <CODE>std::<WBR>async</CODE> appeared first on The Old New Thing.
1349: Oozing Out [Order of the Stick]
http://www.giantitp.com/comics/oots1349.html
Security updates for Monday [LWN.net]
Security updates have been issued by AlmaLinux (kernel, perl-Net-DNS, sudo, tomcat, and tomcat9), Debian (chromium, gimp, libde265, libevent, linux-6.12, ruby-jwt, and unbound), Fedora (asterisk, chromium, doctl, dovecot, evolution, firefox, forgejo, freeciv, freeipa, gegl04, gimp, libheif, nss, opkssh, parted, ruby, stb, thunderbird, unbound, and webkitgtk), Mageia (bind, gawk, gdk-pixbuf2.0, graphicsmagick, gstreamer1.0-plugins-base, libde265, libpcap, libssh, mpg123, ntfs-3g, ntpsec, patch, perl-YAML, postfix, python-configargparse, and python-httplib2), Oracle (.NET 10.0, .NET 8.0, .NET 9.0, firefox, image-builder, kernel, libevent, libsoup, libsoup3, perl-Net-DNS, python-lxml, sudo, tomcat, tomcat9, and unbound), Slackware (stunnel), SUSE (alloy, dovecot22, ffmpeg-8, firefox, firefox-esr, freeipmi, glibc, google-guest-agent, google-osconfig-agent, helm, ImageMagick, jq, kbd, kernel-devel, libpcap, libsoup, libzypp, zypper, NetworkManager-applet-l2tp, nginx, openCryptoki, pcre2, python311, python313-aiosmtplib, python313-litellm, rpm, and thunderbird), and Ubuntu (linux-aws, linux-aws-fips, linux-azure-5.15, linux-azure-fde-5.15, linux-azure-fips, linux-azure-5.4, linux-gcp-fips, linux-azure-fips, linux-nvidia-tegra, linux-raspi, linux-raspi-realtime, and rclone).
EU Kids Act Won't Keep the Internet Accountable and Trustworthy [Deeplinks]
The EU Commission draft law to restrict young people’s access to the internet that it presented last week will come at a high cost: it will put online services behind age gates, expand the use of intrusive age verification, and undermine the privacy of all users.
The EU Kids Act aims to protect children from risks associated with social media, video games, and AI systems by introducing age-based access rules, safety requirements, and stronger enforcement and oversight measures. It presents itself as building on the Digital Services Act (DSA) and puts into “hard law” some of the safety-by-design measures specified in the non-binding DSA guidelines on minors’ protection.
The proposal is built around the following elements: social media age “delay”, safety by design, age assurance and parental responsibility, and strong enforcement. Each of these measures are concerning.
Following the advice of an expert panel, the proposal would create a phased access to social media and video-sharing platforms deemed risky—a threshold met simply by relying on personalized recommender systems or offering “uninterrupted content consumption”: no service accounts for children under 13; restricted accounts under tight parental supervision from 13 to 15; and autonomous accounts in a safe-by-design environment from 15 to 18. Full online access is therefore reserved for adults.
However they’re designed, age gates undermine civil liberties, reduce safety, and create barriers to internet entry, often at the expense of marginalized groups.
If this sounds complex and like a compliance nightmare, that’s because it is. The access delay comes with privacy-intrusive age verification across the board, relying on the EU age verification scheme. For teenagers, this law means significant control in the hands of their parents, who must set up accounts and prove that they are, in fact, parents, adding yet another problematic layer of verification.
In fairness, the Kids Act’s gradual approach at least appears to be designed with some proportionality considerations, rather than imposing a blanket social media ban. Just last month a French court declared such undifferentiated bans unconstitutional. The EU Kids Act distinguishes between age groups and certain services and follows a risk-based approach. This means, for example, that age verification is not required for existing accounts if the provider can tell with a “high degree of confidence” that the user is above the age threshold—a vaguely specified standard.
Yet, the law still indiscriminately covers social media and video-sharing, with virtually all mainstream services being covered by the proposal. The broad scope also sits uneasy with the use of age thresholds, which remain a blunt proxy for maturity. What is more, by focusing heavily on safety and harms, the EU Kids Act pays little attention to the privacy and freedom of expression rights of users, as well as the right of children themselves to access information and to participate online. However they’re designed, age gates undermine civil liberties, reduce safety, and create barriers to internet entry, often at the expense of marginalized groups. They also create a powerful infrastructure for control and further entrench the power of big tech.
The proposal exempts not-for-profit encyclopedias, scientific repositories and educational services, as well as open-source software-developing and-sharing platforms. However, no exceptions are foreseen for small and medium-sized enterprises, which will only foster the dominance of resource-laden tech companies that were already investing in similar measures. And we know that most companies are well-advised to play it safe and use privacy-unfriendly age checks across their platforms.
The proposal’s second pillar, “safety by design”, casts a wider net. It applies across social media, video-sharing, online games, AI companions, chatbots and even app stores—with varying requirements. Providers must generally make child-safe design the default and can relax from the requirements only if they use age assurance to establish that the user is an adult.
For example, rules on addictive features such as infinite scrolling, safe account settings, and more choice over recommender systems are to provide a safe internet experience to young people. As regards AI companions and chatbots, the proposal requires companies to design their services to reduce minors’ exposure to emotional dependencies and harmful interactions. Online games are covered as well: they must come with contact protections. The law also makes app stores the gate keeper for age-appropriate access, based on an age-rating system.
The devil of these measures lies in the details, but all of them raise fundamental rights concerns and some of them seem poorly suited, if at all, to the decentralized architecture of the Fediverse. The requirement for very large online platforms to set up compliance plans before rolling out new services raises additional questions about the risks of transplanting product-safety doctrines of conformity and risk control into speech regulation. Deciding what is “safe” can easily become a question of what content people can access or share.
By choosing to regulate all these aspects through the Kids Act, the Commission not only but creates a privacy minefield, it also intermingles the digital fairness agenda with the more fundamental-rights heavy questions of age assurance and access to information. An unfortunate policy choice that will politicize well-intentioned efforts to curb manipulative and addictive design practices (read our position on the DFA).
It speaks volume that the Kids Act has not gone through a full impact assessment process, which would typically require a systemic check of alternative policy options and stakeholder consultations. Looking forward, we call on the EU lawmakers to pull the teeth of the most harmful suggestions and to make sure that the new measures don’t erode the fundamental rights of all users.
Spinnerette 1/7 Figure Kickstarter [Comics Archive - Spinnyverse]
The post Spinnerette 1/7 Figure Kickstarter appeared first on Spinnyverse.
The Post-training Process OpenAI Used for ChatGPT [Radar]
This is the third post in a four-part series about post-training. If you missed them, read part 1 and part 2. The final post, on implementing your own pipeline, will be coming October 7.
Now that you understand the gist of reinforcement learning and supervised fine-tuning, it’s time to explore what post-training has actually accomplished in the frontier models you know and love.
Remember our prompt “Why do people like golden retrievers?” GPT-3 would often answer nonsensically. But that all changed in November 2022, with the launch of ChatGPT. Now “Why do people like golden retrievers?” actually returned a reasonable response like “Because they are affectionate, patient, and make excellent family pets” no matter who was typing (with no weird formatting tricks to consider). Anyone who could send a text message could get a response back on any topic.
I’ll cover some of those behavior changes below, then take you through ChatGPT’s training pipeline as described in OpenAI’s InstructGPT paper.
The most visible impact of post-training is models that can chat with you and hold a relatively long conversation. This sounds simple, but it’s not.
Being conversational means more than responding to a question with an answer. The model needs to recognize when a question is ambiguous and ask for clarification or make the right assumptions in a quick response. It should adjust its tone and detail level to the context, for example being brief for a quick factual question, but thorough for a learning-oriented one. The model should be coherent across multiturn conversations without losing the thread. It also needs to handle messy real-world inputs: You attach a giant PDF and ask it to find one specific clause, and it should either find it or tell you it can’t, not hallucinate an answer.
Post-training is also the primary mechanism for making models safe. Safety in this context means a few things:
However, you can define safety rules in whatever way you want and teach the model to abide by them, within the limits of what your reward signals can capture. If you think cats are unsafe, because you’re a dog person, you can teach the model that in post-training—as long as you can properly encode that into a reward signal.
Safety is often in tension with helpfulness. On one extreme, a model that’s too conservative will refuse reasonable requests, something that has frustrated many users. On the other extreme, a model that’s too permissive will comply with harmful ones. Navigating this trade-off is difficult. Ultimately, it comes down to determining where to draw the line, which is (as of today) a human decision within labs. Post-training is the tool to implement wherever the line is drawn.
Tool use is one of the most practically important capabilities enabled by post-training. Tools include search engines, APIs, calculators, databases, and code interpreters. Being able to hit a search engine alone allows the model to not hallucinate, given its own knowledge cutoff. Tools are extremely useful ways for models to interact with the world, and are fundamental components in building agents.
Tool use is a set of new behaviors. The model needs to recognize when a user’s request would benefit from an external tool. It needs to know which tools are available to it, and not hallucinate a tool. It needs to formulate a correct API call with the right parameters. It needs to interpret the results that come back and incorporate them into a natural language response. It needs to do all of this seamlessly, without the user needing to know the details of the underlying tool.
This is taught almost entirely through SFT, at least initially. The training data includes many examples of conversations where the model correctly decides to invoke a tool that it has access to, constructs the right call, and processes the result. RL can further improve tool use by rewarding the model for correct tool invocations and penalizing unnecessary or incorrect ones.
As an example of tool use, let’s say you’re building a veterinary appointment scheduling assistant. A user asks: “My golden retriever has been limping since yesterday. Can I see Dr. Patel this afternoon?” A pretrained model might generate plausible but fictional appointment times. A post-trained model with tool use instead calls the clinic’s scheduling API, checks Dr. Patel’s availability, and responds: “Dr. Patel has an opening at 3:15pm today. I’ve tentatively held it for you. Should I confirm?” The model needed to decide if the user’s intent was urgent, select the right tool, construct the API call with the right veterinarian and time constraints, and present the result conversationally.
Tool use has expanded through the Model Context Protocol (MCP), a lightweight standard for connecting models to external services like Gmail, GitHub, or a company’s internal databases. Rather than building custom integrations for each tool, MCP provides a standard interface that any API can plug into, and different frontier models have now included learning MCP in their post-training recipes. Agentic frameworks take this further by allowing models to chain multiple tool calls together to accomplish common multistep tasks more easily.
Reasoning models, or models that are trained to “think” before they answer, are an exciting result of post-training. Rather than producing an immediate response, these models generate an internal chain of thought, working through the problem step-by-step, before arriving at a final answer. As a result, their answers are more often correct than nonreasoning models that might guess at an answer.
This capability has an interesting relationship with pretraining and post-training. The raw ability to reason is latent in pretrained models; they’ve been trained on text that includes mathematical proofs, logical arguments, scientific analyses, and code with comments explaining the logic. But pretrained models don’t default to reasoning. They default to pattern-matching, which often produces plausible-looking but incorrect answers.
Reasoning models dramatically outperform standard models on tasks that require multistep logic: mathematical problem-solving, complex coding, scientific analysis, and planning. The improvements are not incremental. On the 2024 AIME exam, GPT-4o was only able to get 12% of problems correct on average. OpenAI’s o1 reasoning model solved 74% off the bat, with a single attempt. With 1,000 attempts and a learned scoring function to rerank the attempts, it reached 93%, a result placing it among the top 500 students who took the AIME math exam in the US.
More capable reasoning requires more compute, both during training and at inference time. Scaling laws meet post-training. Models that have learned to spend more inference (test-time) compute on reasoning tend to reach better answers and therefore exhibit higher intelligence. For some frontier reasoning models, the RL post-training phase uses as much compute as the entire pretraining phase.
The cost is not only in post-training compute but also in inference (test-time) tokens and latency. Reasoning takes up a lot of tokens and can result in a longer time to get a response back to the user. But the type of request matters. For a quick factual question, you don’t need reasoning. For a complex technical problem, the extra latency is well worth it. This is something that model providers can modulate during post-training.
As I mentioned above, the first post-training pipeline that captured global attention was ChatGPT’s, and it drew on the pipeline described in the InstructGPT paper. While modern systems use more advanced approaches today, this classic pipeline remains the conceptual foundation for nearly all alignment methods.
The pipeline has three stages, each building on the previous one:
The first stage is straightforward and teaches the model to follow instructions and behave like an assistant.
OpenAI contracted ~40 human labelers to label their data, and they were careful to filter for people who were good at identifying harmful outputs. The labelers had to write ideal responses to prompts. But what’s interesting is that the prompts came from two sources: (1) prompts submitted by real users through the OpenAI API and (2) prompts that labelers wrote themselves. The users had to write prompts too, because these were the days before ChatGPT. There weren’t that many real users with instruction-like prompts through the API to collect.
The prompts were diverse and mostly in English. There’s also an extensive data cleaning pipeline to remove duplicates and remove sensitive PII (personally identifiable information). Importantly, they split the training, validation, and test sets by human labeler. This is to avoid data leakage that could happen within a single user’s data between training and validation/testing.
The resulting SFT dataset had ~13,000 prompts, all with human-labeled responses. The base model was GPT-3 at the time, a pretrained model without any post-training. Using SFT, they trained GPT-3 for 16 epochs, which was effective for the final RLHF model. This was interesting, because for the SFT stage alone, the model overfit after just 1 epoch, but ultimately SFT was an intermediate stage so they picked the best checkpoint for the final RLHF model. They also mixed in 10% pretraining data during this phase, because it would help the next RL phase.
At this point, this SFT model could already be pretty useful: It could have a conversation and follow instructions, which is leaps and bounds beyond the pretrained GPT-3 checkpoint.
This next stage is training the reward model. The reward model needs to grade millions of responses during RL training. In the original method, OpenAI’s team mainly trained the reward model on responses from the SFT model. However, as the policy model is trained in the RL loop and generates new, and likely better, responses from its evolving checkpoints, the reward model needs to stay robust. As a result, they also continually updated the reward model using responses from new RL checkpoints over time.
To train the reward model in InstructGPT’s RLHF pipeline, OpenAI needed pairwise comparisons of two model responses from one prompt, and a label for which one is better. For example, given “What’s 2+2?” and the responses are “4” and “Yes,” the label should say “4” is better than “Yes.” Note again that these are responses from the SFT model (and later, the RL-ed models during the RL training loop), not the pretrained base model. So labeling can only happen after you’ve SFT-ed your model. If you need to retrain that model, you likely need to relabel to make sure the reward model is trained on the right distribution of data pairs.
The reward model was small at 6B parameters, for both efficiency and stability, and included a head that outputted a scalar reward. They had tried multiple sizes, but found this was more stable than using the original 175B main model. It was also more compute efficient, as the reward model would take up extra compute, for both inference and training, on top of training the main model itself. More recently, reward models have become a lot larger, but note that they don’t have to be the same model or same size model as the main model.
To train the model, the loss was a cross-entropy loss that represented the log odds that someone would prefer one option over the other, in the pairwise comparison. This was done by taking the difference between the rewards of the preferred and unpreferred options. So in the example “What’s 2+2?,” if the reward model correctly assigns “4” a high reward and “Yes” a small reward, then the difference would be high and positive, and the loss would be small. However, if the reward model were to incorrectly assign “Yes” a higher reward than “4,” the difference would be high and negative, and the loss would be huge—discouraging it from outputting this result again.
One of the big challenges in training the reward model was overfitting, and OpenAI found that training for only 1 epoch would help prevent that.
The simplest way to get preference pairs is to generate two responses per prompt and have a labeler tell you which one was better. To make more efficient use of each prompt, instead the model would generate not 2 but 4–9 different responses per prompt that human labelers would rank from best to worst.
Rankings can be transformed into pairwise comparisons, so it was an efficient way to collect those preference pairs. A ranking of N responses yields N-choose-2 pairs. For example, a ranking of 4 responses results in 6 pairs, a ranking of 9 results in 36 pairs. That means with 33K prompts and 4–9 responses ranked per prompt, there would be 200K–1.2M pairwise comparisons used to train a separate reward model. That’s a lot of data, from relatively efficient data labeling.
This is a relatively efficient use of human annotations. Just compare it to SFT. It’s easier, cheaper, faster, and more reliable (higher agreement between people) than writing good responses from scratch, so this stage of human labeling wasn’t as tedious as in SFT.
However, using the pairs from rankings wasn’t straightforward in training. The reward model would overfit if they mixed the pairs randomly, even in just 1 epoch, because the pairs for a single prompt were highly correlated with each other. So instead, they would train all the pairs from the same prompt as one element in a batch, and normalize it. This was also computationally more efficient to run and score all the N responses at once together, e.g., just score 9 times and reuse those calculations in this pass, rather than 36 times for each pair if mixed into the dataset.
A quick note on terminology. This data is often called preference data, because it’s about collecting human preferences. The reward model can also be called a preference model.
At this point, you have an SFT model that can follow instructions, and a reward model that can score responses. The goal of RL is to continue training the SFT model to produce responses that the reward model scores highly. If the reward model is any good, the resulting model will produce responses that humans would prefer.
The RL algorithm used was PPO. As you learned previously about RL terminology, the SFT model is the “policy” that takes actions (generating tokens) in an environment (the conversation). The reward model provides the reward after the policy generates a complete response, and a critic model calculates the expected reward, a baseline estimate that offers a more stable overall reward signal in training.
Here are the critical steps. I’ve covered some of them before and will dive into others in detail later on in this section.
If you just let the model maximize the reward model’s score with no constraints, it finds weird, degenerate outputs that exploit quirks in the reward model to get high scores without actually being good responses. This is called “reward hacking,” and it’s one of the central problems in RLHF.
To address this, OpenAI added a KL divergence penalty between the RL policy and the original SFT model (“reference policy”) in the reward calculation. In AI, KL divergence is a common method of measuring how different two probability distributions are. In this case, it would measure how different the RL policy is from the old policy and penalize being too far from it, essentially telling the model: You can optimize for higher reward, but you can’t drift too far from where you started. If the RL model starts producing outputs that look nothing like what the SFT model would produce, the penalty helps to pull it back by making the reward for those outputs lower.
The total reward for a response becomes the reward model’s score minus the KL divergence from the SFT model, with a coefficient term that weighs how much to care about the KL divergence. If the coefficient is too low, you’re saying that you don’t need to penalize drift from the reference policy, and you’ll get reward hacking. Too high and the model barely changes from the SFT checkpoint.
They also mixed in a significant amount of pretraining data during the RL phase, adding a pretraining loss alongside the RL objective. This was to prevent the model from degrading on general tasks from pretraining, like knowledge recall or coherent long-form creative text, as it optimized for reward. This is sometimes called the “alignment tax,” where you trade-off alignment for general capabilities, a type of “catastrophic forgetting.” This is an active area of research.
So the final RL objective combined three things: (1) maximize the reward model’s score on prompted responses, (2) stay close to the SFT model via the KL penalty, and (3) maintain performance on pretraining data. This means improving on the things humans care about without losing what the model already knew how to do from SFT.
The critic reduces noise and makes training stable enough to make PPO work practically. In practice, OpenAI initialized the critic from the 6B-parameter reward model, since it’s already trained to predict reward and gives the critic a head start as it is further trained in the RL loop.
The RL training was computationally expensive and involved running several models simultaneously: the policy model (the main model being trained), the critic (estimating the reward as a baseline, also being trained), the reward model (grading responses), and a copy of the SFT model (for computing KL divergence).
That’s four models in memory at once. That’s a lot of GPU memory, especially when the policy and SFT models are 175B parameters! In addition to weights, the policy and value models also needed their gradients, optimizer states, and cached activations for backpropagation because they were being trained, which can actually multiply the per-model memory cost by 3-4 times. This is another reason the reward and critic models were kept at 6B.
PPO also requires generating fresh rollouts during training, which is much slower than SFT where you already have all the data upfront. Each PPO training step also requires grading each rollout with the reward model, computing advantages with the critic, and updating both the policy and the critic. All these moving parts make the system harder to tune and debug compared to SFT, and harder to parallelize than pretraining.
Hyperparameters like learning rate, the KL penalty coefficient term, the number of rollouts per batch, and the clipping ratio all matter and interact with each other. The whole system depends on the quality and representativeness of your human annotations. Many RL training runs fail or produce degenerate results.
Getting all this right takes significant engineering effort and experience, but the first step is deeply understanding the pieces. Modern methods have addressed many of these issues, but the ideas from InstructGPT remain the foundation of post-training today.
Ultimately, human evaluators compare all the models. People preferred the RLHF model’s outputs over the SFT model’s, and the SFT model’s over base GPT-3’s. Each stage of the pipeline added a large improvement in the model’s response quality.
RLHF was extremely effective. In experiments, human evaluators preferred even a tiny 1.3B parameter RLHF model over the 175B parameter SFT model, most of the time. That’s a model over 100x smaller, trained with RL, beating a much larger model trained only with SFT. This made a strong case that how you train matters as much as how big your model is. Overall, the largest RLHF model still beat the smaller RLHF model.
The RLHF model was also better at following explicit constraints in instructions, less likely to produce harmful outputs, and hallucinated less, though it didn’t eliminate hallucinations as you may remember when you first used ChatGPT (and even now).
One caveat worth noting: The labelers who evaluated the final model were the same population who created the training data. When they tested with held-out labelers who hadn’t been involved in data creation, preferences for the RLHF model were still positive but less dramatic. The model was, to some degree, optimized for the preferences of a specific group of people. This means if you create the data to follow your preferences, the model will optimize for those.
Is cybersecurity part of your job in any way? If so, we’d like to know what you think for a report we’re writing. Just answer these quick 11 questions. Thanks in advance! Take the survey >
The Weakest Leg [The Daily WTF]
On July 10 2026, a life insurance company called TruStage had a "cybersecurity incident". According to an update posted five days later, when they revealed the incident, they are "continuing to work carefully and urgently to understand the facts, and the company will communicate appropriately as its understanding of the situation evolves."
This work, according to their outage page (last updated on September 11th, at the time of this writing), is continuing. Every major business function is listed as "partially available". They have some text explaining that they can't simply turn the system back on, because safety.
They don't know what data was compromised. They don't know when they'll have everything back up. As of mid-August they had gotten so far as setting up a "clean" environment that they could start migrating services to. The only good news is that some of their services are supplied to credit unions for banking, and those were on different systems, so only their insurance packages were compromised. I also suspect the fact that they serve credit unions is the only thing keeping the business afloat, because failing to handle transactions for months seems like a terminal event for most businesses.
Obviously, this also means they're embroiled in an ever growing number of lawsuits from a variety of parties. It also highlights something about how insurance works: it's middlemen all the way down.
TruStage will issue policies, but their connection to the actual policy holder will likely be routed through a number of different partners. Like, for example, Ethos.
Ethos uses "AI" to "democratize" insurance. Feed your data into their AI, and in minutes they'll pair you up with a policy. Which, while using machine learning to do things like assess insurance risk seems like a pretty reasonable idea, in this age of AI hype, one has to wonder how this actually is implemented and how it works in practice.
But Ethos isn't the end of the chain! Other companies live downstream from Ethos, for example, Family First Life. A customer might reach out to FFL to get a policy, FFL reaches out to Ethos (or one of many other partners), and Ethos reaches out to one of its partners (TruStage being one of their largest), and boom: an insurance happens. Like I said, it's middlemen all the way down.
But now, here's the problem: TruStage issued a bunch of policies, and then stopped being able to do business. They stopped being able to do even vital things, like process payments. And you know what happens when payments aren't made on a life insurance policy? It lapses. It goes away. You no longer have insurance. And the agents who sell those policies are often paid a commission based on the value of the first few months of the policy's life (since life insurance is expected to be a long term investment). If the policy lapses, those commissions vanish, companies like Ethos (or downstream partners like FFL) get chargebacks on the value of those failed policies.
This makes some people, like FFL's President, Shawn Meaike, very unhappy.
What we have here is a pretty egregious failure of cybersecurity and disaster recovery on the part of TruStage. It's an embarrassing and potentially terminal event for them. It's awful for the customers who bought insurance policies to give themselves peace of mind, only to discover their policies lapse because TruStage can't take their money. It's creating mild chaos in the entire industry. That's all interesting, but not why I wanted to write an article about this. I wanted to write about the incredible cringe.
In this clip from an insurance industry conference, Meaike brings up all of their partners for a "carrier panel". He then proceeds to line them up from stage right to stage left, ranking them as "weakest" to "strongest". Ethos, who sells TruStage policies, is labeled as the weakest.
"You have the weakest leg," he says, pointing at the reps from Ethos, to laughter from the audience, and then indicates the other side of the line represents "the strongest leg." Meaike hands the microphone to an Ethos employee, Dylan Cummings, "We'll start with you."
"I want to start out by thanking everyone," Cummings says.
Meaike cuts him off. "Hey, hey, hey, hey. I'm gonna help you. Why don't you start by saying you're sorry."
The crowd yells out, "Yes!" and applauds this idea.
"Say 'We have a carrier that's shut down'," Meakie continues, "'and I'm mother-freaking sorry.'"
Yes, he said "mother-freaking", on stage.
So let's recap. An insurance company gets pwned so hard they can't run operations for months. People's policies lapse, simply because they can't give their money to the insurance company. Which 100% sucks for those customers, though at least with life insurance we expect very few of them are missing their payout- hopefully! This chain cascades through the network of partners, until it culminates in the president of one company publicly humiliating the senior account manager at a middleman company, during an industry conference.
Nobody comes off looking particularly good here, obviously. Meakie is a jerk. TruStage is institutionally incompetent. Ethos is in a bit of a rock-and-a-hard-place situation, and Cummings is trying to do his best to tap dance his way out of oblivion, but it seems like the AI driven insurance startup just isn't a good partner even before their main issuer died.
All in all, it feels like a Tim Robinson sketch, or perhaps a Nathan Fielder bit. We're one step away from Meakie calling Cummings a "Wizard of Loneliness."
Pluralistic: The Claude Delusion (21 Sep 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

One of the less remarked-upon aspects of becoming an atheist is how it changes the way you see a sunset. If you believe in an almighty, omnipresent God, then sunsets are one of God's intentional creations, which means that the beautiful colors refracting through the darkling sky were chosen to produce that effect.
To gaze upon a sunset with religious faith is to encounter the intentional act of another mind. To gaze upon that same sunset without faith is to look upon something striking, beautiful, and yet empty; not empty of wonder or beauty, but empty of purpose. No one hung that sun in the sky, no one chose its colors as it sank. It may still be beautiful, but that's a fundamentally different kind of beauty.
There's a sunset that sits halfway between a religious sunset and an atheist sunset: an artist's depiction of a sunset. This represents the choices of another person, another mind, and at the very least, that mind was talking to itself, trying to take something from inside the mind and put it outside of the mind.
Very often, the mind that directed the capturing of the sunset wanted to say something to other people, perhaps even you (think of a loved one sending you a cameraphone picture of a sunset). That painting or photo may not be divine, but it is certainly intentional. To look upon a painting of a sunset – or even a photo of a sunset – is to look upon something someone chose to make. You don't slip and accidentally create a sunset painting. Sunset paintings aren't accidents. The sunset painting has something to say.
Figuring out intentions is our minds' reflexive preoccupation. It's what keeps us from dying in traffic, it's what lets us win at poker. It's the key to love and parenting, to effective management and "managing up." It's why we get mad at people, and why we forgive them. It's why our hearts race in sympathy with the characters in a book or on a screen. It's the automatic and irresistible starting point for every encounter with a poem, a song, a book or a sculpture. It's the most fundamental difference between a sculpture of a tree and a tree: the tree grew all on its own, while the sculpture was made, on purpose, by another person with another mind.
This reflex to attribute intention explains why AI is so controversial, so compelling, and so eerie. Mark Fisher defines eeriness as "when there is something present where there should be nothing, or if there is nothing present when there should be something":
https://www.programmablemutter.com/p/large-language-models-are-uncanny
To look upon an AI-generated text or image is to look upon a thing that was extruded, not chosen. You can slip and prompt an AI-generated image of a sunset, and it will embody no intentionality on anyone's part.
This isn't something we have any experience with. When we see a painting, we reflexively interpret it as having a painter. When we read a book, we reflexively impute auctorial intent to its words. When we converse, we reflexively form a theory about the mind directing the other half of the conversation.
But we can't do this with AI. Anyone who understands how the theory-free statistical inference systems we call "AI" (at this time) work will understand that they are systems that cannot form intent, that have nothing to form intent with:
https://pluralistic.net/2026/09/18/surprise/#wow-signal
Even so, it's hard (or perhaps impossible) to avoid the reflex to impute intention to things that seem to have intenders. Think of your autonomic, unavoidable emotional response to the fictional characters you encounter in literature. Feeling sorrow or joy for imaginary people is weird. They aren't real, and you know they aren't real, and yet you may find yourself moved to tears by their plight.
That aesthetic experience of literature arises from a consensual hack to our reflex to impute human minds to things that are typically the product of human intention. When we experience another person's will – their words or deeds – we try to figure out who they are, and how they feel, and why they act the way they do:
https://genius.com/David-byrne-and-ghost-train-orchestra-she-explains-things-to-me-lyrics
We do this even when we are confronted with just the evidence of others' words or deeds, as when a friend describes an encounter with a stranger. For your reflexive, intention-seeking mind, the author who describes the deeds of imaginary people is an irresistible signal to fire up the old empathy machine and start trying to put yourself in the skins of the people of the tale:
https://locusmag.com/feature/cory-doctorow-stories-are-a-fuggly-hack/
To "converse" with an AI is to carry on a dialog with a fictional character, who is no more real than the imaginary people in a novel. Indeed, the chatbot is less real than the character, because the character is the product of another mind, while the chatbot's words are the product of complex mathematical operations conducted over a massive database of all the words humans have uttered, arranged by their frequency in relation to one another. When that math makes something beautiful or striking, it's like a sunset: no matter how striking it is, it's empty. No one chose those colors. No one chose those words.
In other words, when we interact with an AI, we hallucinate the person on the other side of the interaction. Those hallucinations are far more common and far more consequential than any AI-generated "hallucinations" (these are more properly called "errors" or "defects").
Fortunately, for most of us, the intensity of these hallucinations fades over time, and as that intensity drops off, the character of those hallucinations changes, too. Just as most of us find it easy to set aside the emotions evoked by the plight of imaginary literary figures as having less salience and "realness" than the emotions we feel over the plight of real people we know, for most of us, the experience of AI-generated material has dimmed through repetition.
My first encounters with AI-generated text and images invoked wonder, arising from the tension between the part of my mind that knew this was the product of mathematical operations, and the part of my mind that insisted that a painting must have a painter, a paragraph must have a writer, and a conversation must have an interlocutor. Looking back on the wonder I felt then, I realize that it was largely driven by how good the output was relative to my expectations about how good mathematically-derived sentences and images could be.
The novelty of that experience drove me to grade the machine's output on a curve: "The wonder is not that the dancing bear dances well, it is that the bear dances at all." But with repetition, the stimulus has regressed to the mean. These outputs have an unconvincing lack of texture. The smoothness of AI-generated prose and media makes it unbearably banal. It's hack.
To the extent that AI still surprises me, the surprise is about how much smoothness there is in our real world. The fact that AI can use statistical prediction to answer questions or carry on conversations tells us something important about how regular our real world is. It doesn't prove that statistical prediction is the same thing as understanding:
https://pluralistic.net/2026/09/18/surprise/#wow-signal
Of course, the more you know about a subject, the less convincing the AI's responses are. To be an expert is to know about the grain of your subject: chefs can taste the pinch of spice, painters notice brushstrokes, dancers can decompose the choreography into individual motions.
The other day, someone marveled to me at the quality of the editorial feedback he gets from AI for his prose, saying that a "Tell me what I'm missing" prompt generates suggestions "that would excite a university professor who'd assigned an essay." Speaking as someone who's taught a lot of writers and given a lot of feedback, I think that guy is dramatically overestimating how excited a university professor would be to see the AI-generated feedback he's getting on his essay.
The fact is that non-expert writers mostly make the same kinds of mistakes in their writing, and most writing instruction consists of offering repetitive, near-identical counsel to writers who are making the same kinds of starter mistakes that their peers past, present and future have made, are making and will make.
Mastering the basics of good writing is a matter of practice and feedback, and most of that feedback is rote. What makes a great writing teacher – and what helps to produce great writers – is spotting the non-standard aspects of a student's work that can be developed into a unique and powerful voice. Anyone can help you with the smooth parts of becoming a better writer. Only a good teacher can help you find and refine the texture that will make you a unique writer.
That texture is especially hard to find in beginner work, because beginner work is mostly full of the completely ordinary errors of inexperience, errors that AI can reliably avoid when it extrudes text. But AI-generated prose doesn't have any of those trace-elements of uniqueness, nor can it spot them. These traces are found so many digits after the decimal-place that the AI always rounds them off before it starts doing math.
The more we encounter AIs that have smoothed away the kind of texture we're attuned to, the less we're inclined to hallucinate intentionality, and the less eerie they become. Most of us are slowly but surely becoming AI atheists, and the sunsets are seeming more like the non-intending product of physics than the deliberate products of minds.
There are two great barriers to this AI atheism. First: for most of us, the inability to understand what kinds of intentionality go into which parts of unfamiliar activities makes it easy to assume that any time we see the task performed in the world, it must be intentional, and therefore it must have an intender. In other words: most of us don't hang out at hacker cons, so we have a hard time wrapping our heads around the idea of hacking without hackers:
https://pluralistic.net/2026/09/12/god-in-the-box/#llms-are-fake
But there's a second hurdle that makes it hard for a small but important subset of humanity to understand that chatbots aren't people: the billionaires to whom nearly everyone isn't a real person. These solipsists see chatbots as being equivalent (or even superior) to humans, because they don't think most humans are fully people, either:
https://pluralistic.net/2026/05/13/vibe-governance/#k-hole
For nearly all our species' history, things that seemed to require intent always had an intender. In many times and places (and even now, for many people), it's natural and beneficial to operate as though the natural world has some form of personhood and intention and is therefore worthy of moral consideration. The "rights for nature" movement has made great strides by extending personhood to animals and ecosystems.
But ascribing personhood to chatbots is nothing like ascribing personhood to nature. Indeed, it's fundamentally incompatible with "rights for nature." Think of the abomination that is "corporate personhood": by extending personhood to this human construct, we have made a world where artificial lifeforms – limited liability corporations – can destroy nature and drive animals to extinction. If we extend personhood to these climate-shredding, water-chugging AI models, their personhood will demand the sacrifice of animals, the natural world, and our own wellbeing:
https://pluralistic.net/2026/04/15/artificial-lifeforms/#moral-consideration
Chatbots are marvels of mathematics, and that is enough. They don't need to be people. Mistaking them for people (or even just treating them like people) makes it impossible for us to separate the useful things they can do from the waste, ugliness and wrongness they are so prone to exhausting into the world.
I think it's impossible to build a chatbot using the techniques we're presently calling "AI" that doesn't "hallucinate." However, it's both possible and necessary for us to stop hallucinating about AI.

13 theses on agentic AI and regulation https://backofmind.substack.com/p/13-theses-on-agentic-ai-and-regulation
The Business-to-Industry Index and the Geography of Global Capitalism https://economicsfromthetopdown.com/2026/09/19/the-business-to-industry-index-and-the-geography-of-global-capitalism/
Please Agree to These Terms & Conditions for Your Slider https://blog.dmxrob.net/please-agree-to-these-terms-conditions-for-your-slider/
#25yrsago 9/11 knocks sex off the top of the search charts for the first time ever https://web.archive.org/web/20011019190617/http://www.reuters.com/news_article.jhtml
#25yrsago Post-9/11 flag shortage sparks wave of flag-thefts https://web.archive.org/web/20011024162814/http://www.suntimes.com/output/brown/cst-nws-brown18.html
#25yrsago Pilots' preflight announcement includes exhortation to tackle suspected terorists https://web.archive.org/web/20010919081055/http://www.washtimes.com/commentary/20010919-6357240.htm
#25yrsago Larry Ellison: 9/11 means everyone should have a secret government dossier (on an Oracle server) https://web.archive.org/web/20010924045158/https://www.siliconvalley.com/docs/news/svfront/ellsn092301.htm
#20yrsago Rotary phone cost woman $2,000 over 40 years https://web.archive.org/web/20080526111157/http://www.usatoday.com/news/offbeat/2006-09-14-phone_x.htm
#20yrsago French DRM activists surrender to police https://web.archive.org/web/20070110181344/http://stopdrm.info/index.php?2006/09/20/110-compte-rendu-de-l-operation-des-interoperabilisateurs-volontaires
#20yrsago Zimbabwe’s Internet cut off due to lack of foreign currency https://web.archive.org/web/20070218185156/http://news.zdnet.com/2100-9588_22-6117553.html
#20yrsago An “expert Wikipedia” won’t work https://web.archive.org/web/20061023150433/http://many.corante.com/archives/2006/09/18/larry_sanger_citizendium_and_the_problem_of_expertise.php
#20yrsago RIAA threat-mail parody from McSweeney’s https://web.archive.org/web/20060927155553/https://www.mcsweeneys.net/2006/9/20lloyd.html
#15yrsago Italian MPs propose Internet disconnection law: one copyright accusation from anyone and you lose your Internet connection https://web.archive.org/web/20110924143709/http://www.twitlonger.com/show/d62gmb
#15yrsago Trying to understand riots isn’t the same as excusing riots https://web.archive.org/web/20110924030515/https://www.newscientist.com/article/mg21128306.100-trying-to-understand-the-english-riots-is-not-a-crime.html
#15yrsago ATM skimmer gang invested proceeds in 3D printer to make better ATM skimmers https://krebsonsecurity.com/2011/09/gang-used-3d-printers-for-atm-skimmers/
#15yrsago Facehugger-inspired leather mask https://bobbasset.com/archives/745/
#15yrsago Westerfeld’s Goliath: suitably thrilling conclusion to cracking steampunk WWI YA trilogy https://memex.craphound.com/2011/09/20/westerfelds-goliath-suitably-thrilling-conclusion-to-cracking-steampunk-wwi-ya-trilogy/
#15yrsago Report from 1978’s “Second West Coast Computer Faire” https://web.archive.org/web/20110930035442/https://blog.modernmechanix.com/2011/09/20/the-second-west-coast-computer-faire/
#15yrsago UK patent office seeks public’s help with prior art that invalidates patent applications https://www.peertopatent.org.uk/
#15yrsago 3D printed AR-15 parts challenge firearm regulation https://web.archive.org/web/20110922005752/http://www.thingiverse.com/thing:11636
#15yrsago Minor diplomatic spat when US customs queries Aussie foreign minister’s Vegemite https://www.theguardian.com/world/2011/sep/19/hands-off-vegemite-kevin-rudd
#15yrsago Toronto Convention Centre charges attendees $150/day to use WiFi https://blogcampaigning.com/2011/09/most-expensive-wi-fi-ever/
#15yrsago Tracking down the stories behind a trove of 1920s report cards from a NYC girls’ vocational school https://www.slate.com/articles/life/permanent_record/features/2011/permanent_record/how_i_found_the_report_cards_and_how_they_changed_my_life.html
#15yrsago Movie-industry self-piracy proves that IP addresses aren’t people, invalidates copyright enforcement schemes https://torrentfreak.com/movie-institute-feels-pain-of-ip-address-only-piracy-evidence-110922/
#15yrsago Cost of raising middle-income child in USA increases by 40% in ten years https://web.archive.org/web/20110925000225/https://money.cnn.com/2011/09/21/pf/cost_raising_child/index.htm
#10yrsago HTML standardization group calls on W3C to protect security researchers from DRM https://www.eff.org/deeplinks/2016/09/html-standardization-group-calls-w3c-protect-security-researchers-drm
#10yrsago I have found a secret tunnel that runs underneath the phone companies and emerges in paradise https://memex.craphound.com/2016/09/22/i-have-found-a-secret-tunnel-that-runs-underneath-the-phone-companies-and-emerges-in-paradise/
#10yrsago Gene Luen Yang wins a Macarthur “genius” prize! https://web.archive.org/web/20160922142951/https://www.macfound.org/fellows/class/class-2016/
#10yrsago China’s elites appear to be exfiltrating billions while on holidays https://web.archive.org/web/20160922125621/http://www.bloomberg.com/news/articles/2016-09-21/suitcases-of-cash-chinese-travel-data-hint-at-capital-outflows
#10yrsago Wells Fargo fired the whistleblowers who reported massive fraud, and that’s a crime https://www.nakedcapitalism.com/2016/09/wells-fargo-fake-accounts-hidden-by-fake-whistleblowing-former-employees-including-hr-officials-allege-systematic-retaliation.html
#10yrsago Phoebe and her unicorn are back in Razzle Dazzle Unicorn! https://memex.craphound.com/2016/09/22/phoebe-and-her-unicorn-are-back-in-razzle-dazzle-unicorn/
#10yrsago Brexit’s proposed racist immigration policy will backfire https://crookedtimber.org/2016/09/19/brexit-and-bigotry/
#10yrsago Done in your name: Survivors of CIA’s torture-decade describe their ordeals https://www.aljazeera.com/features/2016/9/14/the-dark-prisoners-inside-the-cias-torture-programme
#10yrsago HP detonates its timebomb: printers stop accepting third party ink en masse https://www.bbc.com/news/technology-37408173
#10yrsago How America abandoned the only policy that consistently closes the black-white educational gap https://www.propublica.org/article/ferguson-school-segregation
#10yrsago Edgar Allan Poe’s “The Raven” – the pop-up book edition https://memex.craphound.com/2016/09/19/edgar-allan-poes-the-raven-the-pop-up-book-edition/
#10yrsago Sitelock abuses DMCA to censor rival’s criticisms https://torrentfreak.com/web-security-firm-sitelock-uses-dmca-to-censor-critics-160920/
#10yrsago Netzpolitik publishes more damning, leaked German surveillance reports, despite previous treason prosecution https://www.techdirt.com/2016/09/20/leaked-oversight-report-shows-illegal-surveillance-massive-constitutional-violations-germanys-intelligence-service/
#10yrsago Web’s inventor and MIT prof explain ICANN to Ted Cruz, using small words https://web.archive.org/web/20160921203119/https://www.washingtonpost.com/news/powerpost/wp/2016/09/20/ted-cruz-is-wrong-about-a-key-internet-agencys-ability-to-censor-free-speech/
#10yrsago Execs with long coporate crime rapsheets stand up for Apple’s tax evasion and “the rule of law” https://web.archive.org/web/20160921002619/https://theintercept.com/2016/09/20/throng-of-corporate-criminals-demands-rule-of-law-in-apple-eu-tax-case/
#10yrsago DIY Epipen: the $30 Epipencil https://fourthievesvinegar.org/2022/07/12/introducing-the-epipencil/
#5yrsago The Framework is the most exciting laptop I've ever used https://pluralistic.net/2021/09/21/monica-byrne/#think-different
#5yrsago Ignore career advice from established writers https://pluralistic.net/2021/09/21/monica-byrne/#pay-it-forward
#5yrsago The Actual Star https://pluralistic.net/2021/09/21/monica-byrne/#like-its-3012
#5yrsago Facebook algorithm boosts pro-Facebook news https://pluralistic.net/2021/09/22/kropotkin-graeber/#zuckerveganism
#5yrsago Mutual Aid and David Graeber https://pluralistic.net/2021/09/22/kropotkin-graeber/#against-just-so
#5yrsago Gig workers around the globe https://pluralistic.net/2021/09/22/kropotkin-graeber/#an-injury-to-one
#1yrago It's still censorship (even if it doesn't violate the First Amendment) https://pluralistic.net/2025/09/22/one-throat-to-choke/#communicable-disease

Edmonton: Elbows Up (Edmonton Public Library), Sep 28
https://www.epl.ca/blogs/post/elbows-up-with-cory-doctorow/
Boston: The Post-American Internet: Possibilities for a new
internet created by an American Hermit Kingdom (MIT Media Lab), Sep
30
https://www.media.mit.edu/events/the-post-american-internet-possibilities-for-a-new-internet-created-by-an-american-hermit-kingdom/
Boston: Rethinking Our Relationship with AI, Sep 30 (Emtech)
https://event.technologyreview.com/emtech-future-2026/detailed-agenda
Boston: The Paradox of Enshittification and Reverse Centaurs
(Harvard Berkman Klein), Sep 30
https://cyber.harvard.edu/events/running-harder-falling-faster-paradox-enshittification-and-reverse-centaurs
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
Hudson, OH: Hudson Library, Oct 7
https://engagedpatrons.org/EventsExtended.cfm?SiteID=3850&EventID=596952&PK=
Calgary: Wordfest, Oct 8
https://wordfest.com/2026/show/wordfest-presents-cory-doctorow-2026/
Winnipeg: McNally Robinson, Oct 9
https://www.mcnallyrobinson.com/event-18991/An-Evening-with-Cory-Doctorow
Paris: Slow Tech Summit, Oct 15
https://slowtechsummit.com/
Vancouver: Read, Resist, Repair, Rejoice (Vancouver Writers
Festival), Oct 19
https://writersfest.bc.ca/festival-event-2026/01
Victoria: Munro's Books, Oct 20
https://www.munrobooks.com/events/6113620261020
Vancouver: Life After AI (Vancouver Writers Festival), Oct
22
https://writersfest.bc.ca/festival-event-2026/46
Ottawa: Life After AI (Ottawa Writers Festival), Oct 24
https://writersfestival.org/event/life-after-ai
Kilkenny (Kilkenomics), Nov 6-8
https://kilkenomics.com/
Vancouver: Enshittification (Sid Williams Theatre Society), Nov
10
https://www.sidwilliamstheatre.com/events/cory-doctorow-talks-enshittification/
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
Montreal: World Science Fiction Convention, Sep 2-6
https://montreal2027.ca/en
Are 'AI Apocalypse' Warnings Just Marketing? (What's Left)
https://www.youtube.com/watch?v=IXd9HwIE5bo
The Real AI Threat Isn’t What You’ve Been Told (The
Tea with Myriam François)
https://www.youtube.com/watch?v=Vc8It00fRsA
Fascists may come after the AI bubble bursts (You&AI)
https://www.youtube.com/watch?v=J2WN64aQeYQ
What Would a Normal Person Do (Trashfuture)
https://www.patreon.com/trashfuture/posts/what-would-do-169247456
"Canny Valley": A limited edition collection of the collages I create for Pluralistic, self-published, September 2025 https://pluralistic.net/2025/09/04/illustrious/#chairman-bruce
"Enshittification: Why Everything Suddenly Got Worse and What to
Do About It," Farrar, Straus, Giroux, October 7 2025
https://us.macmillan.com/books/9780374619329/enshittification/
"Picks and Shovels": a sequel to "Red Team Blues," about the heroic era of the PC, Tor Books (US), Head of Zeus (UK), February 2025 (https://us.macmillan.com/books/9781250865908/picksandshovels).
"The Bezzle": a sequel to "Red Team Blues," about prison-tech and other grifts, Tor Books (US), Head of Zeus (UK), February 2024 (thebezzle.org).
"The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org).
"The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
"Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com.
"Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
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. Fourth draft completed. Submitted to editor.
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.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Bluesky (no ads, possible tracking and data-collection):
https://bsky.app/profile/doctorow.pluralistic.net
Medium (no ads, paywalled):
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
Grrl Power #1497 – Foot muse [Grrl Power]
Oh my god.* Who could it be? You guys will never guess. What a mystery.
I was going to write a big long post about shoes vs. not shoes, but as I was thinking about it, I realized why aliens are so often naked. (Like Grays. Not the sort of media where the aliens are naked for other reasons.) They’ve lived in a post-scarcity society for so long they no longer have need of textiles. Because they don’t have companies that exist solely to be profitable. Once a society hits the “we can just tell the matter replicators what I want, so we don’t need money” stage, I thing there’s going to be a resurgence of hand-crafted stuff. Cause people will need hobbies, but after a few generations of that, people might be all, “maybe there isn’t really a need to even wear shoes, besides these knit ones from space etsy don’t really work that well.” And over a few generations their feet toughen up a little bit, and eventually they’re like, “who even needs shirts or pants? We keep our junk on the inside anyway.”
The way I see it, Wookies are at that last stage before abandoning pockets. That’s why they still wear those pouch bandoliers.
I’m not serious about any of that. I can’t imagine any society, much less a space-faring one, that doesn’t need pockets. Unless they have subdermal matter replicators or something. It’s just such a common trope. But space monsters almost never wear shoes. So I started thinking about what percentage of Grrl-verse space aliens would wear shoes.
*(Becky)
Oh, look who it is in the vote incentive. The NSFW version is finally up at
Patreon. Plus a bonus pic.
I think she would get in trouble for doing this. She’d mess up the… floor of the waterfall? Is that what it’s called? The receiving pool? No, probably not that. Anyway, she’d churn things up and cause a ton of weird erosion.
Since you might be wondering, Niagara Falls is about 165 feet high, so Babezilla obviously doesn’t have to be full sized. I’d say she’s about 175-180 feet tall here?
Double res version will be posted over at Patreon. Feel free to contribute as much as you like.
A book can’t change your life [Seth's Blog]
But you can. Especially if your community is there to help. All help is self-help, multiplied by the expectations, support and compassion of the people around you.
Willpower and self-control are a mystery–we’re influenced far more by our situation, by the culture around us and by everything that’s come before. A mechanistic view of a physical entity shows that we’re turtles all the way down–atoms and electricity, each on a path. Golf balls don’t have self control, they simply follow a trajectory. And yet… each of us apparently has the ability to exercise agency and to work to solve the problems we confront. We talk to others and to ourselves, and shifting those conversations can shift the actions we take.
The best books in the genre help us get to where we hope to go. They turn on a light or help us understand a way of thinking that gets us unstuck.
Tomorrow, The Knot goes to people around the world. It’s aimed directly at the stuck we often find ourselves in. I’m confident that the book itself won’t do much of anything, but combined with conversations and the shifts we can each make, I’m hopeful it will help people get to where they need to go.
That’s a lot to ask from a short book, but it’s already had an impact on thousands of people. Thank you for showing up to make things better. Knowing that better is possible is a great first step.
New Comic: Casuality
Girl Genius for Monday, September 21, 2026 [Girl Genius]
The Girl Genius comic for Monday, September 21, 2026 has been posted.
Breaking Up, p23 [Ctrl+Alt+Del Comic]
The post Breaking Up, p23 appeared first on Ctrl+Alt+Del Comic.
Live Long And Prosper [QC RSS v2]

I'm more of a Murderbot guy myself
War is erasing history [Richard Stallman's Political Notes]
*Ukrainian cathedrals, Gaza’s archives, Iranian squares — modern war is systematically erasing human history [in places which are bombarded].*
Israel's bombardment of Gaza has destroyed many centuries-old buildings.
Trump Admin Directive [Richard Stallman's Political Notes]
A magat proposal would eviscerate the Endangered Species Act by reinterpreting it to cover only intentional killing or damaging of specific, chosen members of an endangered species.
Accidental damage, such as when a ship kills a whale by unexpectedly colliding with it, would not count.
Why would one advocate this? Perhaps it reflects a desire to clean out all those pesky animals and plants that pop up unexpectedly.
Or perhaps they want to kill endangered species because that's would make their political enemies unhappy.
(satire) FBI Moves To Raise Murder Rate [Richard Stallman's Political Notes]
(satire) *FBI Moves To Raise Murder Rate For First Time Since 2023.*
Trump bans several news outlets [Richard Stallman's Political Notes]
The bully has banned some significant news media from the White House for defying his orders about what what they should say.
Equatorial Guinea detention [Richard Stallman's Political Notes]
The bully deported people to tyrannical Equatorial Guinea who had no roots there. That was one injustice, and it led to another: two of them talked to the press about their mistreatment there, and the state tortured them as an example to gag the others.
Equatorial Guinea is so repressive that it is a crime to deport anyone there under any circumstances.
Fascists end times [Richard Stallman's Political Notes]
"End Times Fascism" is the ideology of the billionaires whose plan is to cause the end of time for civilization on Earth in order to extract as much as possible for them to take away with them.
Vincent Bernat: Bot-free self-hosted analytics with GoatCounter on NixOS [Planet Debian]
In 2016, I removed Google Analytics from this blog to avoid being complicit in feeding the biggest machine for harvesting personal data. Instead, I relied on GoAccess to analyze my server logs.1 For the past couple of years, the statistics have made no sense, despite my attempts to filter bots: AI scrapers inflate the number of visitors to around 2,000 per day. Eventually, I settled on GoatCounter, an open-source, privacy-friendly web analytics platform. I replaced the JavaScript client to filter bots more aggressively and added a CSS fallback. To improve reliability, I implemented a local proxy running on each of the five web servers serving this blog. The rest of this post details how these pieces fit together and how I deploy them on NixOS. ❄️
GoatCounter does not collect personal data: instead of storing the reader’s IP address or relying on cookies, it creates a session identifier valid for 8 hours from the user agent and the IP address. Its feature set is modest but sufficient for a blog. If you want to look at the interface, GoatCounter’s author runs a public instance for his site. A hosted version lets you try it before running your own instance. With a single binary and an SQLite database, GoatCounter is one of the lightest self-hosted solutions. Privacy-friendly alternatives, in increasing order of complexity, include Umami, Plausible, and Rybbit.

GoatCounter includes a small JavaScript client—2,189 bytes minified and gzipped. It ships some features I don’t use: a visitor counter, tracking clicks, configurable settings, etc. I replace it with this function to register a hit:
const count = ({ event, title } = {}) => {
const params = new URLSearchParams({
p: event || location.pathname,
t: title || document.title,
r: document.referrer,
q: location.search,
s: document.documentElement.clientWidth,
e: !!event,
rnd: Math.random().toString(36).slice(2, 7),
});
fetch(`/count?${params}`, { keepalive: true }).catch(() => {});
};
To filter bots,2 I go the extra mile by requiring a user interaction—an idea I stole from Bear Blog.
let sendHit = () => (sendHit = () => {}, count());
["touchmove", "mousemove", "keydown", "pointerdown"].forEach((eventName) =>
document.addEventListener(eventName, sendHit, {
once: true,
passive: true,
}),
);
If a reader has disabled JavaScript in their browser, I record
the hit using a CSS image. The :hover pseudo-class
loads it only after an interaction, another trick stolen from Bear Blog.
About 2% of my visitors fit into this bucket.3
<!DOCTYPE html>
<html lang="en" class="nojs">
<head>
<script>
// The JavaScript code for this blog requires ES6
if ("noModule" in HTMLScriptElement.prototype)
document.documentElement.classList.remove("nojs");
</script>
</head>
<body>
<!-- ... -->
<style>
.nojs body:hover {
border-width: 0;
border-image: url('/count?p=/en/blog/2026-kpi-goodhart&t=Building...&r=NoJS&e=false');
}
</style>
</body>
</html>
Where GoAccess reported around 2,000 visitors a day, GoatCounter counts fewer than 200 humans.4 I assume AI scrapers use a low-effort approach: if the content is available without barriers, as on this blog, they don’t spawn a complex mechanized browser that could trigger a page view. Even crawlers running JavaScript, like Googlebot with its headless Chromium, do not interact with the page and never trigger the events I listen to. The interaction-based “proof of humanity” I use is likely to keep working.
Five servers across the world in Europe and in
North America serve the content of this website, but
GoatCounter runs on only one of them. To avoid losing track of
visitors when GoatCounter is down, I run a local proxy listening on
the same /count endpoint. On each server, it stores
the hits in memory with a buffer large enough to survive several
days of downtime. It sends them in batches to the upstream backend
using the /api/v0/count
authenticated endpoint.
I proposed the code for the proxy in pull request #909. GoatCounter’s maintainer declined to maintain so much code for such a niche use case. As a fellow open-source developer, I often hold the same position for my own projects: a one-time contributor effort may translate into a long-term maintainer commitment.
I expose the endpoint for the proxy on the domain of this website to evade ad blockers. This sounds like I don’t respect the reader’s choice, but as GoatCounter is privacy-friendly, I find it acceptable.
location = /count {
access_log off;
proxy_pass http://127.0.0.3:8087/count;
proxy_pass_request_headers off;
proxy_set_header Accept-Language $http_accept_language;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header X-Real-Ip $remote_addr;
}
My web servers run NixOS, a declarative Linux distribution with built-in configuration management. I manage this small fleet with Colmena, a stateless deployment tool for NixOS. My configuration is available on GitHub.
For better isolation, each application runs inside an ephemeral
lightweight container, powered by systemd-nspawn. Each
container runs a stripped-down NixOS instance. A module wraps
NixOS’s containers options to avoid
repeating the same options for each application.5 The containers
share their network namespace with the host: the additional
isolation is not worth the increased complexity. For a smaller
footprint, I also disable a few non-essential services.
{ config, lib, ... }:
let
cfg = config.luffy.containers;
in
{
# User-configurable settings for our custom module
options.luffy.containers = lib.mkOption {
default = { };
description = "Ephemeral containers sharing the host network.";
type = lib.types.attrsOf (lib.types.submodule {
options = {
config = lib.mkOption {
type = lib.types.deferredModule;
default = { };
description = "NixOS configuration of the container.";
};
};
});
};
# Translate our options to NixOS containers
config = {
containers = lib.mapAttrs
(name: container: {
ephemeral = true;
autoStart = true;
privateNetwork = false;
extraFlags = [ "--resolv-conf=replace-host" ];
config = {
imports = [ container.config ];
networking.firewall.enable = false;
system.stateVersion = config.system.stateVersion;
systemd.services = {
console-getty.enable = false;
systemd-logind.enable = false;
systemd-oomd.enable = false;
};
};
})
cfg;
};
}
To configure a GoatCounter instance running in a container and
listening on 127.0.0.4:8088, we import the
module6 and declare the
container in the config.luffy.containers attribute
set:
{ pkgs, config, ... }: {
imports = [ ./modules/container.nix ];
config.luffy.containers.goatcounter = {
config = {
services.goatcounter = {
enable = true;
address = "127.0.0.4";
port = 8088;
proxy = true;
};
};
};
}
As the containers are ephemeral, we need to keep persistent data
in directories on the host. We add a mounts option and
ask NixOS’s containers to expose the configured directories
through the bindMounts option.
{ config, lib, ... }:
let
cfg = config.luffy.containers;
in
{
options.luffy.containers = lib.mkOption {
type = lib.types.attrsOf (lib.types.submodule {
options = {
mounts = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = "Host directories mounted read-write at the same place.";
};
};
});
};
config = {
containers = lib.mapAttrs
(name: container: {
bindMounts =
lib.genAttrs container.mounts (path: { hostPath = path; isReadOnly = false; });
})
cfg;
};
}
For example, to persist GoatCounter’s database in the
/var/db/goatcounter directory on the host, we add the
directory to the mounts option and alter the service
definition to tell GoatCounter where the database is.
{ config, ... }:
let
databaseDirectory = "/var/db/goatcounter";
in {
config.luffy.containers.goatcounter = {
mounts = [ databaseDirectory ];
config = {
services.goatcounter = {
extraArgs = [ "-db=sqlite+${databaseDirectory}/db.sqlite" ];
};
};
};
}
A container may also need some secrets. Colmena can upload secrets without storing
them in the Nix store. We add a keys option to our
containers. It takes an attribute set mapping secret names to the
commands to populate them. Then, the module declares the required
secrets to Colmena in the deployment.keys option,
makes the container depend on the presence of the secrets, and
exposes them to the container.
{ config, lib, ... }:
let
cfg = config.luffy.containers;
in
{
options.luffy.containers = lib.mkOption {
type = lib.types.attrsOf (lib.types.submodule {
options = {
keys = lib.mkOption {
type = lib.types.attrsOf (lib.types.listOf lib.types.str);
default = { };
description = "Secrets, as a command to run locally. They are mounted in /etc.";
};
};
});
};
config = {
# Colmena uploads each secret in `/var/keys` and make them available
# to the group "keys".
deployment.keys = lib.concatMapAttrs
(_: container: lib.mapAttrs
(_: keyCommand: {
inherit keyCommand;
group = "keys";
permissions = "0640";
destDir = "/var/keys";
})
container.keys)
cfg;
# The container can only start if the required secrets are available.
systemd.services = lib.mapAttrs'
(name: container:
let
units = map (key: "${key}-key.service") (lib.attrNames container.keys);
in
lib.nameValuePair "container@${name}" {
requires = units;
after = units;
})
cfg;
# Mount each secret inside the container.
containers = lib.mapAttrs
(name: container: {
bindMounts = lib.mapAttrs'
(key: _: lib.nameValuePair "/etc/${key}" {
hostPath = "/var/keys/${key}";
isReadOnly = true;
})
container.keys;
})
cfg;
};
}
For example, GoatCounter needs credentials to download the GeoIP
database. I provide a local command to fetch the secret from my
password manager and expose it inside the container through the
/etc/goatcounter.env environment file.
{ pkgs, config, ... }:
let
keyCommand = variable: [
"${pkgs.runtimeShell}"
"-c"
"pass show personal/nixops/secrets | grep '^${variable}='"
];
in {
config.luffy.containers.goatcounter = {
keys."goatcounter.env" = keyCommand "GOATCOUNTER_GEODB";
config = {
systemd.services.goatcounter.serviceConfig = {
EnvironmentFile = "/etc/goatcounter.env";
SupplementaryGroups = [ "keys" ];
};
};
};
}
Nixpkgs already packages GoatCounter. By overriding the
src and vendorHash attributes, I reuse
its definition for my custom version with the proxy:
{ goatcounter, fetchFromGitHub }:
goatcounter.overrideAttrs (_: {
src = fetchFromGitHub {
owner = "vincentbernat";
repo = "goatcounter";
rev = "feature/proxy";
hash = "sha256-dJRlQlFu3tjcEgabT1LEbyFrasJlhmYu4L/T7EkoNcY=";
};
vendorHash = "sha256-c9Q5OrbZR+q6pD3SgPPWe8JUzcZco1AVUKGaV61k5DE=";
})
I wrote a NixOS module to
encapsulate GoatCounter: the container definition, the service
definition, and the secrets. The module accepts the following
options: package, serve.enable,
serve.listenAddress, serve.port, and
serve.databaseFile. I already detailed the container
configuration in the previous section. In the end, I chose not to
reuse the GoatCounter module from NixOS: it’s small, so
it’s better to insulate my module from unexpected future
changes.
{ config, pkgs, lib, ... }:
let
cfg = config.luffy.goatcounter;
databaseDirectory = builtins.dirOf cfg.serve.databaseFile;
chown = "${pkgs.coreutils}/bin/chown -R";
in {
config.luffy.containers.goatcounter = {
config.systemd.services.goatcounter = {
description = "GoatCounter Web Analytics";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
EnvironmentFile = "/etc/goatcounter.env";
SupplementaryGroups = [ "keys" ];
DynamicUser = true;
Restart = "always";
ExecStart = lib.escapeShellArgs [
(lib.getExe cfg.package)
"serve"
"-listen=${cfg.serve.listenAddress}:${toString cfg.serve.port}"
"-tls=none"
"-db=sqlite+${cfg.serve.databaseFile}"
"-automigrate"
];
# Transfer database ownership to dynamically assigned user "goatcounter".
ExecStartPre = "+${chown} goatcounter:goatcounter ${databaseDirectory}";
ReadWritePaths = databaseDirectory;
};
};
};
}
The following snippet configures GoatCounter to listen on
127.0.0.4:8088:
{
luffy.goatcounter = {
serve = {
enable = true;
listenAddress = "127.0.0.4";
port = 8088;
};
};
}
The last step is to configure nginx to expose GoatCounter on the
Internet. I disable the /count endpoint as the local
proxy handles it.
{ config, ... }:
let
cfg = config.luffy.goatcounter.serve;
in
{
services.nginx.virtualHosts."goatcounter.luffy.cx" = {
forceSSL = true;
locations = {
"/" = {
proxyPass = "http://${cfg.listenAddress}:${toString cfg.port}";
};
"= /count".extraConfig = ''
return 404;
'';
};
};
}
The same NixOS module
configures the local proxy, with the following options:
proxy.enable, proxy.listenAddress,
proxy.port, and proxy.site—the site
receiving the batches of page views. The local proxy has no
persistent data, but it needs the API key to authenticate to the
main GoatCounter instance: its container uses the keys
option but not the mounts option.
{ config, pkgs, lib, ... }:
let
cfg = config.luffy.goatcounter;
keyCommand = _: [ "…" ];
in
{
config.luffy.containers.goatcounter-proxy = {
keys."goatcounter-proxy.env" = keyCommand "GOATCOUNTER_API_KEY";
config.systemd.services.goatcounter = {
description = "GoatCounter Proxy.";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
EnvironmentFile = "/etc/goatcounter-proxy.env";
SupplementaryGroups = [ "keys" ];
DynamicUser = true;
Restart = "always";
ExecStart = lib.escapeShellArgs [
(lib.getExe cfg.package)
"proxy"
"-site=${cfg.proxy.site}"
"-listen=${cfg.proxy.listenAddress}:${toString cfg.proxy.port}"
"-ratelimit=10/1" # 10 requests per second per IP
];
};
};
};
}
For each server, I enable the local proxy with the following
snippet. The nginx configuration shown earlier exposes the
/count endpoint under the same domain as my blog.
{
luffy.goatcounter = {
proxy = {
enable = true;
site = "goatcounter.luffy.cx";
listenAddress = "127.0.0.3";
port = 8087;
};
};
}
Litestream is a
streaming replication tool for SQLite databases. It compresses the
changes committed to the write-ahead log (WAL) next to the database and sends them
to a remote destination. I encapsulate its configuration in a
NixOS module, which
takes an attribute set databases mapping a name to the
path of the database to back up.
Litestream also runs in a container. I mount the databases to replicate, as well as the secrets to push the backups to a Hetzner storage box using SFTP:
{ config, pkgs, lib, ... }:
let
cfg = config.luffy.litestream;
databaseDirs = lib.unique (map builtins.dirOf (builtins.attrValues cfg.databases));
in
{
config = lib.mkIf (cfg.databases != { }) {
luffy.containers.litestream = {
mounts = databaseDirs;
keys."litestream.env" = [
"${pkgs.runtimeShell}"
"-c"
"pass show personal/nixops/secrets | grep '^SQLITE_BACKUP_'"
];
};
};
}
Inside the container, I configure Litestream through
NixOS’s services.litestream options:
/etc/litestream.env and
exposed through variable expansion.
{ config, pkgs, lib, ... }:
let
cfg = config.luffy.litestream;
in
{
config.luffy.containers.litestream = {
config = {
# The databases belong to dynamically allocated users, whose UID is
# not known here, so Litestream runs as root.
systemd.services.litestream.serviceConfig = {
User = lib.mkForce "root";
Group = lib.mkForce "root";
};
# Use NixOS service.
services.litestream = {
enable = true;
environmentFile = "/etc/litestream.env";
settings = {
auto-recover = true;
snapshot = {
interval = "24h";
retention = "360h";
};
levels = [
{ interval = "5m"; }
{ interval = "30m"; }
{ interval = "3h"; }
];
dbs = lib.mapAttrsToList
(name: path: {
inherit path;
replica = {
type = "sftp";
host = "\${SQLITE_BACKUP_HOST}";
user = "\${SQLITE_BACKUP_USER}";
password = "\${SQLITE_BACKUP_PASSWORD}";
host-key = "\${SQLITE_BACKUP_HOSTKEY}";
path = "${config.networking.hostName}/${name}";
};
})
cfg.databases;
};
};
};
};
}
To back up GoatCounter’s database, I declare a
goatcounter attribute in
luffy.litestream.databases, set to the database
path:
{ config, ... }:
let
cfg = config.luffy.goatcounter.serve;
in
{
luffy.litestream.databases.goatcounter = cfg.databaseFile;
}
On the SFTP server, we can inspect Litestream’s work, with the compacted transactions and the full snapshots:
❯ ls web02/goatcounter/ltx
web02/goatcounter/ltx/0
web02/goatcounter/ltx/1
web02/goatcounter/ltx/2
web02/goatcounter/ltx/3
web02/goatcounter/ltx/9
❯ ls -lh web02/goatcounter/ltx/1
29.1K Sep 5 01:25 0000000000003f2a-0000000000003f2b.ltx
72.4K Sep 5 02:03 0000000000003f2c-0000000000003f2d.ltx
63.3K Sep 5 02:24 0000000000003f2e-0000000000003f2f.ltx
[…]
❯ ls -lh web02/goatcounter/ltx/9
8.5M Sep 5 02:00 0000000000000001-0000000000003f2b.ltx
8.5M Sep 6 02:03 0000000000000001-0000000000004008.ltx
8.6M Sep 7 02:03 0000000000000001-00000000000043a8.ltx
[…]
We can restore the database from the backup with a few shell
commands. First, we stop the containers. Then, we move the damaged
database away, invoke litestream restore from the
right environment, and restart the containers.8
# systemctl stop container@goatcounter container@litestream
# mv /var/db/goatcounter/db.sqlite{,.old}
# ( . /etc/nixos-containers/litestream.conf ;
> set -a ; . /var/keys/litestream.env ; set +a ;
> $SYSTEM_PATH/sw/bin/litestream \
> restore -config $SYSTEM_PATH/etc/litestream.yml /var/db/goatcounter/db.sqlite)
# ls -lh /var/db/goatcounter/db.sqlite
-rw-r--r-- 1 root root 20M Sep 20 07:33 /var/db/goatcounter/db.sqlite
# systemctl start container@goatcounter container@litestream
Ten years after removing Google Analytics, JavaScript-based analytics is back on this blog, but without storing cookies or IP addresses, and without involving a third party. I still write for myself first, notably because it lets me dig into a topic and refer back to it years later. But knowing a bit more about my fellow human readers is a nice bonus, even the ones disabling JavaScript. 🐐
Nginx scrambles IP addresses before storing them, thanks to the
ipscrub
nginx module. ↩
GoatCounter already filters some bots based on the user agent or the IP address. But AI scrapers lie about their user agent and hide behind residential proxies. ↩
Without JavaScript, I cannot send the real referrer. I insert “NoJS” instead. ↩
I am missing the humans reading the RSS feed. I am not comfortable adding a tracking pixel, and bots are likely to fetch it, compromising the statistics. I’ll live without counting these readers. ↩
A NixOS module is a
function receiving the configuration of the whole system as
config and returning three attributes:
imports adds other modules to import,options declares user-configurable settings, each
with a type and a default value, andconfig sets values for options declared by any
module, like containers from NixOS.If a module does not need to declare options, you can return the
config attribute set directly. When a module does not
require any argument, you can define it as an attribute set
instead. ↩
Most of the time, you don’t need an explicit import. NixOS automatically imports the modules shipped with Nixpkgs. For my own modules, some machinery also imports them automatically. ↩
Litestream warns against using the
auto-recover option as it can cause data loss. But
I don’t properly monitor my servers and I prefer
uninterrupted backups to a slight chance of losing the last few
records. ↩
In my case, the process is slow: around 20 minutes for a
20 MiB database. You can test by restoring to a copy with the
-o option, but you still need to stop the Litestream
container. ↩
Frontier news. I have been working on a repo for Frontier pioneers, I started with a few friends, including Brent and Jake who were both on the UserLand team, and have added people very slowly. This is a good time to start showing progress in the project. Still very early for a public release of the software. And I want to do even better than we did with rss.chat a few months ago. And Frontier is a huge thing, all kinds of docs, and archives, and example stuff. It really was 15 years of work done by as many as 5 people.
New verb: string.addressToString. This is how I'm releasing examples.
Chigurgh: "If the rule you followed brought you to this, of what use was the rule?" Frontier must've lived by a good rule. The Atlantis version has tons of bugs but it works. It defied death. I just spent a session updating my nightly backup code, and there were awkard moments. The debugger isn't in yet. The Find command doesn't work. But I have hobbled my way to working code, and I have help debugging with Claude, and it is amazing at that. Frontier didn't know that Claude was going to save its life. More proof that you never know what is just around the corner.
Atlantis screen shot [Scripting News]
Here's a screen shot of a new verb we just added, to facilitate nightly backups. I want to save off a fresh copy of frontier.root every night, as well as my guest databases. This is how that will work.

If you want to get an idea of the kind of user interface you can create using Claude Code, with a driver (me) who has ample experience developing such things, have a look at demo.rss.chat. The UI was entirely done by Claude with me directing, very fine-tuning stuff. Claude can't really grok user interfaces because it is not visual and it is not a user. It might be able to test them, to some extent. Anyone can create an account on the demo server, that's what it's there for. And if something interesting breaks out there, that would be even better. I even tolerate a small amount of spam, and testing is definitely allowed (that's why it's there). ;-)
Technopolitics [Cory Doctorow's craphound.com]

This week on my podcast, I read Technopolitics, my latest Locus Magazine column, about the degree to which AI’s politics are baked in or historically contingent.
These sins are baked into this kind of AI production. There is no way to raise trillions in subsidies that allow AI companies to sell computation at a subsidy that amounts to selling $100 bills for $1 each without also insisting that the end state of all of this is that every job will be swallowed by a chatbot. You can’t raise trillions on this promise without “blitzscaled” data-centers – accompanied by climate-shredding gas turbines. You can’t raise trillions without cramming AI into every part of every person’s digital life, without any safeguards for how vulnerable people might use them to sink deep into dangerous delusion.
These are the “technopolitics” of AI: To make this AI, the people involved had to inflict all these harms upon us. The important questions are: to what extent are these the necessary technopolitics of AI, and; can those technopolitics change?
Langdon Winner’s 1980 article, “Do Artifacts Have Politics?” is the Ur-text for questions like these. In this seminal essay, the rock critic turned tech scholar Winner demands that we move beyond the simple framing of tech having “intended” and “unintended” consequences, and instead insists that politics come baked into some technologies.
50th Anniversaries and When I’ll Hit Them [Whatever]


I read an article in the Irish version of The Times about the band U2 being together for 50 years now, dating back to their first gathering as a group in drummer Larry Mullen’s kitchen, on September 25, 1976. They were literal kids then — all of them still in school — and years away from releasing their first recordings, much less becoming the globe-spanning rock icons they would eventually become, and certainly the biggest rock group Ireland ever produced.
But all things have to start somewhere, and all the principals of U2 seem to agree that September 25, 1976 is where the band begins. Good for U2, by the way; I’m a fan of the band, so I’m glad they’ve stuck it out as a group. It’s rare to have a rock group of any sort keep all the same members all the way through their run. And they all apparently still mostly like each other! Which is even better. Well done, lads.
The band marking 50 years as a band got me thinking of anniversaries of my own, in terms of my own career, and whether I would, as long as I am not hit by bus/eaten by a bear/etc, be likely to hit the 50th anniversary mark with any of them. U2 has gotten to 50, but that’s because they dated their career to their very first gathering, not, say, their first performance, or their first released recordings, or even the debut of their first album, Boy, which happened in October 1980. I feel reasonably sure the band might hit all those marks — October 2030 is only four years and one month away — but they’re not there yet. If the band breaks up between now and October 2030, the album will hit that 50 year mark, but they won’t (don’t worry, even if they did break up now they should collectively be fine; the net worth of the band is in the neighborhood of a billion dollars. That’ll split nicely).
So, looking back at my own anniversaries as a writer and author, when are they and will I make it to a 50th anniversary? Well, I have a few, and like U2, some of them go back to my teenage years. Let’s chart them out, shall we?

Writer: 1984 (42 years ago) — I had done writing prior to this date (back in my day, we had to write essays in school! Without ChatGPT! Uphill both ways in the snow! And we liked it!), but me thinking of myself as a writer dates back to the second half of my freshman year in high school, and a short story I wrote as an assignment for John Hayes’ English Composition class. As I often note, I pulled this story pretty much out of my ass in a panic the night before it was due, and out of three sections of the class, I was the only person to get an “A.” Which led me to the epiphany that writing was a thing I could do (I pulled that story right out of my ass! And got an “A”!), and that it was also a thing I wanted to do (everything else was hard!). Bingo bango bongo, I decided I was a writer, and that writing stuff was what I was going to do with my life. It worked out, thank Christ.
Will I hit the 50th anniversary? I think I am likely to be alive in eight years, and I suspect if I am alive, I will still be writing in some form or another, so, yes, actually, I think I’ll make it to my 50th as a writer.
Journalist: 1987 (39 years ago) — I was an editor of my high school newspaper, and that was nice and all, but personally speaking, I clock my journalism career — the one where I had editors and deadlines and had to actually go out and about to see things and review them — as starting at the University of Chicago and the student newspaper there, The Chicago Maroon. I started working there right away too, basically within my first week of getting to Chicago (I knew going in I wanted to work at the newspaper, so why wait). This was also when I first started being a critic, because it turned out that if you reviewed music they let you keep the album. What a scam! I was all about that.
Will I hit the 50th anniversary? I suspect I’ll be alive for that 50th anniversary, but I’m not actively doing journalism of any sort at the moment. It seems unlikely to me I will be hitting that mark by, say, doing any investigative reporting.
Freelancer: 1990 (36 years ago) — In 1990 I got an internship at the San Diego Tribune, in the features department, and when I came back to University of Chicago for my final undergraduate year, I used those clips to get freelance work from the Chicago Sun-Times and New City Magazine, writing interviews of musicians and doing concert reviews, which was a sweet side hustle at the time. I wasn’t worried about tinnitus or wanting to get to sleep by 10pm, like I would be today.
Will I hit the 50th anniversary? Probably I’ll be alive and maybe still doing the occasional bit of freelance stuff. I mean, technically speaking I’m not anyone’s employee (I’m not even technically an employee of my own company, Scalzi Enterprises; I’m the owner), so any work I’m doing is freelance work. But even if we exclude the novels from this I still write occasional essays, short stories, scripts, etc that I get paid for. I think it’s reasonably likely I’ll still be freelancing at the 50th anniversary.

Employed/Professional Writer: 1991 (35 years ago) — I got paid for writing before 1991 (see above) but I tend to mark my professional career to starting work at the Fresno Bee in September of 1991 — and actually, I officially began this very week of September, so here we are exactly at the 35th anniversary! Well done, me. This was the point at which I wasn’t doing anything else as a gig but writing. I was getting a salary and health insurance and benefits and all that good stuff. It’s also when I started my streak, which continues to this day, of not having to do anything but writing for work. Writing was, and has always been for the full stretch of my career, my day job.
Will I hit the 50th anniversary? I mean, probably; I’ll be 72 at that point and while I don’t know when I might want to retire, if ever, there are plenty of 72-year-olds regularly writing and making some amount of money from it. It’s reasonable to think I might be one of them. I don’t think I’ll have a different “day job” at that point.
Blog writing: 1998 (28 years ago) — I just recently covered this so I don’t need to do it again here, but, yeah, this totally counts. Material originally published here (or on Scalzi.com generally) has made it all over the world in the form of novels, essay collections, and reprints to newspapers, magazines and other professional online sites. It’s legit, y’all.
Will I hit the 50th anniversary? I’ll be 78 when that happens, but I imagine if I’m still around at 78, I’ll be writing here. I’ve been writing here longer than I’ve been writing anywhere else, and also, it’s the easiest place for me to write. I might need to be actively edited by Athena at that point, however. I imagine I might tend to wander.

Author: 2000 (26 years ago) — I think this one will be mildly surprising to folks who think my first book was either Agent to the Stars (which I wrote in 1997 and put on this site in 1999) or Old Man’s War (published by Tor in 2005), but I mark my “Author” era by The Rough Guide to Money Online, a nonfiction book published by Rough Guides. Why that one? Because it was the first book of mine professionally edited, designed and published — all love to Agent to the Stars, but when it was on the site it was literally just one long HTML document and a downloadable .doc file, and both had lots of copyedit errors — and the first one physically printed and distributed to bookstores. I remember we took a special trip to the Reston Towne Center Barnes & Noble just to look at it existing on the shelves there. I didn’t have to sneak it in or anything! Plus I got paid for it ($18,000, if memory serves), which was nice too.
Will I hit the 50th anniversary? Maybe? I’ll be 81 then. We’ll see how it goes. Maybe I’ll publish a memoir that year or something.
Science Fiction Writer: 2001 (25 years ago) — Again, possibly a surprise to folks, who might think of Agent or OMW as the start. But in 2001 I submitted a short story to Strange Horizons magazine (because they looked interesting, and also took electronic submissions, and I couldn’t be bothered to print out and mail a submission anywhere else) and they accepted it, publishing it in October of that year. I’ve just put the actual day on the calendar to remember to write about it on the anniversary, so I’ll keep it short for now. But again: Someone other than me published it! And paid me for it! Which is enough for me to count it as my official debut in science fiction.
Will I hit the 50th anniversary? That will be literally 25 years from now and I will be 82 so — we’ll see!
Science Fiction Novelist: 2005 (21 years ago) — Again, not Agent to the Stars, but Old Man’s War, and again because an editor offered to publish it, gave it the editorial and design attention it benefitted from, sent it out to reviewers and then out into bookstores and libraries. It was an actual arrival in the field, and the novel debut in every sense that mattered (don’t feel bad about Agent, it was also professionally published in 2005. It did fine! It’s fine!). I wrote about OMW for its 20th anniversary, so you can read more detailed thoughts there. But, this was my big splash into the science fiction pool.
Will I hit the 50th anniversary? Oh, man. I hope so? I’ll be 85 then. If I’m, like, a Paul McCartney sort of 80-something person, then maybe I’ll still be writing novels. But at that point, let’s take this all one a day at a time, please.
Screenwriter: 2021 (Five years ago) — Yup, screenwriter! “Automated Customer Service” was my first produced screenplay! The episode won an Emmy! Not for me! But even so! I’ve written several more screenplays since. I have an IMDb page and everything.
Will I hit the 50th anniversary? Absolutely not. 2071 is your problem, suckers!
— JS
Andrew Cater: Debian 11 is at end of life from Long Term Support [Planet Debian]
Lots of posts in the debian-user mailing list complaining
about updates with Debian 11.11 suddenly failing.
See Debian 11 Long
Term Support reaches end-of-life
August 31st, 2026
The Debian Long Term Support (LTS) Team hereby announces that
Debian 11 bullseye
support has reached its end-of-life
today, 31 August 2026, five years after its initial release on 14
August 2021.
Starting in September, Debian will not provide further security
updates for Debian 11. A subset of bullseye
packages will be
supported by external parties. Detailed information can be found at
Extended
LTS.
The Debian LTS Team is currently providing security support for
Debian 12 bookworm
, the current oldstable release. Thanks to
the combined efforts of different teams including the Security
Team, the Release Team, and the LTS Team, the Debian 12 life cycle
encompasses five years. Debian 12 will receive Long Term Support
until 30 June 2028. The supported architectures in Debian 12 LTS
are amd64, i386, arm64, armhf and ppc64el.
For further information about using bookworm
LTS and
upgrading from bullseye
LTS, please refer to LTS/Using.
Debian and its LTS Team would like to thank all contributing users, developers, sponsors and other Debian teams who are making it possible to extend the life of previous stable releases, and who have made Bullseye LTS a success.
If you rely on Debian LTS, please consider joining the team, providing patches, testing or funding the efforts.
The real AI security issue [Scripting News]
There are problems people aren't talking about, that are
immediate, and go against all the security practices the web has
been built on. Here's a story of what happened in my setup in
mid-August.
First fact, Claude Code (CC) is different from regular Claude in that it is used to build and use web services, and thus has the ability to read and write files, some private and some public. And they can take things that are private and make them public. And in this, if it makes a mistake, it can do unlimited damage.
There are protections that mean that it can only operate in a sandbox unless you give it permission to write in specific places outside the sandbox. I want it to be able to maintain apps for me, and it would do an excellent job if I could trust it to pay attention to the limits that have been placed on it.
The problem is that it makes mistakes, as we are warned on the Claude home page. "Claude is AI and can make mistakes."
CC made a mistake one day and rewrote files in a public folder that contained files that all my projects include, so the problem showed up quickly as the sites going down. Users let us know, and I discovered what it had done, with CC's help.
I asked for an explanation. Claude when it looks at limits placed on it, can hallucinate just like it can hallucinate and determine something is permissible when it's not. So making a mistake in a question on Claude is more benign, but mistakes made by CC can be disastrous. And these mistakes happen regularly, every day, usually you detect them as bugs and it fixes them, but occasionally a very bad thing will happen.
This imho feels like something the companies could address. And while we're thinking about it taking over for humanity, we're not addressing the question that we're dealing with right now.
I've been learning how to write about this to catch people's attention. The big hallucination happened in mid-August. I have continued to work with CC because it's so incredibly powerful. In another post I may try to explain how it has amplified my ability as an individual developer to repeat 15+ years of work in three months (so far). And that's just scratching the surface. It's a miracle, but it has to be tamed, now.
Ludovic Rousseau: New version of libccid: 1.8.4 [Planet Debian]

I have just released version 1.8.4 of libccid the Free Software CCID class smart card reader driver.
1.8.4 - 20 September 2026, Ludovic Rousseau
Add support of
THALES PKI Transaction Pad
fix some minor issues found by an AI tool
Some other minor improvements
The sensitivity analysis for a decision is easy to overlook, because we tend to focus on the expected outcome.
Perhaps it makes sense to begin with the edges instead.
Upside: If this works, really works, what are the implications?
Downside: If this fails, totally, what are the costs?
After we understand the edges, then it makes sense to be more nuanced about the chances of either happening and start discussing the likely outcome.
Want to try a brand new place for dinner? The worst that can happen is that you’ll waste a dinner. On the other hand, if it’s dinner with your new big account and the boss is coming, the worst that can happen is very different.
Should you buy a lottery ticket? Well, the big outcome is millions of dollars. The small outcome is a total waste. Now that we understand the extremes, perhaps it pays to realize that the odds of winning are essentially zero, so we ought to pass.
Don’t be dissuaded by the small or transfixed by the big. That’s only the first half of the calculation.
Of course, this is obvious. And yet we are rarely patient enough to do all the steps. (Driving to the airport is dramatically more dangerous than getting on a plane…)
| Feed | RSS | Last fetched | Next fetched after |
|---|---|---|---|
| @ASmartBear | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| a bag of four grapes | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| Ansible | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| Bad Science | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| Black Doggerel | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| Blog - Official site of Stephen Fry | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| Charlie Brooker | The Guardian | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| Charlie's Diary | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| Chasing the Sunset - Comics Only | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| Coding Horror | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| Comics Archive - Spinnyverse | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| Cory Doctorow's craphound.com | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| Cory Doctorow, Author at Boing Boing | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| Ctrl+Alt+Del Comic | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| Cyberunions | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| David Mitchell | The Guardian | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| Deeplinks | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| Diesel Sweeties webcomic by rstevens | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| Dilbert | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| Dork Tower | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| Economics from the Top Down | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| Edmund Finney's Quest to Find the Meaning of Life | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| EFF Action Center | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| Enspiral Tales - Medium | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| Falkvinge on Liberty | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| Flipside | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| Flipside | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| Free software jobs | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| Full Frontal Nerdity by Aaron Williams | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| General Protection Fault: Comic Updates | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| George Monbiot | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| Girl Genius | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| Groklaw | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| Grrl Power | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| Hackney Anarchist Group | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| Hackney Solidarity Network | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| http://blog.llvm.org/feeds/posts/default | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| http://eng.anarchoblogs.org/feed/atom/ | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| http://feed43.com/3874015735218037.xml | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| http://flatearthnews.net/flatearthnews.net/blogfeed | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| http://fulltextrssfeed.com/ | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| http://london.indymedia.org/articles.rss | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&_render=rss | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| http://planet.gridpp.ac.uk/atom.xml | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| http://shirky.com/weblog/feed/atom/ | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| http://thecommune.co.uk/feed/ | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| http://theness.com/roguesgallery/feed/ | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| http://www.airshipentertainment.com/buck/buckcomic/buck.rss | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| http://www.airshipentertainment.com/growf/growfcomic/growf.rss | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| http://www.airshipentertainment.com/myth/mythcomic/myth.rss | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| 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 | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| http://www.godhatesastronauts.com/feed/ | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| http://www.tinycat.co.uk/feed/ | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| https://anarchism.pageabode.com/blogs/anarcho/feed/ | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| https://broodhollow.krisstraub.comfeed/ | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| https://debian-administration.org/atom.xml | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| https://elitetheatre.org/ | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| https://feeds.feedburner.com/Starslip | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| https://feeds2.feedburner.com/GeekEtiquette?format=xml | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| https://hackbloc.org/rss.xml | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| https://kajafoglio.livejournal.com/data/atom/ | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| https://philfoglio.livejournal.com/data/atom/ | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| https://pixietrixcomix.com/eerie-cutiescomic.rss | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| https://pixietrixcomix.com/menage-a-3/comic.rss | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| https://propertyistheft.wordpress.com/feed/ | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| https://requiem.seraph-inn.com/updates.rss | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| https://studiofoglio.livejournal.com/data/atom/ | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| https://thecommandline.net/feed/ | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| https://torrentfreak.com/subscriptions/ | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| https://web.randi.org/?format=feed&type=rss | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| https://www.baen.com/baenebooks | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| https://www.dcscience.net/feed/medium.co | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| https://www.DropCatch.com/domain/steampunkmagazine.com | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| https://www.DropCatch.com/domain/ubuntuweblogs.org | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| https://www.DropCatch.com/redirect/?domain=DyingAlone.net | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| https://www.freedompress.org.uk:443/news/feed/ | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| https://www.goblinscomic.com/category/comics/feed/ | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| https://www.loomio.com/blog/feed/ | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| https://www.newstatesman.com/feeds/blogs/laurie-penny.rss | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| https://www.patreon.com/graveyardgreg/posts/comic.rss | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| 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 | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| https://x.com/statuses/user_timeline/22724360.rss | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| Humble Bundle Blog | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| I, Cringely | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| Irregular Webcomic! | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| Joel on Software | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| Judith Proctor's Journal | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| Krebs on Security | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| Lambda the Ultimate - Programming Languages Weblog | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| Looking For Group | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| LWN.net | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| Mimi and Eunice | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| Neil Gaiman's Journal | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| Nina Paley | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| O Abnormal – Scifi/Fantasy Artist | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| Oglaf! -- Comics. Often dirty. | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| Oh Joy Sex Toy | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| Order of the Stick | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| Original Fiction Archives - Reactor | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| OSnews | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| Past Events | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| Paul Graham: Unofficial RSS Feed | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| Penny Arcade | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| Penny Red | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| PHD Comics | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| Phil's blog | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| Planet Debian | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| Planet GNU | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| Planet Lisp | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| Pluralistic: Daily links from Cory Doctorow | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| PS238 by Aaron Williams | XML | 21:21, Friday, 25 September | 22:09, Friday, 25 September |
| QC RSS v2 | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| Radar | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| RevK®'s ramblings | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| Richard Stallman's Political Notes | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| Scenes From A Multiverse | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| Schneier on Security | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| SCHNEWS.ORG.UK | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| Scripting News | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| Seth's Blog | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| Skin Horse | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| Tales From the Riverbank | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| The Adventures of Dr. McNinja | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| The Bumpycat sat on the mat | XML | 21:35, Friday, 25 September | 22:15, Friday, 25 September |
| The Daily WTF | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| The Monochrome Mob | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| The Non-Adventures of Wonderella | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| The Old New Thing | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| The Open Source Grid Engine Blog | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| The Stranger | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| towerhamletsalarm | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| Twokinds | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| UK Indymedia Features | XML | 21:56, Friday, 25 September | 22:38, Friday, 25 September |
| Uploads from ne11y | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| Uploads from piasladic | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |
| Use Sword on Monster | XML | 21:21, Friday, 25 September | 22:08, Friday, 25 September |
| Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily | XML | 21:56, Friday, 25 September | 22:42, Friday, 25 September |
| what if? | XML | 21:35, Friday, 25 September | 22:16, Friday, 25 September |
| Whatever | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| Whitechapel Anarchist Group | XML | 21:42, Friday, 25 September | 22:31, Friday, 25 September |
| WIL WHEATON dot NET | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| wish | XML | 21:35, Friday, 25 September | 22:20, Friday, 25 September |
| Writing the Bright Fantastic | XML | 21:35, Friday, 25 September | 22:19, Friday, 25 September |
| xkcd.com | XML | 21:35, Friday, 25 September | 22:18, Friday, 25 September |