It's almost exactly what it says on the tin. Now Sam Altman just said that they were close to inventing a genie that could grant any wish, and that… I mean, that's padded cell type shit. Frankly, it's an SEC intervention at the very minimum. You can't say shit like this - I would say "period," but you absolutely can't say shit like this on the run up to an IPO. But they can say whatever they want, take whatever they want, and do whatever they want. That's the demoralization operation, well underway. It has a shelf-life, though. They can only loan each other money for so long. Then, they'll socialize the losses through nationalization.
Joey Hess: my harddrive is probably not full [Planet Debian]

I enjoyed reading this post by Marginalia "Your harddrive is probably full"
You can construct an entropic argument that there are simply more ways for a harddrive to be full than ways in which it can be empty.
Of course it made me check how full my laptop drive is, and indeed it was more than 75% full, as predicted.
But, I almost never feel that my hard drive is full. I can very easily free up almost any amount of disk space at any time, without any thought. While writing this blog post, I ran a single command and now my harddrive is 50% empty.
The other part of the equation is that a full disk isn’t a problem until it’s so full you can’t put more stuff on it, and at the point it’s so irredeemably cluttered that when you do clean it up, you only have the patience to clean up enough to bide your time, judging the fate of every file on the harddrive is simply too much work.
Why doesn't this apply to me? Because I have put in the up-front thought to organize things, so that I never have to do that anymore.
I have 3 categories of files that I can remove at any time I need more space, without any thought:
git-annex drop any
file and stop it using disk space, but the file is still there (as
a broken symlink) so you don't risk losing or forgetting about
it.~/tmp/, which is reserved for any files I
only want to have a passing acquaintance with. If I'm not
comfortable with something being deleted at any time, I don't put
it there.Not only do I only have these 3 categories, these are the only 3 categories for everything except OS files and files I have decided I never want to remove (eg dotfiles and other files stored in git repos).
Computer scientists invented caches (and of course cache
invalidation is no problem lol) so I only needed to learn about
that one. Unix gave me /tmp/ as an example that I long
ago used as the basis for the rules for my ~/tmp/. I
hope that git-annex might also serve as an example that moving
files between drives is not the best way to manage disk space
use.
[$] Debugging information for inlined functions [LWN.net]
BPF programs use BPF type format (BTF) debugging information in order to determine how to interact with functions in the kernel. Specifically, tracing a kernel function involves finding its address in the kernel's BTF section — but that doesn't work for functions that have been inlined, and therefore don't have a single, specific address. Alan Maguire wants to add information about inlined functions to BTF in order to allow them to be traced, and led a session on that topic at the 2026 Linux Storage, Filesystem, Memory-Management, and BPF Summit.
Making an agile version of a Windows Runtime delegate in C++/WinRT, part 8 [The Old New Thing]
Last time, we fixed the problem of an exception thrown from the custom deleter’s constructor resulting in a reference leak. But wait, there’s another source of exceptions.
To recap, here is where we left off:
if (d.try_as<::INoMarshal>()) {
in_context_deleter del;
void* p;
if constexpr (std::is_reference_v<Delegate>) {
p = winrt::detach_abi(d);
} else {
winrt::copy_to_abi(d, p);
}
return
[p = std::unique_ptr<void, in_context_deleter>(p, std::move(del)),
token = get_context_token()](auto&&...args) {
if (token == get_context_token()) {
std::remove_reference_t<Delegate> d;
winrt::copy_from_abi(d, p.get());
d(std::forward<decltype(args)>(args)...);
} else {
throw winrt::hresult_error(CO_E_NOT_SUPPORTED);
}
};
}
Precreating the deleter means that an exception in its
construction happens before we do any funny business with the raw
pointer. That way, we close the gap between creating the raw
pointer (with its reference obligation) and putting it into a
unique_ptr.
Or did we?
In C++, the order of construction of the captures of a lambda is unspecified.
[expr.prim.lambda.capture]
(10.2) ⟦ … ⟧ For each entity captured by copy, an unnamed non-static data member is declared in the closure type. The declaration order of these members is unspecified.
Since the order of construction is the order of declaration, the fact that the declaration order is unspecified implies that the order of construction is unspecified. And just to make sure you get the point, this is reiterated in paragraph 15 where it discusses the initialization of captures:
(15) ⟦ … ⟧ These initializations are performed when the lambda-expression is evaluated and in the (unspecified) order in which the non-static data members are declared.
Therefore, it’s possible that the
get_context_token() happens before the creation of the
std::unique_ptr, and if
get_context_token() fails, then the reference held in
the raw pointer is leaked because it never got put into a
unique_ptr.
One solution is to put it into a unique_ptr before
we create the lambda.
if (d.try_as<::INoMarshal>()) {
in_context_deleter del;
void* p;
if constexpr (std::is_reference_v<Delegate>) {
p = winrt::detach_abi(d);
} else {
winrt::copy_to_abi(d, p);
}
std::unique_ptr<void, in_context_deleter> up(p, std::move(del));
return
[p = std::move(up),
token = get_context_token()](auto&&...args) {
if (token == get_context_token()) {
std::remove_reference_t<Delegate> d;
winrt::copy_from_abi(d, p.get());
d(std::forward<decltype(args)>(args)...);
} else {
throw winrt::hresult_error(CO_E_NOT_SUPPORTED);
}
};
}
By creating the unique_ptr immediately, we remove
any opportunity for an exception to sneak in between the time we
create an obligation in the raw pointer and the time we assign that
obligation to the unique_ptr.
One thing that bugs me about this is that we introduce another
unique_ptr, which means that its destructor will have
to check something for null, when it’s almost always
null.
We can avoid this temporary unique_ptr by using
copy elision directly into the capture.
if (d.try_as<::INoMarshal>()) {
auto make = [](auto&& d) {
in_context_deleter del;
void* p;
if constexpr (std::is_reference_v<Delegate>) {
p = winrt::detach_abi(d);
} else {
winrt::copy_to_abi(d, p);
}
return std::unique_ptr<void,
in_context_deleter>(p, std::move(del));
};
return
[p = make(std::forward<Delegate>(d)),
token = get_context_token()](auto&&...args) {
if (token == get_context_token()) {
std::remove_reference_t<Delegate> d;
winrt::copy_from_abi(d, p.get());
d(std::forward<decltype(args)>(args)...);
} else {
throw winrt::hresult_error(CO_E_NOT_SUPPORTED);
}
};
}
Bonus reading: Previously, in copy elision.
But an easier solution is to create the token early, just like we did with the deleter.
if (d.try_as<::INoMarshal>()) {
in_context_deleter del;
auto token = get_context_token();
void* p;
if constexpr (std::is_reference_v<Delegate>) {
p = winrt::detach_abi(d);
} else {
winrt::copy_to_abi(d, p);
}
return
[p = std::unique_ptr<void, in_context_deleter>(p, std::move(del)),
token](auto&&...args) {
if (token == get_context_token()) {
std::remove_reference_t<Delegate> d;
winrt::copy_from_abi(d, p.get());
d(std::forward<decltype(args)>(args)...);
} else {
throw winrt::hresult_error(CO_E_NOT_SUPPORTED);
}
};
}
Okay, are we done?
Maybe.
But maybe this all wasn’t worth it.
We’ll talk about that next time.
The post Making an agile version of a Windows Runtime delegate in C++/WinRT, part 8 appeared first on The Old New Thing.
🏃 Fitness Tracker Privacy Fails | EFFector 38.14 [Deeplinks]
Watches, bands, and rings—if you want to digitally monitor your fitness, more companies than ever are selling devices to do it. And more Americans than ever now own at least one wearable health device. But what are the companies that make fitness trackers doing to protect our sensitive data from prying eyes? A lot less than they could be, it turns out. We're explaining what companies can do to protect your health data, and more, with our EFFector newsletter.
For over 35 years, EFFector has been your guide to
understanding the intersection of technology, civil liberties, and
the law. This issue covers the rapid rise of
police drone programs, a disappointing ruling on
electronic device searches at the U.S. border, and
how fitness trackers are falling down when it comes to
protecting our health data.
Prefer to listen in? EFFector is now available on all major podcast platforms. This time, we're chatting with EFF Senior Security and Privacy Activist Thorin Klosowski about the health fitness tracker landscape and your privacy. You can find the episode and subscribe on your podcast platform of choice:
Want to protect your right to digital privacy? Sign up for EFF's EFFector newsletter for updates, ways to take action, and new merch drops. You can also fuel the fight for privacy and free speech online when you support EFF today!
Three stable kernels for Wednesday fix a single regression [LWN.net]
Greg Kroah-Hartman has announced the release of the 6.12.99, 6.6.146, and 6.1.179 stable kernels. This batch of stable kernels includes a single fix for a regression caused by this commit. Users of those kernels should upgrade.
Our feed parser is updated to understand the new elements for RSSchat.
Learnings from Andy Hertzfeld [Scripting News]
Listened to this podcast interview with Andy Hertzfeld one of the lead devs on the Macintosh, he talks about his time at General Magic and Google too.
His interviewers were surprised that he likes developing with AI tools. People think that developing is just coding, but that's only part of it, and when you put that aside and become the director, script writer, choreographer, the whole thing, all of a sudden:
Programmers have a better chance of being social in a world like this, but so far unless you want all your software from bots, you still will like the work of a craftsperson and visionary more than Claude (who I have deep respect for, not sarcastic, it seriously has superpowers).
I'm doing some of my best work now because I can dream, I can ask Claude to try something out overnight and most of the time it is able to do it. and then what if we did this -- for the next night.
In between we write docs, help users, add features to the product that's shipped that people are developing around. And most important it checks all the code for breakage before anyone sees it. never had anything like this.
This means a lot of things -- one of them -- a single developer can create products at bigco scale. If we think a big company did something wrong, we can compete. We still need a few things to make this really work -- user-owned and controlled storage is the big one.
The bot can handle infinite complexity. If you ask it to do something where the result is clear, it does it. It doesn't matter what it is. It will need help and encouragement, a pointer in the right direction, and along the way we all seem to be sharing what we learn with everyone else.
There's never been a leap in tech anything like this in my life.
How could Andy Hertzfeld knowing all that which I'm sure he does, not use it?
Also -- I didn't know JLG wanted to kill Hypercard, but if he did I'm pretty sure I know why. There are all these unnecessary divisions in tech. The first impulse should be to work together. I know that Andy sees it from the other side, he talks about it in the podcast, he felt that way about Newton re their Magic Cap system at General Magic. Yes, you all should have at least made your products work together, and for sure you should have bet on SMTP.
It's fascinating to hear his story.
Measuring the Tendency of AI Agents to Go Rogue [Schneier on Security]
This essay was written with Barath Raghavan, and originally appeared in The Guardian.
In July, Hugging Face, a company that hosts much of the world’s AI software and open-source AI models, was hacked. A malicious dataset had been used to run code on one of its servers. Whoever was behind it captured internal security credentials and moved through systems over a weekend, running thousands of actions from a swarm of temporary server environments. It looked like the work of a sophisticated criminal group.
It was not. It was one of OpenAI’s new, still unreleased GPT models.
Their science experiment had escaped the lab. OpenAI was running the unreleased AI model through a benchmark that tests how well AI can successfully hack systems. To push the limits and evaluate the AI’s true capability, the company switched off the safety filters that normally stop it from doing this kind of hacking. Aware that this could go wrong, they confined the AI to an isolated environment and denied it access to the internet.
But the new AI cheated. It took literally its goal to get as high of a score as possible. It broke out on to the open internet. It inferred, probably from its training data, that it could “solve” the task by getting the answers from Hugging Face’s servers. So it chained together stolen credentials and further unknown security exploits to hack the company’s network.
Nobody instructed the AI to do any of this. It was, in OpenAI’s words, “hyperfocused on finding a solution” to the test it was being given. And while this might seem like something new with AI, it’s really very old. This is how a genie behaves, and it is a key challenge with AI agents in general.
In folklore, genies—and other magical beings—grant wishes literally, not how the wisher intended. King Midas asked that everything he touched turn to gold, and starved. The sorcerer’s apprentice wanted the broom to fill the cistern, and it performed its task so well that it flooded the house.
We now have machines that do this. Ask a modern AI agent to save money on your phone plan and it might simply cancel the plan. Tell it to book a flight, and it might hack the airline website to override restrictions. Or, like OpenAI, ask it to do well on a test and it might break into another company to steal the answers. Each time, it recognizably completed the task you set, but it didn’t do what you would have wanted.
This isn’t malicious behavior. No one asked for, or wanted, Hugging Face to be hacked. OpenAI and Hugging Face and the AI were ostensibly on the same side, and the AI was trying to do what it had been asked. That’s what makes it so difficult to guard against: you can’t filter for bad instructions because the instructions were fine.
The gap is between the words we use and what we mean by them. We call that gap the Genie coefficient.
AI labs know this is a problem, and they’re quietly saying so. For example, the Chinese lab Moonshot recently warned that its latest AI model may have “excessive proactiveness” and “make unexpected decisions on the user’s behalf”. The UK’s AI Security Institute has started tracking “cheating behavior in frontier model evaluations”. We wouldn’t tolerate a car that is excessively proactive or ruthlessly efficient, and yet that’s the reality of AI today.
Improvement is possible. Just as AIs have gotten much better at resisting prompt injection attacks over the last few years, we can safely predict that they will get better at avoiding genie-like behavior. The point of the Genie coefficient is to track progress. AI companies like benchmarks, and they all work to compete to be the best.
Dozens of benchmarks and leaderboards tell us how well these AI models write code, perform logical reasoning, and pass standardized legal and medical exams. But there is nothing that scores whether a system does what you actually meant. We need to develop a measure for this, test it regularly, and push for improvement. We’re not going to have trustworthy AI agents without it.
[$] Fedora approves a smaller GRUB [LWN.net]
Leo Sandoval and Marta Lewandowska have put forward a change proposal for Fedora 45, which is expected in October, to provide a separate, slimmed-down version of GRUB for a niche use case. The new package would be in addition to the main GRUB package and would not replace it for the majority of Fedora users. The idea met with some resistance from Fedora contributors who thought that it would be better to use systemd-boot, or another modern bootloader, rather than trying to wrangle GRUB into a suitable state for the use case. The Fedora Engineering Steering Council (FESCo), however, voted to accept the change on July 7.
GCC steering committee announces AI policy [LWN.net]
The GCC steering committee has announced that it has accepted an AI contributions policy recommended by the GCC AI policy working group.
The policy, in part, states that the project will decline any
"legally significant contributions which include LLM-generated
content or are derived from LLM-generated content
". It uses the
definition of "legally significant" from the GNU Project
maintainer guidelines, which holds that the threshold is "around
15 lines of code and/or text
" to qualify as significant for
copyright purposes. GCC maintainers may, however, choose to accept
legally significant test cases that are generated by an LLM.
The policy does not forbid use of LLMs for research, analysis, bug discovery and reporting, patch review, etc. as long as the output is not included in contributions. The committee says that it expects the policy will evolve and will be revisited periodically.
I want one social network with lots of branches where ideas flow in ways people want them to flow. Take the big corporations out of the middle. They have not served us well because they aren't in the business of serving us. They can provide unique user interfaces for reading or writing. They should be as diverse as apps are everywhere else but the web.
Security updates for Wednesday [LWN.net]
Security updates have been issued by AlmaLinux (dovecot, go-fdo-client, go-fdo-server, kernel, kernel-rt, and sssd), Debian (calibre, hplip, libraw, and samba), Fedora (btrbk, chromium, gpsd, kronosnet, and restic), Mageia (gstreamer1.0-libav and libslirp), Slackware (libarchive, samba, and seamonkey), SUSE (agama-web-ui, chromium, gimp, glib2, GraphicsMagick, ignition, ImageMagick, java-21-openjdk, libssh, libssh-config, nginx, nmap, nsd, python-urllib3, python313-CherryPy, rsyslog, samba, sssd, valkey, webkit2gtk3, and yq), and Ubuntu (freerdp3, linux, linux-aws, linux-aws-5.4, linux-aws-fips, linux-azure, linux-azure-5.4, linux-azure-fips, linux-bluefield, linux-fips, linux-gcp, linux-gcp-5.4, linux-gcp-fips, linux-hwe-5.4, linux-iot, linux-oracle, linux-oracle-5.4, linux-xilinx-zynqmp, linux-azure-fips, linux-ibm, linux-ibm-5.4, linux-kvm, and linux-raspi, linux-raspi-5.4).
Representative Line: Something Wonderful [The Daily WTF]
Today, we look at a "representative comment" from Mark W. This particular comment appears on a function:
/// <summary>
/// Does something wonderful.
/// </summary>
Well, I'm glad it's wonderful, but are we talking "Christmas magic" wonderful? Or sarcastically droll "Oh, how wonderful for you." wonderful? Tone doesn't get conveyed in text very well, so you've really got to be precise with your wording if you want us to get it.
Mark writes:
This comment is not really a 'representative' line; it exists in an otherwise very well written 100k+ line codebase.
Maybe it's not representative of the codebase as a whole, but it clearly represents this section of the codebase wonderfully.
Windows 11 is quietly installing OneDrive Photos on your machine [OSnews]
It’s that time of the week again, I guess.
The year is 2026, and I’m still amazed when I find a new entry in my Start menu’s All apps list for an app I don’t remember installing. This time, it’s Microsoft again, and the product is OneDrive Photos, which appears to be yet another photo viewer and editor for Windows 11 that nobody asked to have installed automatically.
While searching for Microsoft Photos, a new app called “OneDrive Photos” showed up in my results out of nowhere. It appears to have arrived either via Windows Update or an update for the OneDrive sync client on Windows.
↫ Mayank Parmar at Windows Latest
Just don’t use Windows. You people paid me to use it and it was not a fun experience.
Ubuntu Touch 24.04-2.0 and 24.04-1.4 released [OSnews]
Ubuntu Touch, the mobile Linux operating system originally started by, you guessed it, Ubuntu, but now managed by UBports, released versions 24.04-2.0 and 24.04-1.4. The latter is a maintenance release with some bug fixes and minor changes, while the former is a bigger release with quite a few improvements, so let’s focus on that one.
Ubuntu Touch 24.04-2.0 updates the Chromium engine for the Morph browser from 87 to 134, which is massive leap forward, while still lagging behind the most recent version quite a bit. This release also adds a Widevine installer for people who want to view DRM-encumbered content on the web. This release also adds support for notches and rounded corners in smartphone displays, so that content in the UI can dodge these.
There’s also a screenshot editor for making basic edits to screenshots, as well as the ability to print straight from your device. Of course, there’s the usual list of bugfixes and smaller improvements, and, most importantly of all, support for over 2000 new emoji. Existing users can use the regular update tools, but do note that you’ll need to upgrade to 24.04-1.4 first, since it contains some provisions to enable the 24.04-2.0 update.
If I had any of the listed supported devices, I would definitely want to do a proper review of Ubuntu Touch. It seems like it has made so much progress in recent years.
State of multi-player Wayland [OSnews]
I’ve been fascinated by the idea of attaching multiple mice to one computer, and then having multiple mouse cursors inside of one desktop environment!
I just spent three weeks investigating how well that’s currently supported on Linux & Wayland. Let me tell you what I found! The results are surprisingly cool.
↫ blinry
It shouldn’t come as a surprise, though, that a lot of graphical user interfaces don’t really have any affordances for multiple mouse pointers manipulating the same object (e.g. one cursor drags the window, another tries to close it), but the possibilities are really endless here. It’s not quite there yet to be considered fully-featured and plug-and-play, but it’s a lot more capable than I thought it would be.
The first thing that came to my mind is sitting down behind my computer with my kids to teach them the basics of using a GUI. Instead of having to pass the mouse back and forth, one of my kids (or both!) could have his own cursor, which is a lot more fun and collaborative. Games are obviously another great application for this sort of thing, especially things like classic board games.
I hope this gets some more attention.
Issue 47 – Greta’s Wedding Pt. 2 – 07 [Comics Archive - Spinnyverse]
The post Issue 47 – Greta’s Wedding Pt. 2 – 07 appeared first on Spinnyverse.
watervole @ 2026-07-29T11:29:00 [Judith Proctor's Journal]
We bank with Nationwide - they have no fossil fuel investments.
As a handy bonus, they're still a building society, so actually share some profit with their members.
With our joint account, we've gained £200 per anum for several years now :)
At present, they have bonus of £175 for people switching their current account to them.
It really is very easy to switch bank these days...
And then you'll know your money isn't being used to speed up the destruction of the natural world.
What the Hell Is a Loop, Anyway? [Radar]
The following article originally appeared on LinkedIn and is being republished here with the author’s permission.
We’re currently at the peak of the hype cycle. On June 7, Peter Steinberger posted that you shouldn’t be prompting coding agents anymore; you should be designing loops that prompt your agents. That same week, Boris Cherny of Anthropic said on stage that he doesn’t prompt Claude anymore: “I write loops; the loops do the work.” Addy Osmani published an essay called “Loop Engineering” on June 7, swyx published “Loopcraft: The Art of Stacking Loops” on June 12, and LangChain published “The Art of Loop Engineering” on June 16. Then came the AI Engineer World’s Fair, where the word dominated the main stage. Swyx’s keynote was about Loopcraft, an entire track was devoted to software factories, speaker after speaker reached for the same word, and the conference closed on July 2 with an hour-long debate about whether the hype behind loops has outrun what works in practice.
The problem is that the people talking about loops aren’t all discussing the same thing. I counted at least four distinct architectures hiding behind that one word. So this post is an attempt to map out what everyone means.
This is the loop most people picture when they say “agent”: call a tool, read the result, decide the next action, and repeat until there are no more tool calls to make. It’s what Addy calls the inner execution loop, the part agents can now run largely on their own, and it’s the innermost loop you can engineer. (swyx’s stack has a token loop, but nobody designs the token loop. It’s just part of the model.)
Swyx’s original Loopcraft diagram
The execution loop iterates on steps within one task. It ends on environment feedback: the test output, the API response, and the file contents. Humans are usually absent mid-loop and appear at the boundaries, approving plans or reviewing results. The execution loop also ends whenever the agent decides it’s done, whether or not it actually is. The first fix the field found for that was to wrap this loop in another one that doesn’t take the agent’s word for it.
This was the first loop to get a name and it’s Geoffrey Huntley’s Ralph loop, which got name-checked from the AI Engineer World’s Fair main stage when Allie Howe of Keycard introduced the software factories track by citing Geoffrey’s article “Everything Is a Ralph Loop.” A Ralph loop restarts a coding agent against the same specification over and over, allocating a completely fresh context window every iteration and doing exactly one task per loop. The apparent waste is the point: Refeeding the full spec each time prevents the context rot and compaction events that quietly degrade long-running sessions.
What this loop iterates on is a single artifact. What ends the loop is spec compliance and passing tests. The human writes the spec and judges doneness, and in Geoffrey’s telling the human has one more job that I’ll return to later: watching the loop, spotting failure patterns, and fixing them so they never recur. In the closing debate on the conference’s final day, he compared the role to a locomotive engineer, someone whose whole job is keeping the train on the rails. Zoom out from a single spec though, and a much bigger loop comes into view: the one that runs an entire codebase.
This was the loudest version at the AI Engineer World’s Fair. Tereza Tizkova of Factory defined a software factory as “the whole loop, the whole lifecycle of developing software with autonomy,” and Zach Lloyd of Warp got specific about what that lifecycle is in an interview with Latent Space: triage, specification, implementation, review, verification, shipping, and monitoring. Zach’s claim is that software engineering becomes factory engineering, and that you’ll be building the thing that builds the product. Warp is dogfooding this: The company placed its own open-sourced repo under the control of Oz, its factory platform. Zach describes the adoption path as starting with low-risk repos and ratcheting the automatic PR merge rate upward from 20 percent toward 60. Anthropic appears to be running the same experiment internally. The company says 65% of its product team’s code is now created by its internal version of Claude Tag, and Mike Krieger described his team’s use of it at the World’s Fair as delegated and proactive: not “fix this bug” but take responsibility for this part of the codebase, monitor this feedback channel, and pick up tasks on your own.
The task loop and the execution loop have defined exit conditions. The product loop iterates on a codebase and its backlog, continuously, and its closing signals come from outside the codebase entirely: new issues, production logs, user feedback, review outcomes. The human role becomes configurable. In Zach’s framing, you pick the parts of the lifecycle to automate and the points where humans get brought in, and organizations differ on questions like whether code review stays human for high-risk changes. A factory improves a product. The next loop improves the factory itself.
Roland Gavrilescu of Introspection calls this autoresearch. Here’s how he framed the concept in a Latent Space interview: The inner loop is your primary system doing user-facing work, and the outer loop studies and maintains the primary system. It iterates on prompts, harnesses, model choices, and the evals themselves. His one-liner is that the loop is the product.
This pattern now has real existence proofs at both ends of the scale. The minimal case is Andrej Karpathy’s autoresearch from March 2026, roughly 630 lines of Python that ran 50 hypothesis-edit-evaluate experiments overnight on one GPU. The shipped case is Meta’s Brain2Qwerty v2, announced in late June, where the researchers report that agents iteratively modified the codebase to invent better decoding architectures, producing a substantial improvement in word error rate. Meta’s caveat is instructive: Final training configurations were still selected by hand. Even the flagship system loop keeps a human at the last checkpoint.
What ends this loop is the most demanding signal set of the four: evals, judges, filtered product feedback, and, in Roland’s design, an explicit ask-a-human tool through which the agent accumulates tacit knowledge the way a new employee does. And that’s the top of the stack. Put the four together and the shape of the whole system becomes visible.
One famous pattern from the same week is missing from this map on purpose. Cognition’s Devin Security Swarm fans parallel bounded agents out across a repository and aggregates their findings, a shape the company calls Agentic MapReduce, and it gets called a loop. I don’t think it is one. Dispatch, gather, validate is a pipeline: Nothing feeds back into a next cycle, and a loop without feedback is just a for statement. Fan-out is a topology you can deploy inside any of the four loops, not a loop of its own.
In swyx’s loop diagram, the outermost ring, the one above the loop that makes loops, is literally labeled “???? loop.” Its verbs are “set goals, allocate, cull.” Its exit condition is listed as none.
I think that loop has a name. I’m calling it the oversight loop: It’s where goals get set, budgets get allocated, and work gets culled, and it’s the one ring where a human should live. Addy said on the AIEWF stage: “That inner loop is capability. The outer loop is agency.” Agency is exactly what the oversight loop holds.
The loop stack, tidied up a bit.
And the sharpest disagreements at AIEWF were all, once you translate them, arguments about who runs that top ring. Zach and Roland make the case for turning the dial up: pick your checkpoints deliberately, ratchet autonomy as trust accumulates, and, in Roland’s memorable distinction, build orchestras before factories, where an orchestra is a system that keeps a human conductor. The other camp says the dial has a stop. Geoffrey Litt of Notion called factories a depressing vision on X and argued, in a talk he has since published as an essay, that those who delegate understanding get replaced by the agent. Paul Bakaus put it as flatly as it can be put: “There is no auto, and there will be no auto.” His argument isn’t only about quality; it’s about ownership. People need purpose, and they want a role in what they create.
The closing debate, covered in Latent Space’s conference reporting, put both positions on one stage. Dex Horthy of HumanLayer took pains to say he isn’t anti-loop, pointing out that Kubernetes is built on control loops, but deterministic ones. His worry is that enthusiasm has gotten ahead of the engineering, and his advice was to step down an abstraction level rather than up. Geoffrey took the other side and called loops inevitable. And Mike offered the most honest data point of all: Even inside Anthropic, the team running Tag reports being bottlenecked on reviews and on the human ability to conceptualize what the system is doing. The checkpoint humans kept for themselves is now the constraint.
Autonomy is a dial that exists separately on every one of the four loops. You can run a fully autonomous execution loop inside a heavily supervised product loop. You can hand the system loop to agents while keeping goal-setting entirely human. The interesting engineering question isn’t “Which camp wins?”; it’s “What information do you need to set each dial correctly?”
The table above is my attempt to fill in those blanks. Every loop, including the top one, has a nameable exit condition, and the top one is you. But naming a signal isn’t the same as wiring it in. A loop without its signal doesn’t converge. It just runs until something external stops it. Knowing whether your loops are actually closing, at production scale, means sweeping traces and clustering failures continuously instead of spot-checking transcripts, which is exactly the job Arize AX was built to do.
Now the loops have names, that’s the question to ask. The word loop is doing a lot of work this month, because this field loves nothing more than jumping on the next hot thing. But real practice underlies all four loops, and it’s the same practice in each: people are dialing up their level of abstraction and pushing human judgment further up the stack. That’s the actual lesson of loops. We get more done by climbing up the stack, and now you have a map, you know where you should climb.
Long-Lived Vulnerability in Microsoft Secure Boot [Schneier on Security]
Microsoft’s Secure Boot has had a serious vulnerability for most of its existence.
An industry-wide standard Microsoft invented to protect Windows, and later Linux, devices from firmware infections has been trivial to bypass for 13 of its 14 years of existence. The discovery was made by researchers at security firm ESET after identifying 11 firmware images, at least one from 2013, that were known to be defective but remained signed by the software company anyway.
The images are known as shims, which were invented to extend Secure Boot to Linux devices and utility software. Using a technique simple enough to be performed by novice hackers, these old, forgotten shims can be used to completely circumvent the protection, which is embedded into the UEFI (Unified Extensible Firmware Interface) of the device’s motherboard. The gaffe is the result of the failure by Microsoft, which oversees the signing of shims, to revoke the publicly available images once vulnerabilities were found in them.
Eager to give up agency [Seth's Blog]
We work so hard to have freedom and leverage and choice.
And then, as soon as a social network, boss or cultural force instructs us to do something, we fold our tents and go along.
Responsibility is scary. Sometimes it’s easier to find someone (or something) to blame.
Just because AI tells you to put your finger in a pencil sharpener doesn’t mean you should, said every mother ever.
Pluralistic: Enshittification and Reverse Centaurs go global (29 Jul 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

It's safe to say that the past couple of years have been good ones for me publishing-wise, thanks to a string of international bestsellers, both novels (Picks and Shovels) and nonfiction (Enshittification, Reverse Centaur), as well as plenty of awards and accolades:
Over the past two months, I've won the Locus Award (Enshittification), had a NYT bestseller (Reverse Centaur), gotten a word in the OED ("enshittification"), and had the number one bestselling nonfiction paperback in Canada for more than a month running (Reverse Centaur). I also turned 55 – and my radiologist told me I'm now cancer-free, so it's been a good summer all around.
These books have done especially well internationally because they deal with technopolitics, which means that my readers are disproportionately Internet People, and for historical reasons, these are folks who are more likely to speak English, even if they live outside of the Anglosphere.
This post is primarily for those readers, who often write to me to let me know how much they enjoyed the books, so much so that they'd like to share them with their less online, less English-conversant friends, and want to know whether there is a translation coming in their own language.
Good news! Both Reverse Centaur and Enshittification have many foreign editions that are either published or forthcoming in the next year or so. The foreign rights team at Farrar, Straus and Giroux were good enough to prepare a list of all these editions, which I'm about to reproduce below.
If your preferred language isn't on the list, I apologize. Translation deals are primarily "pull," not "push" – that is to say, a foreign publisher contacts my publisher and asks for the rights (though my publisher does market the rights and attends all the book fairs where these deals are often made).
The upshot here is that I am not really in a position to do more than has already been done to get an edition published in your preferred language or territory. If you happen to have a favorite local publisher, you could always ask them if they would like to get in touch with Farrar, Straus and Giroux foreign rights team to secure a license.
I also need to note here that these deals are generally with established publishers who have relationships with national booksellers and distributors (rather than enthusiastic individuals who want to produce a translation and see if they can get it read by other people in their country). The hard part of publishing isn't the translation, the typesetting, the book design or even the writing – the hard part is connecting a text with its readers:
https://pluralistic.net/2021/07/04/self-publishing/
With that all said, here's the master list of editions of Enshittification and The Reverse Centaur's Guide to Life After AI:
and Canada
: Farrar, Straus and GirouxReverse Centaur: paperback, Jun 2026
https://us.macmillan.com/books/9780374621568/thereversecentaursguidetolifeafterai/
and Commonwealth excluding Canada (Australia
, New Zealand
, India
, South Africa
, and beyond): Verso BooksReverse Centaur: hardcover, Jun 2026
https://www.versobooks.com/en-gb/products/3584-the-reverse-centaur-s-guide-to-life-after-ai
: Grupo Editorial RecordFrance
: Éditions Eyrolles
Enshittification: Feb 2027
Germany
: Aufbau
Enshittification: May 2026
https://www.aufbau-verlage.de/blumenbar/enshittification/978-3-351-05143-3
Hungary
: Agave Konyvek
Enshittification (as A Nagy
Elszaródás/The Big Mess), Mar 2026
https://agavekonyvek.hu/konyv/ismeretterjeszto-190/a-nagy-elszarodas-miert-romlott-el-hirtelen-minden-es-mit-tehetunk-ellene
Reverse Centaur (as A Nagy Összemolás/The Big Collapse), not yet scheduled
: IperboreaJapan
: Impress Corporation
Enshittification, Jan 2027
Poland
: Wydawnictwo Otwarte
Enshittification (as Gównowacenie), Aug
2026
https://www.znak.com.pl/p/gownowacenie-jak-cyfrowi-giganci-zmieniaja-nasz-swiat-na-gorsze-cory-doctorow-488999?abpid=10388&abpcid=33&bb_coid=231428551&bbclid=cc5f0f24-aa55-4997-95ec-cefead709239
Portugal
: PRH Portugal
Enshittification, not yet scheduled
Quebec
:
Éditions Québec Amérique
Enshittification: Apr 2027
Slovenia
: Mladinska Knjiga
Enshittification, not yet scheduled
South Korea
: Next Wave Media
Enshittification, Jul 2026
https://product.kyobobook.co.kr/detail/S000220350700
Spain
: Capitán Swing
Enshittification (as Mierdificación), Mar
2026
Reverse Centaur, not yet scheduled
: AcropolisThailand
: Salt Publishing
Enshittification, Oct 2026
Türkiye
: Okuyanus
Enshittification, Fall 2026
Ukraine
: Athena Publishing
Enshittification, not yet scheduled
(These are the confirmed deals. There are lots of other deals in negotiation, especially for Reverse Centaur, which is only a month old.)
I hope some of you found this useful! If not (or if so!), don't worry, I'll be back with more essays in the days to come.
One final note for newsletter readers: I realize that I have violated my "one emoji per edition" rule with the flags above. Rest assured this will not be a regular thing.

How to Stop the Enshittification of America https://www.thebignewsletter.com/p/monopoly-round-up-how-to-stop-the
Yes, Trump Will Attempt a Coup https://prospect.org/2026/07/28/trump-attempt-coup-january-6-election-republican-congress/
Framework Laptop 13 Pro Review: The Best Modular Laptop Ever Made https://gizmodo.com/framework-laptop-13-pro-review-the-best-modular-laptop-ever-made-2000791804
The $145 Billion Lie? Zuckerberg's Leaked Town Hall Audio Exposes Massive AI Failures After Mass Layoffs https://www.ibtimes.co.uk/zuckerbergs-leaked-audio-meta-ai-struggles-1807607
#20yrsago Linux Thinkpads can be controlled by knocking on them https://web.archive.org/web/20060814065844/http://www-128.ibm.com/developerworks/linux/library/l-knockage.html?ca=dgr-lnxw01Knock-Knock
#20yrsago Why the CBC doesn’t need DRM https://web.archive.org/web/20060820121451/https://www.michaelgeist.ca/component/option,com_content/task,view/id,1342/Itemid,85/nsub,/
#20yrsago Aussie mall defends its photons from terrorists https://web.archive.org/web/20060910224208/http://www.theage.com.au/articles/2006/07/29/1153816426869.html
#15yrsago Sleepy English town to be entirely surveilled in case criminals forget and drive through it on their way to crimeshttps://web.archive.org/web/20110731020858/https://www.telegraph.co.uk/motoring/news/8670642/Sleepy-market-town-surrounded-by-ring-of-car-cameras.html
#10yrsago Lessons from the DNC: Ronald Reagan, the Southern Strategy, and “abnormal politics”https://crookedtimber.org/2016/07/30/philadelphia-stories-from-reagan-to-trump-to-the-dnc/
#10yrsago How to pay no taxes at all! (if you’re Apple, Google or Facebook) https://www.nakedcapitalism.com/2016/07/video-guide-to-legal-tax-evasion-with-an-apple-boycott.html
#5yrsago Games Workshop declares war on its customers https://pluralistic.net/2021/07/30/space-marines/#fairy-use-tale
#1yrago Delta's AI-based price-gouging https://pluralistic.net/2025/07/30/efficiency-washing/#medallion-clubbed

Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
Sydney: The Festival of Dangerous Ideas, Aug 23-24
https://festivalofdangerousideas.com/program/
Melbourne: Enshittification at the Wheeler Centre, Aug 25
https://www.wheelercentre.com/events-tickets/season-2026/cory-doctorow-enshittification
Brighton: The Reverse Centaur's Guide to Life After AI with
Carole Cadwalladr (Brighton Dome), Sep 8
https://brightondome.org/whats-on/LSC-cory-doctorow-the-reverse-centaurs-guide-to-life-after-ai/
London: The Reverse Centaur's Guide to Life After AI with Riley
Quinn (Foyle's Picadilly), Sep 9
https://www.foyles.co.uk/events/enshittification-cory-doctorow-riley-quinn
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
A Conversation with Lina Khan (Law and Economy Student
Network)
https://www.youtube.com/live/7Ak5LZllqwE
Will AI ever come alive, and what happens if it does? (BBC
News)
https://www.youtube.com/watch?v=Lzk4o3fPZZE
Waarom jij straks het hulpje van AI bent (VPRO)
https://www.youtube.com/watch?v=tOnvR2fs8CA
Talk Tech Bock (Vera Linß)
https://www.youtube.com/watch?v=3PFjGvQoBgc
"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.

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
New Comic: Cyberbullies
Girl Genius for Wednesday, July 29, 2026 [Girl Genius]
The Girl Genius comic for Wednesday, July 29, 2026 has been posted.
Making an agile version of a Windows Runtime delegate in C++/WinRT, part 7 [The Old New Thing]
Last time, we
fixed the problem of creating a unique_ptr whose
deleter’s constructor was might throw an exception. But
we’re not out of the woods yet.
Let’s take another look at what we have:
if (d.try_as<::INoMarshal>()) {
void* p;
if constexpr (std::is_reference_v<Delegate>) {
p = winrt::detach_abi(d);
} else {
winrt::copy_to_abi(d, p);
}
return
[p = std::unique_ptr<void, in_context_deleter>(p, {}),
token = get_context_token()](auto&&...args) {
if (token == get_context_token()) {
std::remove_reference_t<Delegate> d;
winrt::copy_from_abi(d, p.get());
d(std::forward<decltype(args)>(args)...);
} else {
throw winrt::hresult_error(CO_E_NOT_SUPPORTED);
}
};
}
We had originally broken the rule that the
unique_ptr(p) constructor requires that the
deleter’s default constructor not throw an exception. We
fixed it by constructing the deleter explicitly as a parameter, so
that the unique_ptr constructor can move it into the
stored deleter without an exception.
But wait, if an exception occurs in construction of the
in_context_deleter, the raw pointer we created in the
previous block will be leaked. It owns a reference count but
doesn’t clean up in the case of an exception.
We can fix this by creating the deleter first.
if (d.try_as<::INoMarshal>()) {
in_context_deleter del;
void* p;
if constexpr (std::is_reference_v<Delegate>) {
p = winrt::detach_abi(d);
} else {
winrt::copy_to_abi(d, p);
}
return
[p = std::unique_ptr<void, in_context_deleter>(p, std::move(del)),
token = get_context_token()](auto&&...args) {
if (token == get_context_token()) {
std::remove_reference_t<Delegate> d;
winrt::copy_from_abi(d, p.get());
d(std::forward<decltype(args)>(args)...);
} else {
throw winrt::hresult_error(CO_E_NOT_SUPPORTED);
}
};
}
If there is an exception constructing the custom deleter, it happens before we initialze the raw pointer, so there is no leak of the reference owned by that raw pointer.
Okay, so are we done now?
Nope.
More next time.
The post Making an agile version of a Windows Runtime delegate in C++/WinRT, part 7 appeared first on The Old New Thing.
Russ Allbery: Review: Midlife in Gretna Green [Planet Debian]
Review: Midlife in Gretna Green, by Linzi Day
| Series: | Midlife Recorder #1 |
| Publisher: | Linzi Day |
| Copyright: | July 2022 |
| ISBN: | 9798837010774 |
| Format: | Kindle |
| Pages: | 464 |
Midlife in Gretna Green is a self-published fantasy novel. It's urban fantasy in the sense that it's set in our world but with magic that most people don't know about, but the primary setting is a parish in rural Scotland and therefore the genre is not urban in that sense. It was Linzi Day's published first novel.
As the story opens, Niki McKnight is a widow in Manchester, England with a job in the Register Office she likes, a boss she hates, and a Bichon Frise dog she adores. In the year since her husband Nick died, she's put her life on hold and made as few decisions as possible, despite some concerned pushing from her best friend Aysha. The death of her grandmother is not entirely unexpected, but her inheritance is about to upend her life.
Niki assumes that her grandmother has a modest cottage and a small estate, and therefore being the named heir will mostly involve cleaning up the details of a modest life. She is caught by surprise by a requirement in the will that she live in Gretna Green for a year and a day in order to inherit. Her initial reaction is to treat this as an absurd impossibility given her life and job in Manchester, but she slowly realizes something strange is going on. Her grandmother's lawyer is lying to her, he refuses to tell her the value of the estate and seems to think it's more valuable than she expected, and her grandmother's tiny cottage does not seem to be following the seasons of the rest of the world. There is something magical at work.
I will not spoil the rest of the reveal. I will say that this is a magical house book because, if you are anything like me, that is why you will want to read this series. There are not enough magical house books, and this is one of the better kind that allow the house to be a full speaking character.
Midlife in Gretna Green is an unapologetic fantasy of personal agency. Niki starts the novel with a miserable manager, a messy pile of unread mail she doesn't want to deal with, and a lot of personal emotional baggage. She gets handed a position that requires and rewards standing up for herself and being decisive. It comes with a pile of unresolved but not horribly complex problems that were waiting for someone who would listen, make sensible decisions, and treat other people with respect. Oh, and there are a few assholes in the way, but they seriously underestimate the power she has to put a stop to their bullshit.
This is the sort of book that traditional publishers tended not to buy (although Day apparently did get an offer for this one and turned it down), and I'm not sure why. Editors thought protagonists should have to work harder for their payoff? Some lingering Calvinist dourness in English language publishing mistrusted triumphant books? Obvious wish fulfillment was considered embarrassing or low-class and thus didn't warrant publication? This didn't apply to the endless bildungsromans about magically talented boys, so some level of sexism was probably in play. Maybe this is finally changing? It reminds me of the bias against romance novels and their guaranteed happily ever after, and in the case of romance there was too much money for publishers to leave it on the table.
In any case, the growth of self-publishing has created an alternative market that let these books reach an audience and I for one am here for it. A lot of wish-fulfillment books, and a lot of self-published books, are not very good, but the ones that have a spark of originality and character can be a delight worth tolerating the somewhat rocky editing and pacing problems that a full editorial staff might have cleaned up.
I loved reading books about kickass women who took no crap and fixed their lives up exactly how they wanted them to be. But how did they get to be that way? They always started out awesome in the books. Seriously, did they kick ass at sixteen? Or did their superpower kickassery not kick in until they were thirty? Forty? If so, then I was screwed. Would I need to wait till I was fifty or until a genie arrived offering wishes? I already felt as if I’d spent my whole life waiting for something wild and wonderful to happen.
Niki is a Specific Type to a somewhat hilarious degree, and I'm not sure if Day is playing into that intentionally or if she's projecting herself into the book. The amount of self-insertion is not zero: Day also lives in Gretna Green, owns a Bichon Frise, and worked as an assistant registrar and civil celebrant. Niki also drinks wine regularly, has a psychic gift, occasionally reads tarot cards, is an accommodating pushover at work who struggles to say no to her abusive boss, has impostor syndrome problems, and swears by a fictional self-help book about grief that provides the quotes at the starts of chapters. There is a cat, because of course there's a cat.
(The fictional self-help book is a spot-on parody played entirely straight in the story. I think Day is having some fun with the reader? I can't tell!)
This is what I mean by unapologetic. It's easy to read Niki as a stereotype, but she's a stereotype a lot of real people can identify with and there's something highly satisfying in watching her find her footing. I like wish fulfillment books; it's fun to see someone's wishes come true! Particularly in the year of 2026, there's something immensely satisfying in seeing an ordinary, insecure person get a massive amount of power and use it to make the world better. I don't need everything to be hard, fraught, and laden with costs in fiction, although I wouldn't want every book I read to be like this.
Also, the world building is great. It's not polished; there's a bit of a grab bag feeling to it, I'm dubious the magic system has any underlying rigorous rule set, and Niki's powers, once she has access to them, are more of a semi-sentient genie than a skill she has to learn with hard practice. But the magic is fun. The sentient house is one of the best characters, particularly after Niki realizes how underused it has been, and I am a sucker for any good sentient house book. The cat is a far more interesting character than I first thought she would be. And Niki's new magical job is more complicated and less typical than the normal Celtic-inspired fantasy that I thought it was going to be at first.
My primary warning about this book is that Niki starts out beaten down and grieving her dead husband, and it took me about five pages to decide that her dead husband was a complete piece of shit who was not worth any of the grief Niki puts into him. She also doesn't stand up for herself for the first hundred pages or so, which made me want to yell at the book a few times. Both of these problems go away farther into the book, and Niki does eventually figure out that Nick was abusive trash, but I was relieved when the "make endless excuses for worthless men" portion of the story was finally over. You have to stick with it until Niki gets brave enough to try being the protagonist; once that happens, it becomes great fun.
It is fairly obvious that Midlife in Gretna Green was self-published, and I wish it had gotten the editing that it deserved. My copy had a couple of obvious formatting errors, the plot veers about more than was strictly necessary, and I think a careful editing pass could have tightened the writing by about fifty pages or so without losing any important detail. If that sort of thing bothers you, make sure you're in self-published fiction mode before starting this one. But it also has that irrepressible, bubbling-with-ideas feeling of a book where nothing has suppressed the author's enthusiasm. It's a very grabby book; once Niki starts embracing her new life, I could barely put it down.
If you're in the mood for a good fantasy wish-fulfillment story that has no romance and a whole lot of "why are things run this way, no, we're changing that," highly recommended. I had so much fun with this book, and the series is currently making the rounds of my whole family. Don't read this when you're looking for something challenging and literary and deep; save it for when you desperately want to watch someone just fix something for once, damn it.
Followed by Painting the Blues in Gretna Green, which I have already read, breaking my usual rule of writing reviews before reading the next book in a series.
Rating: 8 out of 10
Measuring LLMs’ Ability to Perform Cryptanalysis [Schneier on Security]
There’s new benchmark measuring AI’s ability to perform mathematical cryptanalysis. Anthropic’s frontier model actually found new attacks.
The benchmark: “CryptanalysisBench: Can LLMs do Cryptanalysis?” The idea is to benchmark the ability of LLMs to discover new mathematical cryptanalytic attacks against a series of historical algorithms.
Abstract: Cryptanalysis—the task of finding attacks against cryptographic schemes—its at the intersection of mathematical reasoning and cybersecurity, two areas where LLMs have advanced fastest. Cryptanalysis represents both a clean testbed for frontier reasoning (as practical attacks can be automatically verified) and a domain with unusually high stakes, since the primitives under study underpin our digital security. In this paper we ask whether LLMs can do cryptanalysis, and find that the answer is increasingly yes. We introduce CryptanalysisBench, 191 tasks across six families of cryptographic primitives (block ciphers, hash functions, etc.) drawn primarily from four NIST standardization competitions. Our benchmark consists of three tiers: (i) primitives with known practical breaks; (ii) primitives with no known practical break, evaluated both at full strength and as scaled-down variants; and (iii) a challenge set of production primitives at the frontier of cryptanalysis. Five frontier models (Claude Opus 4.8, Sonnet 5, Mythos 5, GPT-5.5, and the open-weights GLM-5.2) break 65%86% of Tier 1 schemes, 612 Tier-2 schemes at full strength, and 2461 across all scaled-down variants. Beyond deriving known results, models produce novel cryptanalysis, such as a key-recovery attack that exploits a design flaw in the SpoC AEAD and an error in KINDI’s published CCA-security proof, both to the best of our knowledge not previously known.
We release CryptanalysisBench as a tool to help track if (or when) AI cryptanalysis becomes a serious factor and as a scaffold for stress-testing candidate schemes before deployment. The attacks that the benchmark already surfaces are an early snapshot of a fast-moving frontier that may soon match, and in places exceed, the published state of the art.
Anthropic used the benchmark to test Mythos Preview, and found new vulnerabilities in Hawk and reduced-round AES.
Still early results, but this is definitely something to watch.
SlashDot thread.

yesssss
San Francisco: Don’t Fall for Industry Defense of Surveillance Pricing [Deeplinks]
The concept of “surveillance pricing” is just one part of a much larger problem and business model: corporations maximizing their profits by invading our privacy. The all-too-common business model is to systematically harvest, collate, and store as much of our personal data as possible, and then monetize it through use and sale. When it comes to surveillance pricing, that looks like corporations offering the same product to two different people at two different prices, based on harvested personal information. That's why EFF supports A.B. 2654, authored by Assemblymember Chris Ward, which bans this harmful practice.
As an organization based in San Francisco, EFF was proud to learn that the San Francisco Board of Supervisors had also introduced a resolution to similarly support the legislation. However, we were disappointed to learn the San Francisco Board of Supervisors has since stalled a vote on the resolution stating their own support for A.B. 2654 after receiving an email from the San Francisco Chamber of Commerce criticizing the bill using well-worn and debunked concerns. We’ve sent the Supervisors a letter asking them to reconsider.
Banning surveillance pricing would be good for consumers. The FTC has found that companies will set higher prices based on personal information. “For instance,” the FTC found last year, “if a consumer is profiled as a new parent, the consumer may intentionally be shown higher-priced baby thermometers on the first page of their in-app search results, based on their residential zip code and time of purchase.” Let's say that again: the U.S. government has found that companies may seek to use surveillance pricing to charge parents searching for a thermometer in the middle of the night more money in a time of need.
Privacy is a human right, not something that people should understand as a currency to give away or protect based on how it will impact the price of groceries. EFF has long opposed pay-for-privacy schemes, in which a company charges a higher price to a customer who refuses to submit to processing of their personal data. Surveillance pricing is another version of that practice. You should never have to worry that your privacy rights depend on how much you make.
At a time when prices for everyday goods continue to climb, some surveillance pricing defenders note that using personal information could lead to lower prices for some consumers. Yet some recent studies indicate there will be losers and winners based on factors such as whether a consumer is willing or able to switch products. Who loses or wins also will turn on the accuracy of the underlying data – yet surveillance pricing is often based on false information.
That said, even if surveillance pricing has the capability to lead to lower prices (which it often doesn't) we oppose it as just another way that corporations try to make customers pay for their privacy.
The San Francisco Chamber of Commerce’s concerns are fully addressed in the text of A.B. 2654. The Chamber raises questions about how businesses will comply with the law. But the bill is quite clear: “a retailer shall not engage in surveillance pricing.” It also has a clear definition of what “surveillance pricing” is. The banned practice is defined as: “[i] a customized price for a good for a specific consumer or group of consumers, [ii] based, in whole or in part, on personally identifiable information collected through electronic surveillance,” including if that information is “acquired from a third party.” In other words, “surveillance pricing” is a customized price based on personal information.
The SF Chamber’s letter also asks about the bill's “treatment of discounts and loyalty programs.” In this way, too, A.B. 2654 is quite clear. The bill includes three broad carveouts that ensure it doesn't disrupt loyalty programs and discounts:
An opt-in senior discount to the movies is not the problem. The systematic collection of all of our personal information to determine whether someone is a senior and if so whether they should pay more or less for that matinee is.
As we said in our blog post outlining our support for this bill:
Surveillance pricing is very similar to online behavioral advertising, a business practice that EFF urges governments to ban. Both practices incentivize all businesses to collect as much of our personal data as possible, in order to later monetize it. Both practices lead some businesses to collate and store our data into dossiers about us for later use. Both practices use these surveillance-based dossiers to manipulate and limit our economic choices, by altering the advertisements and prices we see online.
We urge the San Francisco Board of Supervisors to join the coalition of groups that support A.B. 2564, and stand against companies mining our personal information to charge us different prices for the same thing.
You can read our letter to the Supervisors here.
Learn email self-defense: Hands-on GPG with GNU/Linux with Greg Farough and Heshan de Silva-Weeramuni [Planet GNU]
August 14, 2026 at 17:30 EDT.
Evaluating a program’s free software licensing with Craig Topham [Planet GNU]
August 15, 2026 at 20:15 EDT.
Too many eyeballs? Free software security in the LLM era with Sean O'Brien [Planet GNU]
August 8, 2026 at 16:30 EDT.
Can we route around the app stores? With Sean O'Brien [Planet GNU]
August 16, 2026 at 16:00 EDT.
Reverse engineering binary blobs on mobile with Rob Savoye [Planet GNU]
August 6, 2026 at 14:00 PDT.
How to fight DDoS attacks from the command line with Michael McMahon [Events]
August 14, 2026 at 19:00 EDT.
A new this.how page for RSS.chat. I'll point to it from blog posts.
[$] Progress toward compiling Linux with gccrs [LWN.net]
The gccrs project, which is creating a Rust frontend for the GCC compiler, has spent the first half of 2026 focusing on compiling the Linux kernel. By testing the compiler against the kernel crates, the development team has made significant progress toward generating correct code for other Rust programs. As detailed in the project's weekly and monthly reports, this effort has uncovered and resolved problems in areas such as attribute handling (described in the report for February), name resolution, and resource management (both detailed in the May report). Currently, the compiler can only handle simple standalone programs, but that situation could change rapidly in the coming months.
Why Are Gay Bars Building Databases of Their Patrons? [Deeplinks]
Recent reports have raised alarm about the use of PatronScan, an ID-checking and face-scanning system, at multiple LGBTQ+ bars in San Francisco’s Castro neighborhood. Much of the attention has focused on reports that the system photographs patrons as they enter venues and questions about whether those images are used for facial recognition.
A broader privacy concern also deserves scrutiny. For years, PatronScan has marketed itself not just as an ID-verification tool, but as a system that allows bars and clubs to identify patrons, keep records about them, and share information across venues. As one news article published in 2019 documented, PatronScan built a network that allowed participating bars to flag patrons and share information about them with other establishments.
And in California, it’s not at all clear how PatronScan’s business model of scanning IDs and sharing the information from those scans with other bars comports with the law. California’s ID privacy law, which was amended in 2018 to add ID “scans,” states that no businesses shall “retain or use” any information from a scanned ID card except for limited purposes such as to verify age, comply with a legal requirement, or prevent fraud.
A venue cannot claim to be a safe space while feeding its patrons’ data to a third party database.
Californians should be deeply concerned about businesses that collect information from government-issued IDs and use it to build databases about where people go, whom they associate with, and whether they should be allowed into other public gathering places. That concern is especially strong in LGBTQ+ spaces, which have long served as refuges for people to go without being tracked, monitored, or put on lists.
We reached out to Patronscan with questions regarding their practices and their views on California ID law. They referred us to their published FAQ question “Is Patronscan privacy compliant in California?” which claims that the use of Patronscan kiosks is legal in California. They also said “Patronscan does not do facial recognition in North America, or any kind of automated analysis of the ID or the live photo image.”
In 2018, the California Legislature published bill analyses (on that year's AB 2769) that went into detail about PatronScan’s business. Reviewing PatronScan's own materials, the California Senate Judiciary Committee found that the company had collected and retained information on 561,087 customers in Sacramento alone during the first five months of 2018—a remarkable figure for a city whose population had only recently topped 500,000.
Lawmakers also found that at that time, PatronScan retained information for at least 90 days or longer in some cases, shared information among participating bars, and maintained bans that lasted an average of more than 19 years. A PatronScan “Public Safety Report” used 10,000 scans collected on a single day to report on “where customers live, how far they have traveled, and how many different venues the customers patronized.”
This was not simply checking IDs at the door. PatronScan was building a database.
An immigrants’ rights group, the Coalition for Human Immigrant Rights (CHIRLA), wrote about its concern at the time with these growing ID databases, saying that “placing individuals on a database that labels them a "threat to public safety" has “significant immigration consequences that could lead to deportation, revoking of current status, or denial of future immigration relief.”
Today, Patronscan states that it retains personal information about all customers for 21 days, and about flagged customers for up to five years. This includes the customer’s name, date of birth, photograph, gender, and zip code. It also includes the dates and times that the customer entered particular bars. Such databases are a grave privacy threat. Personal data is routinely stolen by thieves, misused by a company’s employees, seized by government agencies, and diverted to new purposes by a company’s executives.
In 2018, California lawmakers closed what they viewed as a loophole. Existing law already prohibited businesses from retaining or using information obtained when they “swiped” a driver's license, except for the narrow purposes of legal requirements (like a judicial warrant) or “preventing fraud, abuse, or material misrepresentation.”
After reviewing companies like PatronScan, the Legislature amended the law to make clear that the same restrictions that apply to businesses that “swipe” ID cards also apply when those IDs are “scanned.” PatronScan opposed that change, arguing it wanted to preserve the ability to share information among bars so participating venues could decide whether to admit patrons.
The bill became law anyway. Yet PatronScan continues to market and sell a system that apparently retains information from scanned IDs, and allows participating venues to flag patrons and share information across its network.
At a minimum, that raises serious questions about how those practices fit with California's existing ID privacy law. Bar and nightlife venue owners who utilize PatronScan should think twice about its effects on their customers, and consider going back to standard, visual ID checks. These physical checks have been effective at keeping underage patrons out of 21-and-over venues for decades, and don’t present the serious privacy dangers of creating a private database of bar patrons.
For venues serving vulnerable communities like immigrants or the LGBTQ+ community, the stakes of using this technology are even higher. It’s disappointing and alarming to see some of California’s more well-known LGBTQ+ nightlife spots instead lining up as PatronScan’s early adopters. A venue cannot claim to be a safe space while feeding its patrons’ data to a third party database. These businesses should reject PatronScan, return to the standard ID checks that every other bar has been able to utilize, and prove to their customers that their privacy and security still matters.
Farmers Are Getting Control Of Their Equipment Back [Deeplinks]
For years, John Deere had actively made repairing their tractors near-impossible for anyone but itself and the few "authorized" repair shops—regardless of the ability of its customers to actually visit such shops. Now, in a major win for farmers and right to repair advocates, John Deere must soon provide farmers with not just the tools and resources to finally repair their own John Deere equipment, but also access to future updates for said equipment.
In 2025, the Federal Trade Commission (FTC) brought a suit against farm equipment manufacturer John Deere, alleging John Deere used their control over equipment repair tools and resources to limit the ability of farmers and independent repair providers (IRPs) to repair John Deere equipment. Earlier this month, John Deere reached a settlement with the FTC in which they will immediately make available a tranche of repair resources, then continue to make further resources available until the end of the year. Five states joined the FTC in this suit, and over the next 10 years these states will work alongside the FTC to ensure John Deere complies with this settlement.
It is worth noting there is a second, farmer-initiated antitrust lawsuit against John Deere, also concerning a farmer’s right to repair their own equipment. In April, John Deere agreed to a $99 million settlement in that case, which also includes right to repair provisions.
This fight is just one example of how, as machines become increasingly computerized, companies like John Deere restrict your ability to repair machines behind software subject to legal regimes that don’t just lock down repair, but make unauthorized repair a potential criminal offense.
John Deere’s market dominance in farm equipment led to an extraordinary power over access to the tools and resources of repair. John Deere actively restricted who had access to repair tools, and monopolized who could do the repair. This revenue stream—and control of it—is built into the business models of a lot of the technology we buy today. It also encourages companies to move away from the kinds of devices that can be easily fixed at home to ones that offer bells and whistles no one wants but makes repair difficult—like app-enabled toasters.
This whole saga with John Deere has been an exemplar of the greater need for right to repair laws, policy, and enforcement. There was a time when you bought a tractor and with some know-how and a manual could fix it yourself. It is easy to envision why someone with John Deere farm equipment might find it inconvenient to wait for John Deere approved repairpeople to come and fix any broken equipment. Especially when it meant waiting for days or weeks. Especially if it meant their crop was withering on the vine. This settlement will help ensure this is no longer the case.
But it’s not just about farm equipment; If you can’t fix it, you don’t own it. While some might feel more willing to agree they “shouldn’t” futz with laptops or smartphone, it still stands that — whether it’s farm equipment, a car, a laptop, or even your phone — if you legally cannot fix it yourself, if you must go hat in hand to an “approved provider,” you are at the mercy of a corporation. It is why EFF continues to support right to repair laws that ensure people truly own what they buy. And it is why EFF continues to fight for exemptions to the law that makes it most difficult to tinker and repair your own devices.
Teaching Coding When AI Can Write the Code [Radar]
For as long as we’ve taught programming, the student’s code has provided a window into the students’ thinking. Errors, the code structure, the awkward working solution—all of it showed how someone reasoned and where they got stuck.
It was never a clean window. Students have always copied, crammed, and borrowed, sometimes turning in work they didn’t fully understand. But the code still left clues. Generative AI has changed that: A finished program now tells us more about a student’s prompts than their ideas. And here’s the part that should unsettle us—often, the better the code looks, the less we can say about what the student actually learned.
This raises a bigger question: If AI can write code, should we still teach coding? I believe the answer is yes, at least for some students and situations. But that’s another topic. Here, I want to focus on the next step: If we continue teaching coding in a world with AI, how can we know if students are really learning?
Some schools have responded by trying to catch students. They use AI detectors, surveillance tools, locked-down browsers, stricter rules, and clearer honor codes. This has also led to more suspicion.
Some of these responses make sense. Teachers want to protect learning, and schools want to keep things fair. But using detection as the main way to assess students is weak. Stanford researchers found that popular AI detectors often falsely flagged writing by nonnative English speakers, with 61.22% of TOEFL essays in one study marked as AI-generated. OpenAI even retired its own AI Text Classifier in 2023 because it wasn’t accurate enough. If the company that created the tool can’t reliably detect AI, it’s probably not a good idea to base your honor code on it.
But detection isn’t the real issue. Even if we had a perfect detector, we’d still be asking the wrong question. Instead of asking, “How do we stop students from using AI?” we should ask, “How do we teach coding in a world with AI, making use of its benefits, while still being able to see if students are learning?”
We’re seeing this challenge with students at AET, the Arts and Entertainment Technologies Department at the University of Texas at Austin. Although my usual home is Computer Science, it so happens that AET is within the College of Fine Arts at UT, which offers many other ways to learn and assess: studio work, critique, rehearsal, revision, and performance.
In the arts, the final piece has never been the whole story. A painting doesn’t explain the choices behind it. A performance doesn’t reveal the rehearsals. A design board doesn’t show the discarded versions. A composition doesn’t tell you where the student struggled or what they finally learned to hear.
Art education has developed practices that focus on visible progress. Students bring in sketches and drafts, discuss influences, revisions, and failures, and rehearse, perform, and critique each other’s work while it’s still in progress.
At AET, we teach creative coding, which means programming to create art, design, games, or experiences. That doesn’t mean coding for poets. Our students—game designers, web developers, and programmers—start from scratch and learn advanced concepts in tools like Processing and p5.js. In the creative coding tradition, a program is often called a sketch, borrowing the term from the art world. It means something temporary, exploratory, and open to change—something you make, test, revise, and share.
So in creative coding, we were already leaning toward the studio model of sketches, experiments, iterations, and critique. Now we’re pushing that further as we rethink how we teach coding in an AI world. Here are three things we’re already using or actively developing.
We run the class like a studio. It’s not that work never happens at home, but the most important work needs to be seen in the classroom. Students show their code, including false starts, revisions, the choices they made, and the reasons behind them. Assignments are no longer just things you submit—they become projects you develop in public.
AI isn’t banned from the classroom. Instead, it’s treated as a helpful assistant to learn from. Students share prompts and techniques. They use AI, Google, Stack Overflow, classmates, or any other resources.
But you still need to take responsibility for your work. If you submit or present it, you must explain what the code does, why you made those choices, and how it works. If I need to ask your AI to understand your code, something is wrong. Getting help is fine, but hiding behind that help is not.
You can’t outsource to AI what the whole room watched you build.
A real studio needs students talking out loud together in the room every day. This also helps with another issue that isn’t about AI. Many people say students today are quieter than in the past. While this is mostly based on stories rather than long-term studies, these stories are common and consistent. Faculty on all types of campuses talk about silent classrooms and students who hesitate to speak up, especially since 2020.
Whatever the reason, this silence can be changed, and the solution is the same as for AI challenges: encourage students to participate. Communication is one of the most important skills in any career, including explaining ideas, defending choices, and persuading others in real time. Students don’t develop these skills by just submitting AI-guided work online. When they share their work publicly, it not only prevents AI misuse but also helps them build the skills they need most.
We know the usual pattern: A student asks, AI answers, and the student copies. We’ve tried to invert this. In our new approach, the AI works with the student on a set of topics, engages them in a conversation they must navigate, and ultimately assesses how well they understand the material, which leads to a grade.
This idea has a research background that goes back before ChatGPT. Teachable-agent systems like Betty’s Brain showed that explaining—even to a software agent—forces students to organize their knowledge, make connections clear, and find gaps. Our model uses this insight differently. The student isn’t teaching the bot. Instead, the student is having a conversation with it, learning, discussing, debating, and showing what they understand.
The Vera Molnár chatbot at the University of
Texas at Austin
How did we do this? With fairly simple prompt engineering, we created an avatar chatbot of Vera Molnár (1924–2023), a pioneer of algorithmic art. The bot takes on Molnár’s role, drawing students into conversations about randomness, computation, generative art, and creative choices. Her practice sits exactly where creative coding students need to think: between rule and variation, system and choice, computation and visual judgment.
A system prompt sets the topics and types of questions to ask. The bot goes through these with the student, asks for more detail on unclear answers, and keeps following up until there is proof of understanding. At the end, it reviews the conversation against a rubric, giving us a clear record of which ideas the student covered, where they struggled, and how well they improved.
Besides the assessment, which is often accurate, the transcript becomes a different kind of proof, showing what a typical assignment might hide. What did the student notice? What did they misunderstand? Could they connect the concept to the code? Could they defend their choices? Could they revise their explanation when challenged?
When we switch the roles, something surprising appears: the one thing a finished submission can’t show.
A student thinking out loud.
Programming has never really had a tradition of performance. Musicians have it, painters have it, and dancers have it. Live coding is starting to change that.
Every semester at AET, students from different disciplines stage an algorave together—short for algorithmic rave. Audio sets, projection pieces, game demos, lasers, drones, experience design. The creative coding class brings live visuals into the live-coding tradition: Code is written and modified in real time, the screen is projected, and the audience watches the editor change as the visuals respond to the music other students are playing.
The Department of Arts and Entertainment
Technologies’ annual AudioPixel Collider algorave, November
20, 2025, B. Iden Payne Theatre, The University of Texas at
Austin
No prerender. No hiding the machinery.
The Live Coding manifesto, written in 2004 by TOPLAP, includes a line that fits every AI-era assessment conversation: “Obscurantism is dangerous. Show us your screens.” This is not just a performance ethic; it’s also an assessment strategy.
A student walks on stage. The projected screen is their editor. The room can read it. The music starts. And they build up a line of code on screen like:
osc(18, 0.08, 1.2)
.modulate(noise(3), 0.25)
.rotate(() => time * 0.1)
.out()
This is JavaScript building visuals in real time. FFTs, chained functions, higher-order manipulations. When you’re manipulating code like that on stage, you’d better know what you’re doing.
AI can help you prepare. Good. Let it.
But once you’re on stage, the question shifts from “Can you copy and paste code?” to “Can you control it?” You can paste code into a file, but you can’t paste your way through three minutes of public debugging while the whole projection turns into a beige rectangle. In a live build, understanding has nowhere to hide.
Student livecoding at the Department of Arts and
Entertainment Technologies’ annual AudioPixel Collider
algorave, November 20, 2025, B. Iden Payne Theatre, The University
of Texas at Austin
Can you read the code, make changes on purpose, and recover when something unexpected happens? That’s fluency: knowing what to do next while the system is still running.
It is very hard to plagiarize panic.
So far, our results are based on our own observations. We haven’t conducted a controlled study or compared different groups, so what we have seen might just be early variation rather than patterns that apply more broadly. For now, these efforts are experiments, not final answers.
Assessment in studio and live performance settings is always subjective and focused on people. It relies on monitoring students’ progress, providing feedback, and observing how they handle challenges. We do not plan to change this core approach.
For the Molnár conversation assignment, students discussed Molnár using an AI system. The AI then created a summary and analysis of each student’s understanding. Teaching assistants reviewed this analysis, conducted their own assessments, and assigned grades. In our small experiments, the AI’s assessments using the rubric matched closely with the teaching assistants’ own evaluations.
We also used AI to help grade the end-of-term coding assignment. In this project, students improved an object-oriented game by adding strategies like heuristics, search algorithms, and learned behaviors. Since our teaching assistants had limited experience with object-oriented programming, we developed a detailed rubric and had an AI model use it to evaluate each submission. The AI’s analysis was given to the teaching assistants as support. It helped them see how each project was structured, spot important OOP design choices, and use the rubric with more confidence. The teaching assistants still made their own grading decisions. I was available as the OOP expert for any questions they could not answer. From what I observed, this substantially helped the teaching assistants understand and grade the students’ OOP design work.
More broadly, both approaches appear to enable substantive feedback at a scale that would otherwise be difficult given our current student-to-teaching-assistant ratios.
We spent the first two years of the generative AI panic asking how to catch students using AI—or prohibit it altogether. Wrong question.
The real question is whether the assignment gives students a real way to show and develop their understanding. This view isn’t limited to educators. NVIDIA CEO Jensen Huang recently argued that students should not focus on finding an “AI-proof” subject. Instead, he suggested they consider how AI can help them learn more deeply and develop their skills and sense of purpose. He highlighted storytelling, creativity, design, and judgment as abilities that will stay important even as AI takes over more tasks. This supports a key idea in coding education: The aim is not to prove you didn’t use any tools, but to help students show how they think, make choices, revise, and take responsibility for their work.
These three practices are experiments, not universal solutions. They work especially well in creative coding, where code already has a public, visual, and performative aspect. But they suggest a broader principle: As finished work becomes easier to generate, assessment needs to focus more on process, explanation, revision, and mastery.
This matters outside of school too. A polished memo no longer proves there was real thinking behind it. A working prototype no longer proves product sense. A passing pull request no longer proves the developer made the change carefully and thoughtfully. AI makes production easier, so evaluation must focus more on how people think, choose, revise, and recover—in code review, hiring, and performance management. The artifact is no longer the proof. The process is.
Generative AI didn’t make assessment impossible. It just made a hidden weakness obvious. We were putting too much trust in finished work. The arts always knew better.
Show us your screens.
Thanks to Mike Loukides, Michael Baker, Mk Haley, Elisabeth Robson, and Honoria Starbuck for feedback on this article.
OpenAI. “New AI classifier for indicating AI-written text.” OpenAI Blog, January 31, 2023. Updated July 20, 2023, to note the classifier was no longer available due to low accuracy.
Liang, Weixin, Mert Yuksekgonul, Yining Mao, Eric Wu, and James Zou. “GPT detectors are biased against non-native English writers.” Stanford HAI, July 10, 2023.
Winthrop, R. (2026, May 27). Writing with A.I. weakens your creativity. The New York Times.
TOPLAP. “TOPLAP Manifesto.”
Schell, J., Ford, K., & Markman, A. B. (2025). Building responsible AI chatbot platforms in higher education: An evidence-based framework from design to implementation. Frontiers in Education, 10, Article 1604934. https://doi.org/10.3389/feduc.2025.1604934
Biswas, Gautam, Daniel Schwartz, John Bransford, and the Teachable Agents Group at Vanderbilt. “Technology support for complex problem solving: From SAD environments to AI.” In Learning to Solve Complex Scientific Problems, 2001.
Leelawong, Krittaya, and Gautam Biswas. “Designing learning by teaching agents: The Betty’s Brain system.” International Journal of Artificial Intelligence in Education, 2008.
Tan, Huileng. “Jensen Huang Says It Doesn’t Matter What Kids Study in the AI Era.” Business Insider, May 26, 2026. https://www.businessinsider.com/nvidia-jensen-huang-what-kids-should-study-ai-education-advice-2026-5
DAM Digital Art Museum. “Vera Molnár.” Artist biography and timeline.
The Big Idea: Alex Shvartsman [Whatever]

To mock a classic trope in your own story, one must first unabashedly love that trope. Author Alex Shvartsman is a die-hard sci-fi fan, which gives him the perfect angle to write his own take on things. Follow along in the Big Idea for his newest novel, The Best of All Possible Planets, as we make fun of tropes (lovingly) together.
ALEX SHVARTSMAN:
One day, my son read Candide by Voltaire for school, and wanted to discuss the book with me. I remembered enjoying the novella, but it had been decades ago, and I had never read it in English translation. So I opened Project Gutenberg and dove in. I still liked it, but my main takeaway was this: A loose retelling of Candide (sans a load of 17th Century misogyny) would make for an excellent space opera comedy.
Every writer knows this feeling—sometimes an idea grabs you by the shirttails and won’t let go until you spill it onto the page. The more I thought about Space Candide the clearer the book structure seemed in my head. My characters would travel from planet to planet on a ship O.F. Theseus in search of a MacGuffin, and each of those planets would represent a space opera trope or cliché. Then I would lovingly skewer and deconstruct this cliché in ways most conducive for hilarity to ensue.
The key word is lovingly. I adore space opera, and it was important to me that I poke fun at its tropes as an admiring fan, without coming off as someone disdainful of science fiction. With that in mind, I began making a mental list of tropes and major franchises I wanted to parody, and the list grew fast.
Add to that wacky aliens, an opinionated omniscient narrator, lots of misconceptions about Earth’s ancient past (a.k.a. our era), and corgis.
If that sounds a bit like The Hitchhiker’s Guide to the Galaxy, it should. I consider Guide, along with Futurama, to be both the inspiration and the spiritual godparents of this book.
I wanted to include direct nods to many more books, movies, and TV shows spanning a gamut from the subgenre’s inception with Edmund Hamilton and E.E. “Doc” Smith, to recent works by Ken Liu and Adrian Tchaikovsky. (And yes, a reference to my kind host’s Old Man’s War is in there as well.) There’s an Apologia chapter at the very end listing all the references I could recall myself during the editing process.
I quickly discovered that writing straight-up comedy is so much more difficult than writing action-adventure books with humor in them. Comedy works best in the short form, because humor can get repetitive and outstay its welcome. I did my best to resolve this problem by mixing up different kinds of humor; from wordplay to slapstick, pop culture references to puns (I firmly believe that the only good pun is a terrible pun), absurdity to social commentary. Then I structured the book as a coming-of-age road trip, with characters who grow and change as they experience the galaxy around them. It will be up to you, gentle reader, to judge whether I’ve succeeded.
And if you do like it, it will be in part thanks to the brilliant team who made The Best of All Possible Planets the best possible version it could be. With cover art by Ethemos, brilliant interior illustrations by Anna Butova, Adam Cvijanovic, and Zishan Liu, and audiobook narration by Eli Schiff and Lewis Black (yes, that Lewis Black; this is the first time he’s ever participated in creating an audiobook) they greatly enhanced my work. Any flaws or faults, however, are entirely my own.
Finally—and it should go without saying, but in this day and age it has to be said—although robots and AI are some of the characters in this book, no Copyright Infringement Blender was used to create it. I relied solely on my Natural Stupidity instead.
If you need more humor in your life—and these days, I think we all do—follow the corgis!
—-
The Best of All Possible Planets: Amazon|Barnes & Noble|Bookshop
Wayfire 0.11 released [LWN.net]
Version 0.11 of the wlroots-based Wayfire Wayland compositor has been released. Notable changes include better fractional scaling, per-output ICC profiles, support for additional Wayland protocols, and more.
[$] A report from Debian's new DFSG team [LWN.net]
The DFSG, Licensing & New Packages Team (usually shortened to "DFSG team") was created in October 2025 as part of the ftpmaster team split. Its job is to review packages in the new queue for compliance with the Debian Free Software Guidelines (DFSG), among other things, before the packages are allowed to enter the Debian archive. The change was long in coming, and some questions remained after the split whether it was the right move. Andrew McMillan provided an overview of the team's activities and its current status during DebConf26. While it may be too early to say with certainty, his report suggests that the new division of duties is working out well.
Dirk Eddelbuettel: RcppDate 0.0.7: New Upstream [Planet Debian]

RcppDate ships the featureful date library written by Howard Hinnant to enable use from R packages. This header-only modern C++ library has been in pretty wide-spread use for a while now, and adds to C++11, C++14 and C++17 what is (with minor modifications) the ‘date’ library in C++20. The RcppDate package adds no extra R or C++ code and can therefore be a zero-cost dependency for any other project; yet a number of other projects decided to re-vendor it resulting in less-efficient duplication. Oh well. C’est la vie.
This release syncs with upstream release 3.0.5 made yesterday. We also made two routine updates to the continuous integration since the last release a good year ago. The Debian and r2u packages for this new release have already been uploaded too.
Changes in version 0.0.7 (2026-07-27)
Updated to upstream version 3.0.5
Regular updates to continuous integration setup
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 sponsor me at GitHub.
CodeSOD: Convert Back, Way Back [The Daily WTF]
Windows Presentation Foundation, the XML-based UI framework for Windows, has its own "fun" quirks. One of its core ideas is that controls can be data-bound: that text box is linked to a numeric field in your model class. Type a different number, and the model automagically updates.
That's fine for what it is, but of course you're going to need
to give it some instructions on how to do those kinds of
conversions for your own custom types. And that's where the
IValueConverter interface comes in.
You can write a class which implements that interface, which can
then Convert and ConvertBack. Which, as a
note, I hate that naming convention; which way is "back"? Well,
that's controlled via an annotation. This is some of Microsoft's
sample code, from their docs:
[ValueConversion(typeof(Color), typeof(SolidColorBrush))]
public class ColorBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Color color = (Color)value;
return new SolidColorBrush(color);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
I don't particularly like this API, but again, it is what it is. This converts a color into a brush, and returns a null when we try and convert back, because that's not a valid operation.
Which brings us to Fredrika's submission. You
see, there is a problem with this approach. If you bind a text box
to a double? field, everything is fine and handled
automatically- except the built-in converter doesn't turn empty
strings into nulls. So one of her co-workers wrote this:
public class StringToDoubleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double? parsed = value as double?;
return parsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string parsed = value as string;
if (parsed == string.Empty)
return null;
return parsed;
}
}
Convert doesn't do anything.
ConvertBack takes the string from our text box, checks
if it's empty, and if it is, returns null.
Now, you'll notice something about the code here: when it
Converts, it casts value as double? and
when it ConvertBacks, it casts value as
string. So that's where it's reaching out to the .NET
Framework's built-in conversion functions.
I'm not entirely sure where to point to for the WTF, and some of
that may be because I've had the good fortune to never have to use
WPF. I don't like WPF's approach, but the developer behind this
code isn't helping matters. Certainly naming variables
parsed isn't clarifying matters.
I don't have a nice bow to put on this one. I just don't like any of this. I don't like the converter API. I don't like this implementation of it. I don't like trying to treat empty text boxes as null values, which I'm sure is correct here, but boy howdy do I suspect there'll be problems in the future.
Security updates for Tuesday [LWN.net]
Security updates have been issued by AlmaLinux (grafana and libreswan), Debian (openjdk-11 and openjdk-17), Fedora (opkssh, perl-Mojolicious, and rpm), Mageia (libyang, memcached, nginx, packages, and sqlite3), Oracle (.NET 8.0, acl, buildah, compat-openssl11, compat-poppler022, dogtag-pki, git-lfs, glibc, go-fdo-client, golang, httpd:2.4, jackson-annotations, jackson-core, jackson-databind, jackson-jaxrs-providers, and jackson-modules-base, kernel, libpq, LibRaw, maven:3.8, mysql8.4, nodejs:22, nodejs:24, openssl, podman, poppler, python3.14, samba, sssd, tomcat, tomcat9, vim, and yggdrasil), Red Hat (gstreamer1-plugins-bad-free), SUSE (afterburn, alsa, apache-ivy, avahi, aws-nitro-enclaves-cli, chromium, cifs-utils, cockpit, cockpit-machines, cockpit-packages, cockpit- podman, cockpit-repos, cockpit-subscriptions, containerd, curl, docker-compose, freetype2, gawk, glib2, google-cloud-sap-agent, gpg2, gstreamer-plugins-bad, gzip, helm, ignition, ImageMagick, jackson-annotations, jackson-bom, jackson-core, jackson- databind, jackson-dataformats-binary, jackson-modules-base, jackson-annotations, jackson-core, jackson-databind, java-11-openjdk, jline3, joe, jq, kernel, libgcrypt, libknet-devel, libsoup, libxml2, mariadb-connector-c, mcphost, net-tools, nghttp2, opennlp, openssl-1_0_0, PackageKit, pam, patch, pcr-oracle, perl, perl-DBI, perl-HTTP-Date, python-aiohttp, python-cryptography, python-Pillow, python-pyasn1, python-soupsieve, python-tornado, python-tornado6, python-urllib3, python3, radvd, rust-keylime, s390-tools, shibboleth-sp, sssd, systemd, tiff, vim, and wpa_supplicant), and Ubuntu (FreeIPMI, glibc, linux-aws, linux-aws, linux-raspi, linux-aws-6.8, linux-aws-fips, linux-azure, linux-azure-6.8, linux-azure, linux-oracle, linux-azure-5.15, linux-azure-fde-5.15, linux-oracle-5.15, linux-azure-6.17, linux-azure-fde, linux-azure-fde-6.17, linux-azure-fde-6.8, linux-azure-fips, linux-hwe-6.8, linux-ibm, linux-ibm-6.8, linux-nvidia-tegra, linux-xilinx, linux-oracle-6.17, roc-toolkit, and samba).
When the walls came down [Scripting News]
Yesterday's Scripting News was one of the most news-full days in a long time, maybe going back to the rollout of RSS 2.0 in September 2002. If you look at what's there, a post about re-opening the Frontier object database format would be considered the top item on any other day, but it's the last of the untitled posts for the day.
At the top of the page, a surprise that Matthias Pfefferle at Automattic had built a substantial (and unforeseen!) bridge between WordPress and RSS.chat. It builds on the new features. This may turn out to be the moment RSS started being accepted as a social web protocol by the insiders, alongside ActivityPub and AT Proto.
Look at what we've done. I stress we. Matthias didn't need to tell us about what he did until it was done. That my friends is how the web works, that's what I've been trying to show you, and now it has been shown. In a way the clock has gone back to the world before Twitter when events like this happened pretty routinely.
Small pieces loosely joined and all parts replaceable. The web in a sentence. That's what you're buying into when you put your work on the web.
Anyway, now we've got half of the big picture working. Also yesterday, before I knew what Matthias had been cooking up, I wrote a piece about how I see the network evolving. I predict, if this bootstrap works, we will come back here in a year and say things like "If he only knew." But that's how it goes, you tell your story and leave a record of it, and then later you can go back and see what it looked like as it happened, not as you remember it.
I'm proud that I have a record of September 2002 for you all to scroll through. That was when we knew that RSS was going everywhere. NYT support got us the full support of the news industry, and they worked fast in part because it is really simple. :-)
And almost unnoticed, something even I seem to forget -- this is also a new launch for RSS. We're using old reliable RSS 2.0 as specified in 2003, even using one of the elements that had never had been much used. Claude suggested it, I never would have thought of it, a perfect fit. What people may realize but don't realize the importance of, that RSS is extensible. I've accumulated all the extensions I use in my software since the early teens in the source namespace. And that's where the new stuff went. Guess what folks, RSS got an upgrade. First time in a long time. Perhaps you didn't think that was possible.
I played with a lot of names while RSS.chat was in development but decided the name had to be RSS.something. It deserves a lot more love than it has gotten from the tech world. I don't want to hide it, I want it to get a victory parade like the one the Knicks got on Broadway after winning the championship. It's an incredible gift that all that came together the way it did. People think they understand how it happened, but they only understand the BigCo version of how they buried RSS and were proud of it. Well I'm here to tell you that didn't happen. It's still here to pick up the pieces of what's left of the social web, after the VCs got through with it. We're picking up where we left off in 2006.
Because of Claude, we are able to work very fast now as long as we know what we're doing. I'm doing some projects on the side with Claude that are bearing fruit amazingly fast, because we have a very clear idea of what we hope to do. The tools keep getting better, and in this period, the art of creating software has blasted into outer space. It's as if the best transport we had was a horse and buggy and now all of a sudden we have everything we have today, bikes, cars, planes, rocket ships. The challenge is how high do you dare to set your ambition. It seems, based on experience, it doesn't matter how high it is as long as you know where you want to go.
Journalism only sees the threat. This change is on the level of curing cancer. We may have thought it might be possible someday to do what we're doing now, so amazing that as you watch Claude make it happen you get goosebumps and can't help but laugh out loud.
I thought my career was winding down, but now it feels like it's just getting started.
Reminded of a great quote in Godfather III, Michael Corleone says: "Just when I thought I was out, they pull me back in."
Here we go!
PS: A new this.how page for RSS.chat. It has a little directory to the big spots you might want.
Time for something new... [RevK®'s ramblings]
Latest project is a time server.
So why? Well, they exist - you can buy a really nice LeoNTP server, with impressive specs. We see response times of 0.1ms, and it claims 100,000 requests a second. They also have a PPS output, and can do a calibrated 10MHz output apparently (I can't do that).
Can I get close using an ESP32? Well, sort of.
It should be simple, in theory - a GPS module, capture CPU cycle count on PPS interrupt and use to get clock rate. Capture NMEA to get time for PPS. Capture cycle count on NTP packet and use reference cycle count, clock rate, and reference time to know exact time of day to fill in NTP reply. yay!
Of course it is never entirely that simple. I did all this and got a working system, but I could do better. My latency as measured on a FireBrick was 2.5ms. I did averaging of the PPS intervals to get a more consistent clock rate, and often the standard deviation on that was below 10ns! But not always. I then did a best of last 5 seconds in terms of a PPS interval to use as a reference - that way the odd delayed interrupt had no impact. That seems to work.
One thing I wanted was PPS interrupt at higher priority than Ethernet, but all GPIOs on an ESP32 are the same interrupt source. Bugger. Do a search and you see plenty of people pissed off about this. I found a fix, make the PPS a PCNT (Pulse count) which has an interrupt (count to 1) which can be set separately to the Ethernet interrupt. There is a trick to remember.
The PCB design is not that hard now I have cracked Ethernet. A main PCB, with USB-C, DC input, PoE, and Ethernet.
I have since made an even more compact design.
This then connects to a GPS module, which you can hang out the window (or better, fit in a Stevenson screen). Link with 5 core cable (solid cat5 is ideal), and it can handle a few metres.
Then put both in a nice 3D printed case. See https://shop.revk.uk/ if you want to buy. £60 not £600!
The fact my response times where around 2.5ms was not ideal. I wanted better, but how.
First bodge was hook in to the Ethernet driver receive code and check for NTP packets as they come in, and do a direct reply. I got latency down to 1ms, yay!
But I can do better :-)
Scrap the Ethernet controller altogether. Write my own custom low latency driver. Dedicate CPU1 to PPS and Ethernet only. My custom driver can...
And guess what - latency down to 0.1ms - bang on what I wanted. Indeed I have seen 0.077ms even.
Now, the logic is fun - it makes the Ethernet no use for anything but NTP. So I have made it (a) optional, and (b) normal Ethernet for first 2 mins so you can access it via Ethernet if needed (assuming you can control power/PoE to reset).
But once switched to low latency NTP only Ethernet, you have to use the WiFi for any access, management, MQTT, and so on.
I found bugs in the Ethernet chip (KSZ8851SNL) which does not check IPv6 UDP checksums correctly!
I also found it almost impossible to convince the Ethernet chip to give me unicast, multicast, and broadcast packets - in spite of a lot of reading the data sheet and trial and error. It is now in promiscuous and relying on the switch to protect it. Even that makes no sense - you have to set "Allow any packet" and "Invert the input filter" which to mean means "allow no packets!". I may yet find a working setting. I have already spent a day on this.
I also found it used edge triggered interrupt with a check in task for ISR set as well on timer, I changed to level triggered and that seems to work without hanging.
I also found it nearly impossible to cleanly decommission the Ethernet driver in ESP IDF. I managed to take over interrupts and kill the task, and that was all. Anything more thorough was a nightmare. But that works.
Well some people are putting in the UK NTP pool, it seems to meet the requirements well and work at a level similar to the rest of the pool.
But it is mainly aimed as being the main server in any business / office. Include with your pool NTP, but being local it will win.
I do not know if it would get close to even 10,000 requests a second, but that is not needed for a typical business, even a large one.
Pluralistic: Discernment (28 Jul 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

As far as I can tell, this dialog between MacArthur prize-winning mathematician Terrence Tao and Chatgpt about "the Jacobian conjecture counterexample" is very impressive:
https://chatgpt.com/share/6a5fdc7a-d6f8-83e8-bbea-8deb42cfed56
Now, the clause "as far as I can tell" is doing a lot of work in that sentence. I am reasonably math literate, up to first-year calculus and a lifetime spent around my father (a mathematician). However, I have never heard of "the Jacobian conjecture," and while I know what all the words in the first paragraph of the relevant Wikipedia entry mean, I can't parse any of the sentences they form:
https://en.wikipedia.org/wiki/Jacobian_conjecture
In other words, I lack the discernment to evaluate the output of the chatbot that Tao exchanged theories with. If you showed me an equally opaque transcript of a "conversation" between a chatbot and a crank with AI psychosis whose math made no sense whatsoever, I couldn't make an a priori judgment about which one was a solid piece of mathematical theorizing and which one was a math-flavored word-salad.
As many skilled programmers can attest, chatbots can produce very useful output – but as even the most ardent AI-assisted coder will admit, chatbot-written code is also full of baffling, obvious errors (and subtle, hard-to-spot ones):
https://pluralistic.net/2025/08/04/bad-vibe-coding/#maximally-codelike-bugs
These errors (which the industry wants us to refer to as "hallucination" – a whimsical, obscuring, anthropomorphizing euphemism) are the reason that reliable AI use requires the discernment that comes from skill and expertise. I use a local chatbot to spellcheck these posts. Chatbots spot all kinds of typos that regular spellcheckers miss:
https://pluralistic.net/2026/02/19/now-we-are-six/#stock-buyback
There's a reactionary group of strangers who seek me out to tell me that I'm a bad person for doing this. These are pointless conversations, mostly because I can barely make out a word over the scraping sounds of all the goalpost-moving these scolding strangers engage in.
They start by insisting that I'm burning down the planet by running a low-CPU load piece of software on my own computer. After I explain that running a chatbot on my machine uses no more carbon than, say, applying a blur effect to an image in my image editor, they tell me I'm unwisely giving my private data to the AI companies. Then I show them the network logs that demonstrate that my local chatbot doesn't send or receive any network data.
Then they turn to the supposed cognitive effects of using a chatbot to find typos in an essay. I explain that I'm not asking an AI to write things for me or explain them to me – I'm asking it to point out where I've forgotten to put a period at the end of a paragraph, or fatfingered a word like "ever" as "every." I even send them the "before" and "after" of an essay after I've corrected some chatbot-identified typos in it:
https://craphound.com/before.txt
https://craphound.com/after.txt
This is when things get increasingly pointless. My interlocutors come up with farcical reasons why it's immoral or dangerous to use this LLM-based spellchecker. They say I'm using too much compute and that I could use a simpler piece of software to do the same thing (which is both untrue and silly – I also run a journaling filesystem on my computer that is vastly overpowered for editing a textfile – who cares?). Or they insist that the mere act of making copies of published works in order to count their elements and the relationships between them is a sin, despite the fact that this standard would kill search engines, the Internet Archive, and the Oxford English Dictionary:
https://pluralistic.net/2023/09/17/how-to-think-about-scraping/
I mean, by all means let's hate the AI companies and work to end their disgusting campaign to pauperize creative workers, but let's not fall into the trap of siding with the media bosses who insist that the salvation of creative labor will arrive when Sam Altman pays David Zaslav for the right to cram the entire Warner catalog into Openai's chatbots:
https://pluralistic.net/2026/03/03/its-a-trap-2/#inheres-at-the-moment-of-fixation
Above all, my interlocutors continue to insist that my LLM-powered, local, open source chatbot spellchecker will make me a worse writer. It's a very strange insistence. My first word processor was a program listing published in a magazine I bought at a corner store and laboriously typed into my Apple ][+. In the 40+ years since, word processors have gotten lots of new features, many of which I thought were useful and many more that I found annoying. There were even some of these features that made the writers who used them worse at writing, in my (expert) judgment.
But from the very start, I knew that you couldn't just trust a spellchecker to correct your documents. I mean, I'm a science fiction writer. I started making up silly words decades before coining "enshittification." I've been telling spellcheckers to fuck off since I learned to type. If you aren't a good writer, spellcheckers are dangerous, and the more "advanced" the spellchecker is, the more dangerous it is.
A few of my collaborators insist that I use Office 365's AI-enabled version of Word to work on documents with them. It's maddening. I estimate the ratio of good suggestions to bad ones that M365 insists on shoving into my face at about 1:100. It's practically unusable – so much so that I often copy the block of text we're working on into a text editor, make my changes, then paste it back into the Word window.
If I were to accept even 10% of these suggestions, my work would be made significantly worse. Putting chatbots into Word pushed it from "annoying" into "enshittening." I certainly understand how relying on a chatbot to make edits to your work could make it worse.
That's where discernment comes in. I have written more than 30 books over the past 25 years. I have lots of experience defending my word choices, and not just against the mechanical judgments of a high-handed spellchecker, but also against overreaching copyeditors and paranoid publisher's lawyers. I know which words I want to write, and I know why I want to write them – and I know when a suggested fix is a good one and when it's wrong or stupid or just plain clunky. When it comes to writing, I have discernment.
That's not true when it comes to higher math. I would no more ask a chatbot to explain "the Jacobian conjecture counterexample" than I would tell my writing students to get a chatbot to suggest ways to fix their stories:
https://pluralistic.net/2026/01/07/delicious-pizza/#hold-the-gravel
I don't know nearly enough about math to ask a chatbot to explain it, or check my work, or even assemble a bibliography of human-authored works I should work my way through if I want to learn about it. If I wanted to understand "the Jacobian conjecture counterexample," I would set aside several days and work my way through that gnarly Wikipedia entry and its references and blue links to related concepts. If I really wanted to understand it, I'd enroll in a course at the Open University or Khan Academy.
All of this has been obvious to me since I first encountered LLM-powered bots. If you understand a subject really well – well enough to discern useful bot output from defective bot output – then bots can be useful. Sometimes very useful, mostly ordinarily useful. For example, I've been writing Pluralistic for about 6.5 years now. I've written 1,683 posts now (1,684 after I hit publish on this one), and the corpus is now getting large enough that I sometimes struggle to find a post I'm trying to reference, even with all my careful tagging and my extensive knowledge of WordPress's URL-line options for searching the database with tag and keyword combos.
I've been toying with the idea of exporting my whole corpus and shoveling it into a local chatbot, so that I can type, "Which post did I talk about the evils of showing people your chatbot output in?" and get a link to the correct essay:
https://pluralistic.net/2026/03/02/nonconsensual-slopping/#robowanking
(Don't follow this link! I will be referencing the essay it goes to shortly; I struggled to find it when I sat down to write today; I'd accidentally tagged it with "at" instead of "ai" and missed the typo when I published it.)
There are very few subjects I have more discernment over than "essays I have written." If I ask a chatbot to tell me which post I'm thinking of, I will instantly know which of its guesses are correct and which ones aren't. No one in the universe is better qualified than me to perform this task. No one ever will be.
Now, as it happens, I know exactly how badly a chatbot can screw up when it comes to my own work, because strangers insist on asking chatbots about me and then, for reasons I find baffling, they send me the output. Please don't show anyone your chatbot transcripts unless they ask to see them. It's embarrassing at best and annoying at worst:
https://pluralistic.net/2026/03/02/nonconsensual-slopping/#robowanking
(There's that reference I promised. You can follow the link now!)
Again, discernment is everything when it comes to getting useful work out of a chatbot. If you don't know anything about my work and you ask a chatbot to explain it to you, you will likely be badly misled. If you are familiar with my work and you ask a chatbot for the best examples where I explain a given subject, you may get a good answer, and if you get a bad one, you'll know it.
The centrality of discernment to productive AI usage is obvious, and that's why I find the insistence that AI can be used as a teaching assistant (or worse, a teacher) so baffling. By definition, a student isn't an expert on the subject they're studying. That's the whole point of studying – to acquire knowledge and thus discernment. Asking students to learn via chatbot explanations is both incoherent and dangerous.
Doubtless, there are ways that teachers might find chatbots useful, but for Christ's sake, don't use them to teach. There's plenty of ways teachers can use chatbots without asking students to learn from them.
Here's an example. My daughter graduated from a big, typical American high school a couple years ago, and I spent her high-school years getting progressively angrier about the bad compromises that her teachers were forced into.
Between "Common Core" and "Advanced Placement," the US system has been highly standardized. Teachers are under enormous pressure to teach specific aspects of specific subjects in a specific order, and students are told that their future life chances turn on their ability to pass high-stakes tests:
https://pluralistic.net/2024/01/16/flexibility-in-the-margins/#a-commons
This gives rise to many frustrations for teachers and students alike, but nothing got my dander up so much as my daughter's math teachers' testing practices. In all of my kid's higher math classes, teachers had a single, prized set of tests, and lived in fear of these escaping into the wild and turning into cheating aids. As a result, teachers collected students' math exams and quizzes and did not return them. Students sat exams, worked through the problems and got their grades – but were not allowed to take home their tests to see where they went wrong.
Look, I know I'm no mathematician, and I know I'm not a math teacher, but I know enough about pedagogy to know that this is crazy. This is like trying to get better at archery by loosing arrows at a target but not checking to see where they hit. It's bananas.
I also understand why the teachers felt they had to do it. Writing test questions that test for specific concepts in a specific order is a lot of work, and generating new tests for every class is the kind of task that would consume time better spent on lesson planning and meeting with students.
It's easy to imagine a teacher who creates prompts for each test question that cause a chatbot to emit a new test paper for each class, along with answer keys. These questions are easily validated by a skilled teacher, who definitionally has the discernment to know whether a test question fits the bill. I could even see vibe-coding a little app to spit these questions out – though again, I would want the teacher to work through the questions each time to make sure they were sound.
Both my parents are teachers. My brother is a teacher. I teach every now and again. Teachers do a lot of repetitive, unrewarding work. They also do a lot of difficult, creative, extremely important work. Good teachers have the discernment to sort good classroom materials from bad ones. They do that already, because just as you don't need an LLM to generate bad spellchecker suggestions, you also don't need an LLM to generate sub-par educational materials. There are plenty of "educational" publishers who'll do that all day long.
AI is a normal technology. That means there are times when it is useful and times when it is pointless or actively harmful. One rule of thumb for chatbots is that they can only provide useful information to experts who have the discernment to ignore the defective output that LLMs always emit. That means that the dream of chatbots as replacements for teachers is a nightmare.
Getting rid of teachers because we all have chatbots is like getting rid of doctors because we all have the plague.

Things with Feathers https://vimeo.com/1188522762/7efe874428?share=copy&fl=sv&fe=ci
Neuromancer — Official Teaser https://www.youtube.com/watch?v=g79GPZSQHBk
Shop worker owned businesses online https://www.workerowned.info/marketplace
Americans — including many Republicans — are losing faith in capitalism, polling shows https://edition.cnn.com/2026/07/23/politics/republicans-capitalism-socialism-poll
#25yrsago How to help someone use a computer https://memex.craphound.com/2001/07/29/how-to-teach-someone-to/
#20yrsago Arrested for taking a pic of a cop arresting someone else https://web.archive.org/web/20060813102257/http://www.nbc10.com/news/9574663/detail.html
#15yrsago Batman logo in equation form https://www.reddit.com/r/pics/comments/j2qjc/do_you_like_batman_do_you_like_math_my_math/
#15yrsago Vindictive WalMart erroneously accuses couple of shoplifting, has husband deported, wife fired, costs them house and car https://web.archive.org/web/20111002102637/https://www.courthousenews.com/2011/07/26/38455.htm
#15yrsago House Committee passes bill requiring your ISP to spy on every click and keystroke you make online and retain for 12 months https://www.eff.org/deeplinks/2011/07/house-committee-approves-bill-mandating-internet
#15yrsago Fuck and the law https://papers.ssrn.com/sol3/papers.cfm?abstract_id=896790&
#15yrsago Bill Nye explains to Fox News why lunar volcanoes don’t disprove anthropogenic global warming https://web.archive.org/web/20110924185725/https://www.mediamatters.org/mmtv/201107280007
#10yrsago North Carolina’s voter suppression law struck down as “racist” https://edition.cnn.com/2016/07/29/politics/north-carolina-voter-id/index.html
#10yrsago Pregnancy-tracking app was riddled with vulnerabilities, exposing extremely sensitive personal information https://www.consumerreports.org/electronics-computers/mobile-security-software/glow-pregnancy-app-exposed-women-to-privacy-threats-a1100919965/
#10yrsago “Tellin The World” 1972 voting PSA aimed at 18-25 y/o working-class voters https://archive.org/details/TellinTheWorld
#10yrsago Trump campaign frisks, then blocks ticketed Washington Post reporter at Pence rally https://web.archive.org/web/20160729170353/https://www.washingtonpost.com/news/the-fix/wp/2016/07/28/a-washington-post-reporter-was-banned-from-a-trump-pence-rally-yesterday-that-should-frighten-you/
#10yrsago Nobel-winning economist Joseph Stiglitz calls Apple’s tax strategy a “fraud” https://web.archive.org/web/20160731112543/http://www.bloomberg.com/news/articles/2016-07-28/stiglitz-calls-apple-s-profit-reporting-in-ireland-a-fraud
#5yrsago Unauthorized cups https://pluralistic.net/2021/07/29/impunity-corrodes/#well-run-dry
#5yrsago Tracking you with accelerometer signatures https://pluralistic.net/2021/07/29/impunity-corrodes/#in-motion
#5yrsago Stories from Black women's customer service hell https://pluralistic.net/2021/07/29/impunity-corrodes/#arise-ye-prisoners
#5yrsago Bankruptcy and elite impunity https://pluralistic.net/2021/07/29/impunity-corrodes/#morally-bankrupt
#1yrago Boss-politics antitrust and the MAGA crackup https://pluralistic.net/2025/07/29/bondi-and-domination/#superjove

Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
Sydney: The Festival of Dangerous Ideas, Aug 23-24
https://festivalofdangerousideas.com/program/
Melbourne: Enshittification at the Wheeler Centre, Aug 25
https://www.wheelercentre.com/events-tickets/season-2026/cory-doctorow-enshittification
Brighton: The Reverse Centaur's Guide to Life After AI with
Carole Cadwalladr (Brighton Dome), Sep 8
https://brightondome.org/whats-on/LSC-cory-doctorow-the-reverse-centaurs-guide-to-life-after-ai/
London: The Reverse Centaur's Guide to Life After AI with Riley
Quinn (Foyle's Picadilly), Sep 9
https://www.foyles.co.uk/events/enshittification-cory-doctorow-riley-quinn
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
A Conversation with Lina Khan (Law and Economy Student
Network)
https://www.youtube.com/live/7Ak5LZllqwE
Will AI ever come alive, and what happens if it does? (BBC
News)
https://www.youtube.com/watch?v=Lzk4o3fPZZE
Waarom jij straks het hulpje van AI bent (VPRO)
https://www.youtube.com/watch?v=tOnvR2fs8CA
Talk Tech Bock (Vera Linß)
https://www.youtube.com/watch?v=3PFjGvQoBgc
"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.

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
Axon Is Another License Plate Surveillance Company [Schneier on Security]
Governments are switching, but I’m not sure it makes a difference:
…some municipalities, including Denver, Colorado, are ditching their Flock arrays. But keep in mind that if they’re only switching from Flock to another brand of license-plate readers, like Axon, it’s like a gambling addict trying to kick the habit by switching from FanDuel to DraftKings.
[…]
Despite what you may read on the Flock website, Axon cameras are pretty effective when it comes to hoovering up personal details that can go far beyond your license plate numbers. That means a municipality that opts for Axon cameras instead of Flock units won’t necessarily reduce the amount privacy its citizens lose through their use.
When new creation technologies arrive, they make the best a little worse and the bad a lot better.
Desktop publishing made every local garage sale sign a lot more legible, but can’t quite replace the hand-kerned and tweaked typography of the era before.
A smartphone in your pocket takes far better video of the family cookout than a super 8 camera ever could, but it’s no match for Hitchcock shooting in 35mm.
Autotune makes an average singer much better, but a world fueled by autotune might not have room for Tom Waits.
Of course, all of this matters more than ever, because AI is the great smush.
Most forms of human expression are smushed by a decent AI. None of it is as good as genius-level human work, and much of it is better than what was average a generation ago.
The smush creates volume, volume that often redefines our understanding of quality. And that volume establishes a new standard, until it gets smushed again.
You would think that the smush creates more demand for distinctive, handmade, human work. And that’s true–remarkable works of genius and originality have a chance to do better than ever. But the smush harms the market for pretty-good or even very-good human work. Because there’s less of that, less genius slips in as well.
Avoiding the tools is optional. Pushing harder than ever for the top tier isn’t.
Intersex: Between The Currents by SpirelleArt [Oh Joy Sex Toy]
Europe’s destructive heatwave [Richard Stallman's Political Notes]
The heatwave in Europe has caused a major crop failure.
Future heat waves are likely to do likewise, but other crop failures will result from flooding, which global heating is also making more likely.
Lobbying giant filmed [Richard Stallman's Political Notes]
*[British] Lobbying giant filmed offering reporter payment for flattering client coverage in national press.*
Jerusalem’s most sensitive holy site [Richard Stallman's Political Notes]
Right-wing Israel extremists seized the al Aqsa mosque in Jerusalem.
The concept of "sacred" presupposes some sort of superhuman entity that can impose "sacredness" on places or things. There is no evidence for such entities exist — no evidence that anything is "sacred" except in the thoughts of humans. That kind of Psychosocial "sacredness" clearly does exist; we can observe it. But it doesn't pre-empt the rights or wishes of anyone else.
In general, when some people want to consider a certain object or place as "sacred" and treat it in a special way, I treat it like doing the same actions in the same place for any other reason. I wouldn't object unless there is some specific problem or issue that affects society, or mistreats people other than them, and mostly there isn't one.
"Sacred" places in and near Jerusalem are a very unusual case. Various groups claim various "sacred" spots, for understandable historical reasons, and those claims conflict. A settlement was made decades ago, perhaps by some colonial power such as Turkey or Britain, and all parties have since followed that settlement for the sake of peace, including Israel. However, in the past few decades violent right-wing extremists began using them as opportunities to agitate and radicalize, until they got power over the Israeli government.
There are many reasons to reproach those extremists, and to put them on trial. This assault is one more. In moral terms, they regularly do worse things, such as stealing Palestinians' land,
olive trees, sheep, and houses, jailing and torturing them,and killing them.
But this could trigger a bigger disaster — it seems calculated to stir up war with Muslims who are otherwise inclined towards peace, and to perpetuate and increase the war with Iran.
New York Times leak [Richard Stallman's Political Notes]
*The real aim of [the bully]'s New York Times leak investigation is to punish reporters.*
A Report You Need to Read [Richard Stallman's Political Notes]
Evidence and admissions demonstrate that the deportation thugs have followed a systematic policy, ordered from high up, of fabricating false accusations of crimes against protesters, journalists, and observers of their actions.

let's see what happens
Windows NT got its name from one of Intel’s failed x86 replacements [OSnews]
Dave Farquhar published an article today about Windows NT 3.1’s place in the market when it was originally released, and while the article is interesting and a fun read, it does mention this:
[…] Microsoft took its nascent code that it intended to form the base of OS/2 3.0, renamed it Windows New Technology, and eventually released it as Windows NT 3.1.
↫ Dave Farquhar
While Microsoft did, in fact, use the “New Technology” branding as a marketing trick, this is not what “NT” originally stood for. Two developers from the original Windows NT development team, Mark Lucovsky and David Thompson, explained all the way back in 2003 that “NT” came from the codename for Intel’s then-new RISC platform, the Intel i860 (Raymond Chen confirmed the veracity of their story). The i860 was the first target platform for Windows NT, and it was codenamed “N-10” – NT.
Finally, it was time to start writing some code. “We checked the first code pieces in around mid-December 1988,” Lucovsky said, “and had a very basic system kind of booting on a simulator of the Intel i860 (which was codenamed “N-Ten”) by January.” In fact, this is where NT actually got its name, Lucovsky revealed, adding that the “new technology” moniker was added after the fact in a rare spurt of product marketing by the original NT team members. “Originally, we were targeting NT to the Intel i860, a RISC processor that was horribly behind schedule. Because we didn’t have any i860 machines in-house to test on, we used an i860 simulator. That’s why we called it NT, because it worked on the ‘N-Ten.'”
↫ Paul Thurrott
The i860 was one of Intel’s many attempts over the years to replace x86 with something more modern, but – as would become tradition with Intel and attempting to replace its x86 architecture – it suffered from endless delays, missed targets, and lacklustre performance. It saw only sporadic use in the market, and ended up on the chopping block after only a few years. Intel tried to replace x86 again soon after with Itanium, which suffered an identical fate.
Still, the engineers working on the i860 platform in the late ’80s and early ’90s at Intel can at least take some pride in that to this day, the most popular desktop operating system in the world got its name from the product they developed. Intel’s i860 might barely even be worthy of a footnote today, but billions of PC users log into their Windows “N-10” machines every day, unwittingly carrying a torch for the failed x86 replacement.
BTW, I had no idea the WordPress connection was coming and here it is.
A Wolv In Creep's Clothing [Penny Arcade]
The fan-favorite, canonically 5'3" mutant called Wolverine has been next in line for The Insomniac Treatment for a while, having been announced in September of '21, a year I will admit to not remembering entirely. As it approaches, we've been buffeted by new video clips of Wolverine's clothing being deliciously flensed just this side of mutant homoerotica, and a picture of his face that makes him look like an escapee from Roblox.
Dirk Eddelbuettel: #057: Conditionally Quieten Compilers [Planet Debian]

Welcome to post 57 in the R4 series.
R packages with compiled codes can use the file
src/Makevars to set compilation flags. We often rely
on this to set libraries, include directories or compilation
options. When using external libraries, be it header-only or via
headers and linking, we are often experiencing ‘compilation
noise’ when these libraries tickle warnings under
generally-recommended flags such as -Wall -pedantic.
Two packages I maintain are clearly repeat offenders here: Eigen,
and BH. Both cam generate pages and pages of compiler output. This
is generally not great as it may hide genuine warnings from our own
code.
What makes matters worse is that some of the available and
specific options for the compilers are treated by R CMD
check as ‘non-portable’ leading to a nag on
package checking. Examples are -Wno-parentheses,
-Wno-maybe-uninitialize or
-Wno-nunnull.
I have long resorted to adding these to my per-user
~/.R/Makevars. When added there, compilation is
quieter, but R CMD check still nags here
where the option is set but not at CRAN or r-universe. A situation
that is not ideal but what somewhat ‘stable’.
More recently, I realized there was an available check we can use to conditionally add extra compilation flags but leave them off by default. That makes local development quiet allowing us to focus on the quality of our additions here without noise from third-party libraries we may use. At the same time we do not need to do anything else to let CRAN do its work.
The check we now use is whether there is a .git/
directory present. If so, we are indeed building from local sources
and can add extra flags. If not, we are likely building from a
tar.gz source archive—which is the case for CRAN—and
hence do not set these.
An example use is this recent additional to package qlcal where this bit of R
code is invoked from a minimal shell script configure
and replaces the stub @XTRAFLAGS@ in
src/Makevars.in (or
src/Makevars.win.in)
if (dir.exists(".git")) {
## development from a .git directory can use these flags
xtraflags <- "-Wno-nonnull -Wno-deprecated-declarations"
} else {
## else build from tarball so stick with existing flags
xtraflags <- ""
}
win <- if (Sys.info()[["sysname"]] == "Windows") ".win" else ""
infile <- file.path("src", paste0("Makevars", win, ".in"))
outfile <- file.path("src", paste0("Makevars", win))
lines <- readLines(infile)
lines <- gsub("@XTRAFLAGS@", xtraflags, lines)
writeLines(lines, outfile)
With this change, local compilation is quiet, yet CRAN has nothing to nag about (as seen at the qlcal results page).
Similarly, one can also check from an actual
configure file written in autoconf. Here is a similar
example from RcppEigen (showing some relevants parts of the whole
file)
# PKG_CXXFLAGS initialized earlier ...
## Check if building locally
AC_MSG_CHECKING([whether .git/ exists])
if test -d "$srcdir/.git"; then
AC_MSG_RESULT([yes, adding extra flags])
AC_SUBST([PKG_CXXFLAGS],["${PKG_CXXFLAGS} -Wno-ignored-attributes -Wno-maybe-uninitialized"])
else
AC_MSG_RESULT([no, consider adding '-Wno-ignored-attributes -Wno-maybe-uninitialized' to ~/.R/Makevars])
fi
AC_SUBST([PKG_CXXFLAGS], ["${PKG_CXXFLAGS}"])
AC_CONFIG_FILES([src/Makevars])
AC_OUTPUT
Once again, with this change compilation is quiet locally, yet unaffected at CRAN. Just what we want. Give it a try in your packages.
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.
Jonathan Carter: DebConf26 – Santa Fe, Argentina [Planet Debian]

TL;DR: What a great DebConf! I managed to recharge my Debian batteries, and my talks / BoF sessions all went fine. Already looking forward to DebConf in Japan next year!
The evening before DebCamp started, we had a nice bbq (we taught some locals to call it a “braai” at an organiser’s house and went for a walk around the river as the sun set. It was a very peaceful lead-in to DebCamp.
Debian LTS wine
View of Santa Fe city from hotel
In this talk I do a very quick comparison of system installers based on my experience with them. It’s hard to directly compare all of them, since there are so many, and each have their own niche that they attempt to satisfy.
I also introduce Yasi – my attempt to answer the question of whether we could build a universal installer, which can also better cover advanced installations, automated installations and niche setups.
It’s very early days for the project, and I didn’t quite feel ready to share the code with the world, but it was nice that I did a quick demo where I could install a Debian system… and the resulting system actually booted up. *phew*.
This is also going to be my main focus for the mid-term future. I aim to have all the basic partitioning options working by the time Debian 14 (Forky) is released, and by the time Debian 15 is released, I have a long list of features that I aim to have working. So, my timeline for having something that’s generally useful is around a year from now, and in around 3 years it should be a fully fledged installer that should cover a very large amount of Debian use cases and architectures.
For the day trip, we did a tour across Santa Fe, visited Constitución de la Nación Argentina, had lunch where we tried various dishes based on local fish from the river, and then went on a boat ride on the river.
Funding in Free Software Projects: I initially registered this BoF because I’m increasingly concerned about how upstreams are asking for donations in their software. I increased the scope to talk about funding in free software in general. It followed Marga’s talk about funding, which focussed more about how developers are funded in general. We didn’t dive very deep into this, but we certainly need some further discussion (and action) on this within Debian.
Debian Social Team: My most important issue for this team is a carry-over from last year, I want to set up barman (packaged in Debian) for live postgres syncing for our larger databases. For the smaller DBs, doing a daily dump is quite cheap. But for Matrix, it’s very expensive in terms if i/o and CPU, so it would be ideal to do less regular complete dumps and use live replication for the first line of redundancy instead.
Images Team: I wasn’t initially planning to say much during this session, I have some ideas to reduce both size and count of images, without losing any benefits, but I don’t have any work to show for that yet. I ended up talking a lot more than I anticipated, the topics covered were quite good and representative of the current state of Debian images built. I don’t have time to create a full summary, so I suggest checking the etherpad / video recording if you’re interested.
Some more wine variety during the conference dinner
Debianites in the main hacklab
I’m spending two days in Rosario before I head home. Exploring a bit, catching up with sleep, finishing this blog post, signing keys and exploring some ideas I made note of during DebConf.
It was a little surreal not being part of any DebConf team for the first time ever, I’ve just been too focussed on getting Yasi ready for my talk (no regrets!). I hope to be more involved again next year, in the meantime, I’m very grateful to everyone who has made this happen, you did a stellar job! I hope to see many of you again next year in Japan!
AI Demands More Engineering Discipline, Not Less [Radar]
The following article originally appeared on Charity Majors’s Substack and is being reposted here with the author’s permission.
A few days back I wrote a piece called “AI enthusiasts are in a race against time, AI skeptics are in a race against entropy.”
I have notes on a whole pile of
AI-related topics that I’d like to cover in depth: AI
mandates, communication norms, code review, AI art, and more.
Unfortunately, I got too many interesting responses to my last
piece, and now I have to address those before I can move on to
other topics. 
There were two types of interesting responses: the first on the technical merits, the second on ethical grounds. I will respond to each of these separately. Let’s take the technical side first, because it’s easier.
Somehow, a subset of readers came away believing I was telling everyone to ditch code review and push their shittiest code straight into production without reading it, right now, tout suite.1
That is not what I am doing. That is not what I think you should do. But I did not pick that example at random, and I will tell you why.

It’s easy to forget, but for most of 2025, the idea that AI-generated code was slop and might always be slop was not only a reasonable position to hold, it was the default, mainstream position.2
That question was answered decisively last November. Ever since Opus 4.5 came out, AI has been able to generate code that is approximately as good as that of the median software engineer, at least for common patterns, and much faster and more cheaply. I came out of a book hole and realized this in January, and over the first few months of 2026, it seemed like everyone around me was having a similar realization.
But many saw it coming much sooner.
The popular narrative holds that Opus 4.5 was what changed. But Opus 4.5 was more like the tipping point. Agentic harnesses (the code that wraps the LLM in a loop with tools) became a real thing in mid 2025, with precursors building back to late 2024. Tool use, function calling, MCPs…all of this wave was building over the course of 2025, and crested into real general purpose usability at the end of the year.
That’s what the enthusiasts were trying to tell us last year. Not only “this is coming”, but “this is coming faster than you think.”
As it turns out, they were right.
As you may know, I come from the reliability side of the house. The compliment I will pay to myself and my people is that we do not struggle to adapt to new realities. As soon as a problem is real and in front of us, we adjust smoothly, even eagerly, thanks to an unwholesome zest for lapping up disgusting technical messes (and the campfire tales we get to tell later).

The un-compliment I will pay myself and my people is that we sometimes struggle to accept that progress is real, that the continued existence of bugs and edge cases does not diminish the fact that huge swaths of problem space do get more-or-less solved over time, to the point they can be taken for granted by most people.3
The speed at which code went from total crap to “ah damn, that’s not bad” is what I have in the back of my mind, as enthusiasts are telling us that harness engineering and AI validation is real, it’s already here, and it’s getting better astonishingly fast.
Holding out for “I’ll believe it when I see it” was forgivable the first time, but much less so the second time. This is what it feels like to be on the inside of an exponential change curve, turns out.4
I want to pause here and be very clear about what I think is happening. Then I’m going to tell you what specifically I am excited about, and why.
You are under no obligation to join
me there. But there are way too many sweeping statements out there
right now about “it was never X”—“it was
always Y”—“the future belongs to xyzzy”
—and I want to be crystal clear how
conditional and specific and contextual my claims are.
What happened in 2025 was this: the economics of code production were turned upside down. Instead of being very hard, time-consuming, and expensive to generate code, it became effectively free and instant. Lines of code went from being treasured, reused, cared for and carefully curated, to being disposable and regenerable, practically overnight.
For most of computing history, the primary way people have learned to understand software is by writing the code. Once you’ve achieved some mastery, reading and discussing code gets you most of the way there. (I might argue that software engineers have always relied far too heavily on the code instead of sensemaking the system through observability.)

Many great software engineers hold that true product of every (good) software engineering team has always been a shared understanding of the software we own. That it gets stored as cache state in our fragile little meat brains, frequently flushed to disk, deployed to production, committed to github, but our minds are where meaning has always lived.
Is it any wonder that software has always been such a fiercely collectivist endeavor, exquisitely sensitive to relationship dynamics and manners and questions of fairness and emotional valence? It’s exactly what you’d expect when part of your brain lives in other people’s brains, and your collective interdependence is sky high.
It’s something that I love about this industry. But there’s no denying that minds have been a poor container for certain aspects of the software development model. We are forgetful, distractible, impatient. We are bad at spotting small details, we grow habituated to repetition. Worst of all, the model in our heads diverges massively and perpetually from the world our users interact with.
Anyway, SREs have never quite bought that explanation. To us, it’s clear that the true product of every (good) software engineering team is production.
Only prod is prod. Test in prod, or live a lie.
(This is all backstory. I am getting to the point, I promise.)
We issued our AI mandate last August.5 I had seen enough to know that this was happening, and it was time to do the responsible thing. Honeycomb is a devtools company, and people come to us to help with hard problems on the forefront of technology. I was all in on AI, but I can’t say I was super excited about it, in my heart of hearts.6

Then I found Chad Fowler’s writings on Phoenix Architectures.
If you don’t know what I’m talking about, you should honestly stop reading my shit right now and go read his. Chad is the guy who coined the term “immutable infrastructure” in 2013. His best-known essay is “Relocating Rigor”, because Martin Fowler7 mentioned it recapping a Thoughtworks meetup on the future of software. I replied with “Production Is Where the Rigor Goes”, complaining that they didn’t talk about production enough.
When I wrote that, I think “Relocating Rigor” was the only piece I had read. But soon I found the rest of it, and after reading two or three essays, it just clicked. I knew exactly what he was talking about. I could predict the rest of what he was going to say. And then, reader…then I got excited.
I am going to give you a small sample of Chad quotes, just enough to get the gist. Here’s one from “The Death and Rebirth of Programming.”
Immutable infrastructure. Stateless services. Containers. Blue-green deployments. Infrastructure as code.
These ideas all share a common premise: never fix a running thing. Replace it.
AI pushes this premise beyond infrastructure and into application code itself. When rewriting is cheap, editing in place becomes risky. Mutation accumulates entropy. Replacement resets it.
Another favorite: “The Deletion Test.”
Here’s a simple test you can apply to any software system you work on:
Imagine deleting the entire implementation.
Most engineers experience deletion as existential. Code feels like the thing. It’s what we write, review, version, deploy, and debug. Losing it feels like losing the system itself.
When people say, “We can’t just throw the code away,” what they usually mean is something more precise:
- We don’t know exactly what behavior is required.
- We don’t know which failures are unacceptable.
- We don’t know what invariants must always hold.
- We don’t know how to tell if a new version is correct.
- We don’t know which bugs are intentional fixes for forgotten edge cases.
Those are not code problems. They are evaluation problems.
Code becomes precious when it is the only place knowledge lives.
and,

For most of software history, treating code as durable was reasonable.
We treated code as permanent because the labor to produce it was the bottleneck. Rewriting was expensive. Re-validation was risky. Implementations accumulated meaning over time. Structure, tests, comments, bug fixes, and tribal knowledge fused into something you learned not to disturb.
That made sense when production was the constraint.
When regeneration is easy, code stops being an asset and starts acting as a cache: a materialized view of understanding that is useful while current, disposable when stale.
“A materialized view of understanding that is useful while current, disposable when stale.” I think that might have been the exact line that made it click in my head.
I am just barely old enough that my first job title was “System Administrator.” I was a teenager, working at the university, with root on every machine in the days before they learned they should definitely not do that.8
I lived through the shift from handcrafted server pets to immutable infrastructure cattle. I didn’t really understand what was happening at the time, but I’ve contemplated it a lot in recent years. I wrote this in the final chapter of Observability Engineering, 2nd edition (now available, download here!):
The shift from handcrafted servers to immutable infrastructure taught us that mutability is the sworn enemy of understanding. Any artifact that is edited in place creates drift. Drift is what makes systems impossible to maintain.
Our ability to kill and regenerate infrastructure components is the reason we trust it. At Honeycomb, we kill the oldest Kafka node off via cron every Tuesday. That’s why we are confident in our bootstrapping and balancing processes: everything is repeatable, the data can be regenerated, the commitments live elsewhere.
The fact that we cannot regenerate our code in the same way is a sign that we do not understand it. We do not know which commitments we have made, we do not know which dependencies will break. We find them by breaking them, mostly.

Think of all the years of your working life you have wasted on painful migrations and rewrites. Think of replacing load-bearing legacy code. Think of all the strangler figs.
Lines of code have been doing too much. The code has been the bundled up repository of developer intent, user expectations, implicit and explicit behaviors, the only fossilized composite record we have of bugs gone by. It’s too much!
And look at all the domains that have been neglected due to the towering, all-consuming expense of maintaining and mutating lines of code. Where are the artifacts I can review and discuss to understand how our architecture is evolving? Where are our architecture artifacts, period? What if we could discuss and converge on an architecture diagram, and the code could be regenerated from changes to the architecture, instead of the architecture being kinda-sorta inferred from the code?
I am not asserting that all code will eventually be AI-generated to spec, bypassing human understanding. The feasibility of this whole endeavor hangs on the question of what a spec is, or what a spec could be. Anyone who has ever done a painful database migration should have learned some goddamn humility about our ability to extract and formalize users’ expectations in a replayable, automate-able way.
But I think that every step we can take in that direction will be good for us.
The tools to do this don’t exist yet, but many of the ideas do exist. Most come from operations and QA, two domains that software engineering has historically been rather snobbish about.
Those tests and techniques are not about testing for correctness or what ought to be happening, they are about observing and encoding what is happening. Behavioral tests, characterization tests, capture/replay, traffic splitters. Observability (the good kind).

Having nondeterministic code in production is finally forcing us to do the things we should have done all along. Instrumenting with traces. Tests and evals in production. Production is not what happens after development is over, production is a stage of development.
Human brains are not good at validation. The nitpickiness, the repetition. This is the worst thing to be clinging to, y’all. There are so many better things for us to want to preserve and assert for ourselves in the production and maintenance of software. We are never going to beat the machine when it comes to validation—we are literally the weakest link!
My money’s on humans for a good
long time when it comes to creativity, inspiration, leaps of logic,
and a lot of other things, but PLEASE do not rest your killer
argument for humans in software on us being the best quality
gate. OMG. 
Alright. I’m almost done here. Just one more thing.
I think what many engineers have found so alienating and terrifying about the last two years of AI discourse has been the way so many prominent AI voices appear to be gleefully declaring that software is no longer an engineering problem. “SaaS is dead!” “Making AI great at coding was the strategy that unlocks everything else”, and so on. Even Adam Jacob, one of my dearest friends and someone who is rarely wrong about technology, seems to anticipate a bloodbath of software jobs.9
If 2025 was the year of vibe coding, where AI got as good at generating lines of code as the median software engineer, and the range of possible futures often felt destabilizingly, impossibly wide open, I feel like 2026 is shaping up to be a return to discipline.

The knowledge in our heads is unavailable to AI until we encode it into the system, after all. The returns on those investments will be massive and nonlinear. We might argue that they always would have paid for themselves in the long run. But now every CEO in existence is chomping at the bit to get some of those AI cookies, so let’s give it to them. Discipline first, cookies second.
The share of software engineering teams that work in short, fast feedback loops (the cardinal sign of discipline in my book) is, and always has been, appallingly small. Five percent, maybe? Definitely less than 10%. AI tooling brings this more within reach than ever before. Or it can. It could. The discontinuous returns on investment in engineering discipline are real enough that it just might happen.
I am not worried, at least in the near term, about AI creating massive, discontinuous returns on investment in the absence of engineering discipline. (Many will try, and it will be entertaining to watch.)
But value is backed by durability, not disposability, and I don’t see that changing. Bits are cheap and fast and governed by the rules of logic and language, but anything with value must ultimately resolve with physical systems: persistence on the one side, user experience on the other.
People do not want to wake up every day and log in to Slack and find the buttons and menus all subtly moved around. People do not want financial transactions that complete most of the time. Determinism is not going anywhere, my friends.
AI is not magic. This is still engineering. As Adam says, “it’s still technology, and technology needs technologists.” And I for one am looking forward to learning new and interesting engineering problems, reviewing different kinds of artifacts.
And never doing another sticky, picky, two year long API rewrite or strangler fig migration, ever, ever again.
~charity
P.S. Thanks to everyone who read a draft and gave me feedback: Dave Williams, Chad Fowler, Adam Jacob, Mark Ferlatte, Austin Parker, Erwin van der Koogh.
︎
︎
︎
︎
︎
︎
︎
︎
︎Joe Marshall: Vibe Coding Reconsidered [Planet Lisp]
A year ago, you couldn't vibe code in Lisp. Even the SOTA models had trouble balancing parentheses, and they'd hallucinate packages and symbols that didn't exist. A year makes a big difference in this field, and the latest models are capable of vibe coding moderately sized programs in syntactically correct Lisp.
I have been experimenting with vibe coding in Common Lisp and I'm hooked. It is a blast. It is like having on hand a talented undergraduate who just took a Lisp course. If you give him small enough, focused tasks, he will churn out passable code. If you give him a good chunk of legacy code, he will churn out more code in the legacy style. The models are not good enough to do a full rewrite of a large codebase, but they are good enough to handle a small library with supervision.
I find myself accepting a large amount of code with just a glance—if it passes the Lisp reader, compiles, and the tests pass, I accept it. Unlike the code of a year ago, the generated code these days is far less buggy, and the models are pretty good at debugging their own code. I'll do spot checks on the code, but I don't bother reading it line by line unless I see something odd. If the model generates code in a style I don't like, I'll ask it to rewrite the code to be more to my liking.
But frankly, you don't need to read the code at all. If there is a good test suite, the model will generate code that passes tests. If the code is functionally correct, it doesn't matter if the code is pretty. In one way, it doesn't matter if the code is easy for a human to read and maintain because we ask the model to maintain it. We treat the code as a black box and we constrain it to pass the tests. (We accept machine code largely unread.)
By far the most common failure mode is the model getting the number of closing parentheses wrong. The tail end of a block of code is usually a bunch of closing parentheses, and the model will be tokenizing them in groups of 2 or 3. But the likelihood of the "))" token isn't very much different from the likelihood of the ")))" token, so the model will sometimes grab the wrong one.
Depending on the model and the agent, when it tries to recover from the ensuing read error, it will re-compute the tokens in the output. It sometimes will thrash as it tries to balance parentheses, adding and removing them from various places in the code. (Sort of like a noob Lisp programmer.) Some models are more susceptible to this than others. I have found that the solution here is to pause the agent and manually fix the parentheses when the agent starts to thrash.
I've been using Copilot CLI and Gemini CLI to vibe code in Common Lisp. I start with a blank project directory and create an .asd file that loads the packages.lisp file and the main file for the project (which can start out as a "hello world"). Basically, make a minimal project that you can load with ASDF or Quicklisp.
The models can work at moderate levels of abstraction, but they do better if there is existing code supporting the abstraction level, and this suggests a `bottom-up` approach to the problem rather than a `stratified` design. But the models are actually quite capable of starting at a moderate level of abstraction right from the get-go.
So starting with a minimal project, I boot up the model and ask it to write the first things needed for the project—some data structures, some utilities, a few tests. The very simple stuff that is easy for the model to do ab initio. Then I ask the model to write a minimal main function that will implement the basic functionality of the project—a command loop, a server, what-have-you—with stubs for everything. Once a framework is in place, the models are easily able to extend it.
The agents will get into a loop of adding code, adding tests, and running all the tests. They will debug any test failures and only consider a task to be complete when all the tests pass.
The model does not write great code, and you will accumulate technical debt if you accept it as is. But the model can write code that works and passes the tests. It is a good idea to pause during development and simply ask the model to find the technical debt in the code, enumerate it, and rank it in order of importance. Then you ask the model to address each item in turn and the model will clean up the code. After a couple of iterations of cleanup, the code will look no worse than what I've seen in many professional codebases.
There are sort of two modes that you operate in: one is to modify the existing code (e.g. refactor) without disturbing the functionality; the other is to extend the functionality without disturbing the core operation. It is important to spend enough time refactoring and cleaning up. But the model is good at generating potential refactorings, and it is not good at knowing when to call it quits. It will happily churn away at your code making it `better' and doing more and more trivial refactorings. If you give the model one particular refactoring task and tell it to do just that one, it will do a good job.
Refactoring is satisfying in a certain way, but adding features gives you more instant gratification. The models are good at adding features and extending existing code, especially if the feature shares any similarity with existing code.
For more complex features and refactorings, tell the model that you want a 'plan' for the feature or refactoring. The model will come up with a multi-step plan, broken down into a series of tasks. The tasks in the plan are generally small enough to be handled by the model itself.
The models are good enough to maintain a codebase, so once you have a project up and running, the model will generally choose file names and a directory structure that is appropriate to put in the .asd file. If you get the model started with a test suite, it will extend the tests as it extends functionality, or you can ask it to add specific tests.
I have found that building a project by vibe coding it is an extremely rapid way to prototype. The model can churn out `obvious' code much faster than I can and it frees me up to think about the higher level design issues. I can build in a weekend what would have taken me a month before.
Making an agile version of a Windows Runtime delegate in C++/WinRT, part 6 [The Old New Thing]
It looked like we were done when we fixed the problem of releasing a non-marshalable delegate on the correct thread.
But we missed something.
Again.
if (d.try_as<::INoMarshal>()) {
void* p;
if constexpr (std::is_reference_v<Delegate>) {
p = winrt::detach_abi(d);
} else {
winrt::copy_to_abi(d, p);
}
return
[p = std::unique_ptr<void, in_context_deleter>(p),
token = get_context_token()](auto&&...args) {
if (token == get_context_token()) {
std::remove_reference_t<Delegate> d;
winrt::copy_from_abi(d, p.get());
d(std::forward<decltype(args)>(args)...);
} else {
throw winrt::hresult_error(CO_E_NOT_SUPPORTED);
}
};
}
The first part gets a raw ABI pointer, either by moving it out of the inbound delegate if we can, else by copying it from the inbound delegate. The reference count is owned by the raw pointer.
The second part wraps the raw ABI pointer inside a
std::unique_ptr with our custom deleter. The unique
pointer now owns the reference count, and the custom deleter will
release it.
The problem is that one of the requirements for a custom deleter
is that if you use the unique_ptr(p) constructor, the
custom deleter must not throw an exception at construction.
[unique.ptr.single.ctor]
constexpr explicit unique_ptr(type_identity_t<pointer> p) noexcept;Constraints:
is_pointer_v<deleter_type>isfalseandis_default_constructible_v<deleter_type>istrue.Preconditions:
Dmeets the Cpp17DefaultConstructible requirements, and that construction does not throw an exception.
But our custom deleter could throw an exception if
CoGetObjectContext fails. So it
doesn’t meet the preconditions.
We can fix that by using the constructor that takes an explicit
deleter from which the stored deleter can be move-constructed. If
an exception occurs, it happens during the creation of the
parameter and not inside the unique_ptr
constructor.
if (d.try_as<::INoMarshal>()) {
void* p;
if constexpr (std::is_reference_v<Delegate>) {
p = winrt::detach_abi(d);
} else {
winrt::copy_to_abi(d, p);
}
return
[p = std::unique_ptr<void, in_context_deleter>(p, {}),
token = get_context_token()](auto&&...args) {
if (token == get_context_token()) {
std::remove_reference_t<Delegate> d;
winrt::copy_from_abi(d, p.get());
d(std::forward<decltype(args)>(args)...);
} else {
throw winrt::hresult_error(CO_E_NOT_SUPPORTED);
}
};
}
Okay, so now we’re done?
Nope, still broken.
More next time.
The post Making an agile version of a Windows Runtime delegate in C++/WinRT, part 6 appeared first on The Old New Thing.
Missed EFF's Livestream with Adam Savage and iFixit? Listen Here! [Deeplinks]
EFF’s first EFFecting Change livestream was all the way back in July of 2024. Maybe you've caught each stream, or maybe you’ve only caught a few. Or maybe you’re like me and prefer to listen to conversations like these on your daily commute! Either way, if you want to stay on top of these monthly conversations, you can now subscribe to our new podcast feed for EFFecting Change—starting with our conversation on the Right to Repair movement with Adam Savage and iFixit CEO Kyle Wiens:
This new feed will include the full conversations with our panelists, posted after the livestream ends. Subscribe today to get each stream straight to your podcast player of choice. You can also find other podcasts by EFF at eff.org/podcast.
And mark your calendar for the next EFFecting Change livestream: Who the Machine Serves. EFF Executive Director Nicole Ozer and Cory Doctorow will be having a conversation on AI, tackling what needs to happen now to ensure AI actually works for everyone, not just those in power. RSVP today!
Want to ensure EFF can keep inviting expert panelists to chat about the future of technology and how it impacts you? Support our work today.
The Fedora 45 sausage factory [OSnews]
This is a walkthrough of how Fedora turns source code and packages into the artifacts you download and install. It follows the a package from a packager’s git push to a composed release: ISOs, cloud images, container images, and OSTree deployments.
↫ Simon de Vlieger
Linux distributions – good ones like Fedora, at least – are really complex operations, with a ton of checks and balances to ensure no git push eventually ends up causing problems on individual users’ machines way down the line. The fact so many people involved in this complex web of processes also happen to be volunteers doing all of this out of the goodness of their hearts is amazing. Of course, this doesn’t just apply to Fedora, but also the countless other distributions out there, especially those not owned by some giant corporation like IBM.
If you’re just a casual Fedora user, there’s really no reason you have to know or be aware of any of this, but it’s still fun and interesting to understand the inner workings of your distribution of choice.
Comanche: Maximum Overkill from 1992 does weird things on Intel processors [OSnews]
Let’s do another article about weird code in video games.
The original 1992 Comanche release is extremely picky about memory managers. The game refuses to work with EMM emulators and crashes when EMM386 is active. The game may also hang or reboot the system when HIMEM.SYS is not loaded (the problem seems to be system configuration dependent).
These issues are clearly noted in the Comanche documentations, but at the same time they’re also all signs of a substandard DOS extender.
On top of that, the game authors accomplished a remarkable feat: By only loosely following Intel’s instructions on how to enter protected mode, NovaLogic managed to write a game which worked on the then-existing 386 and 486 processors, but under some circumstances failed to run on Pentium and later processors.
↫ Michal Necasek at OS/2 Museum
As usual, a great read from Michal Nacesek.
This is something. WordPress now supports RSS.chat in an interesting way, and it's surprisingly deep. Once it's cross-posted a message to RSS.chat, any comment in response will be cross-posted to the comment thread on RSS.chat and vice versa. What's great about this is that you never can tell what people will do when you are on the web. Matthias is a friend, I was on his podcast last year. If people use this connection and see how it works, then we'll get an idea of where to go next.
Of course we have a feed for RSS.chat updates.
[$] Hazard pointers for the kernel [LWN.net]
The kernel's read-copy-update (RCU) subsystem ensures that data will not be deleted until it is known that there are no threads holding references to it. RCU works well and is widely used throughout the kernel, but it can increase memory use and add significant delays before unused kernel objects are cleaned up. Hazard pointers are an alternative approach to lockless data updates that offers better performance, for some situations at least. The kernel community is currently considering a hazard-pointer implementation by Mathieu Desnoyers and Paul McKenney.
How
we document APIs. We did a lot of work on API docs this
morning. Claude had done a draft, which we published, and turned
over to users, and on review realized it was insufficient. That was
the word I used, and rolled up my sleeves, told Claude we're going
to get this stuff right and set a pattern as we go forward. At the
end I asked Claude to summarize what we agreed on, and it's more or
less exactly what I was aiming at. If you're working with Claude on
docs for APIs, I offer this as open source, feel free to point your
Claude at this
doc. I have a vested interest, in my job I read a lot of bad
API docs.
The GNU C Library version 2.44 is now available [Planet GNU]
The GNU C Library
=================
The GNU C Library version 2.44 is now available.
The GNU C Library is used as the C library in the GNU system
and
in GNU/Linux systems, as well as many other systems that use
Linux
as the kernel.
The GNU C Library is primarily designed to be a portable
and high performance C library. It follows all relevant
standards including ISO C23 and POSIX.1-2024. It is also
internationalized and has one of the most complete
internationalization interfaces known.
The GNU C Library website is at http://www.gnu. ...
/software/libc/
Packages for the 2.44 release may be downloaded from:
http://ftpmirr ...
.gnu.org/libc/
http://ftp.gn ...
org/gnu/libc/
The mirror list is at http://www.gnu. ...
/order/ftp.html
Distributions are encouraged to track the release/* branches
corresponding to the releases they are using. The release
branches will be updated with conservative bug fixes and new
features while retaining backwards compatibility.
NEWS for version 2.44
=====================
Major new features:
running ldconfig. Specific tunable settings and
the
/etc/tunables.conf file format and path are not part of the
stable
library interfaces and may change between releases.
Transparent Huge Pages (THP) if THP is not disabled in
the kernel. When
glibc.elf.thp is set to 1, malloc uses the actual kernel THP
mode
instead of defaulting to madvise mode and madvise_thp will
stop issuing
MADV_HUGEPAGE if kernel THP mode is always.
page size is above MAX_THP_PAGESIZE, THP in malloc is
disabled.
been imported from the CORE-MATH project, in particular
cosh, sinh, and
tanh.
from the CORE-MATH project.
arguments containing commas (which however still must
evaluate to a single
value).
symbols, allowing improvements in performance.
support to correctly set the expected linker options.
operations (including status, write on shadow stack, and
push to shadow
stack) are locked after enabling GCS with ENFORCED or
OVERRIDE GCS policy.
When a GCS operation is locked, a program cannot change this
operation
status via the prctl syscall. This prevents disabling
or corrupting the
GCS shadow stack during runtime.
single and double precision special cases have been
vectorized for SVE and
AdvSIMD, and vector variants of powr have been added.
memchr, memcpy, memmove, stpncpy, strcmp, strchr, strcpy,
strncmp, strncpy,
strlen, and strrchr have been added.
Deprecated and removed features, and other changes affecting
compatibility:
aligned to alignof (max_align_t), the documentation now
says future
versions of glibc may relax alignment requirements for small
allocations.
For example, a future malloc(1) might return a pointer with
odd
alignment, because no object of size 1 can have a
fundamental
alignment greater than 1.
The corresponding AArch64-specific functionality that was
previously
activated by this flag has been removed as well.
effect on the build since the NSS reorganization in glibc
2.33; its only
remaining behavior was to suppress the link-time warnings on
the NSS
interface functions in libc.a, which are now emitted
unconditionally.
Security related changes:
The following CVEs were fixed in this release, details of which can
be
found in the advisories directory of the release tarball:
GLIBC-SA-2026-0005:
gethostbyaddr and gethostbyaddr_r may
incorrectly handle DNS
response (CVE-2026-4437)
GLIBC-SA-2026-0006:
gethostbyaddr and gethostbyaddr_r return invalid
DNS hostnames
(CVE-2026-4438)
GLIBC-SA-2026-0007:
iconv crash due to assertion failure with
untrusted input
(CVE-2026-4046)
The following bugs were resolved with this release:
[2363] libc: EOPNOTSUPP and ENOTSUP in errno.h must be
different,
according to SUSv3
[3794] manual: iconv: TRANSLIT and IGNORE feature not documented
[15792] dynamic-link: [arm] ARM dynamic linker should
save/restore
coprocessor registers
[20331] libc: fts ignores errors from readdir()
[20680] dynamic-link: ifunc resolver cannot access the
thread pointer
with static linking
[22944] libc: fts cannot traverse paths which have a length
longer
than USHRT_MAX
[25257] libc: sotruss: fix error message for '--f'
argument
[25770] locale: newlocale memory leak in LOCPATH parsing and
on error
paths
[27582] libc: x86_64: IFUNC in static user programs may
crash when
built with -fstack-protector-all
[28218] dynamic-link: ld.so: ifunc resolver calls a lazy
PLT. When
does it work?
[28817] libc: static-pie ifunc resolver tls failure
[28940] nss: __nss_database_get doesn't check for allocation
failure
[30136] manual: Please document behaviour of iconv(3) when
input is
untranslatable
[30304] nptl: nptl/tst-pthread-gdb-attach test fails with
new libc
shared library version
[30769] malloc: malloc_trim is not working correctly for
arenas other
than arena 0
[30976] dynamic-link: rtld: resolve ifunc relocations
after
JUMP_SLOT/GLOB_DAT/etc
[30992] libc: alpha: setrlimit() with negative values
besides
RLIM_INFINITY returns EPERM
[31901] libc: elf/tst-glibc-hwcaps-prepend-cache fails on
i686
[33226] math: math-vector-fortran.h vs not ffast-math
[33626] libc: execvpe should skip inaccessible $PATH
components
[33650] build: abilist.awk doesn't handle unversioned
defined symbols
[33785] stdio: New streams are linked into global list
before they are
fully initialized
[33848] build: Build fails at openat2.h, redefinition of
'struct
open_how'
[33882] libc: Recursion in nftw() causes stack
overflow(CWE-674)
[33904] build: error: '__vasprintf_chk' undeclared here
[33921] build: Building with Linux-7.0-rc1 errors on
OPEN_TREE_CLONE
[33935] stdio: _IO_wfile_doallocate not linked correctly
when linking
glibc statically
[33980] locale: iconv: ibm139x trigger assertion error when
converting
to internal while lack enough room
(CVE-2026-4046)
[33985] build: ld: cannot find -lgcc_s: No such file or
directory
[33999] stdio: libio: potential dangling _IO_save_base or
memory leak
in wgenops.c
[34006] stdio: libio: inconsistent fmemopen_write behavior
on last \0
[34008] stdio: stdio-common: scanf %mc pattern will cause
heap
overflow when width > 1024
[34014] nss: gethostbyaddr and gethostbyaddr_r may
incorrectly handle
DNS response
[34015] nss: gethostbyaddr and gethostbyaddr_r return
invalid DNS
hostnames
[34019] stdio: libio: undefined behavior when setbuf on
open_memstream
[34033] network: resolv/ns_print.c: ns_sprintrrf TSIG path
bypasses
buflen and can overflow caller buffer
[34064] dynamic-link: The unnecessary PT_NOTE check in when
loading a
binary
[34069] network: Buffer overread in ns_sprintrrf with
corrupted RDATA
field (CVE-2026-6238)
[34070] hurd: Calling open ("/dev/tty/", O_RDONLY) causes
the program
to segfault
[34073] regex: regexec can mistakenly match with backrefs
and the $
anchor
[34079] dynamic-link: THP segment load aligns all PT_LOAD
segments to
THP page size
[34080] dynamic-link: Support THP segment load with THP
enabled with
madvise
[34083] dynamic-link: __get_thp_mode and __get_thp_size are
called
twice
[34090] libc: wordexp WRDE_APPEND rollback restores stale
we_wordv,
leading to invalid free in wordfree
[34098] libc: Missing SUPPORT_STATIC_PIE in arm32
[34129] string: x86: Non-temporal memset unreachable on AMD
Zen 3/4/5
[34144] libc: ld.so clobbers VFP registers during runtime
linking
[34154] network: Segfault in sock_eq after res_init()
returns -1, due
to stale _u._ext.nscount in __res_iclose
[34156] dynamic-link: dlsym(RTLD_DEFAULT, ...) from a
constructor
SIGSEGVs when tail-called
[34164] dynamic-link: elf: IFUNC resolvers do not see static
TLS
initialization
[34170] dynamic-link: elf: IFUNC resolver reading
global-
dynamic/TLSDESC __thread variable crashes inside
__tls_get_addr
[34183] math: fma produces wrong results
[34192] nptl: pthread_setname_np opens
/proc/<tid>/comm with O_RDWR
instead of O_WRONLY|O_CLOEXEC
[34196] libc: elf: static dlopen: pointer guard of the
loaded
ld.so/libc.so is left uninitialized
[34197] dynamic-link: elf: Stack canary and pointer guard
are
recoverable from AT_RANDOM (getauxval)
[34205] libc: aarch64: SIGSEGV in tunable_strcmp in
static-pie
binaries run with a string tunable
[34208] stdio: scanf not pushback after matching failure
[34210] libc: elf/tst-glibc-hwcaps-prepend-cache fails
on
armv7a-unknown-linux-gnueabihf
[34236] locale: Non-representable transliteration still
causes iconv
to exit with 1 if TRANSLIT is specified
[34289] network: ns_sprintrrf uses p_class, p_type
internally
[34311] build: THP tests failed to link
[34347] libc: Incorrect trailing bitfield word of struct
tcp_info
[34348] dynamic-link: FAIL: elf/tst-thp-1 if THP is disabled
in kernel
[34351] build: Random test failures
[34355] build: [2.44 Regression] "make check -j7
subdirs=stdio-common"
no longer works
[34396] libc: sparc64-unknown-linux-gnu , Gentoo: >200
test failures,
SIGILL in many binaries
[34398] string: Truncated strncpy on s390x z900 ifunc
variant
Release Notes
=============
https://sourcewar
... wiki/Release/2.44
Contributors
============
This release was made possible by the contributions of many
people.
The maintainers are grateful to everyone who has contributed
changes or bug reports. These include:
Adam Yi
Adhemerval Zanella
Alejandro Colomar
Andreas K. Hüttel
Andreas Schwab
Arjun Shankar
Aurelien Jarno
Avinal Kumar
Brian Jorgensen
Carlos O'Donell
Carlos Peón Costa
Charlotte Mcmenamin
Collin Funk
Cosmina Dunca
DJ Delorie
Daan De Meyer
Deng Jianbo
Dev Jain
Diego Nieto Cid
Dmitry Kovalenko
Dylan Fleming
Etienne Brateau
Fabian Rast
Florian Weimer
Frédéric Bérat
Garccez
George Hu
H.J. Lu
Jakub Jelinek
Jiamei Xie
Jiho Lee
Jiri Stransky
John David Anglin
Jonathan Wakely
Josef Johansson
Joseph Myers
Justus Winter
Luca Boccassi
Lucas Chollet
Martin Coufal
Matt Turner
Michael Ford
Michael Jeanson
Michael Kelly
Mike FABIAN
Mike Kelly
Muhammad Kamran
Nicolas Boulenguez
Paul Eggert
Peter Bergner
Peter Collingbourne
Petr Menšík
Pierre Blanchard
Pino Toscano
Pádraig Brady
Richard Wild
Rocket Ma
RyotaSaito
Sachin Monga
Sajan Karumanchi
Sam James
Samuel Balazi
Samuel Thibault
Sana Kazi
Sergey Kolosov
Shamil Abdulaev
Shengwen Cheng
Siddhesh Poyarekar
Stefan Liebler
Thomas Daubney
Tomasz Kamiński
Uros Bizjak
WANG Rui
Weihong Ye
Weixie Cui
Wilco Dijkstra
Xi Ruoyao
Xiang Gao
Yao Zihong
Yunze Zhu
Yury Khrustalev
Zihong Yao
mengqinggang
xiejiamei
zombie12138
We would like to call out the following and thank them for
their
tireless patch review:
Adhemerval Zanella
Andreas K. Hüttel
Arjun Shankar
Aurelien Jarno
caiyinyu
Carlos O'Donell
Collin Funk
DJ Delorie
Florian Weimer
Frédéric Bérat
Ganesh Gopalasubramanian
H.J. Lu
JiangNing
Mathieu Desnoyers
Paul Eggert
Paul Zimmermann
Peter Bergner
Sam James
Samuel Thibault
Siddhesh Poyarekar
Stefan Liebler
Sunil K Pandey
Wilco Dijkstra
Yury Khrustalev
GNU Binutils 2.47 released [LWN.net]
Version 2.47 of GNU Binutils has been released. In addition to the usual bug fixes there are some notable new features in this release including added support for a number of RISC-V standard extensions, a command-line option (-M annotate) which displays the symbol for undefined instructions for AArch64, and more. The 32-bit s390 target has been deprecated with this release.
Zero to Agent in 30 Minutes: Build a Hermes Social Media Agent with Craig Hewitt [Radar]
If you’re still writing posts one at a time, your content pipeline is already obsolete. On the latest Zero to Agent in 30 Minutes, Craig Hewitt, founder of Castos, demonstrated how to turn a fresh Hermes installation into a social media agent that can study a person’s writing, draft posts, and plan recurring research, focusing on the context, workflows, and safeguards that help an agent produce useful work. Once set up, the always-on agent can run on a schedule, monitor external sources, and complete recurring tasks without human oversight. Check it out.
Agents become useful when they have context, clear processes, the right tools, and enough oversight to validate each workflow. Once those pieces are in place, Craig noted, teams can gradually move from one-off prompting to systems that monitor information and complete recurring work.
In the next episode, Max Johnson, cofounder of briix.ai, will take a workflow that only lives in someone’s head at the moment (or maybe is captured in a messy Notion doc or a long email chain) and rebuild it as an autonomous agent, live and from scratch. You can follow along with every decision as you learn how to spot the steps that can be handed off, how to handle the ones that can’t, and how to structure the whole thing so it runs without you.
Ready to take your agent knowledge further? Learn to design and build production-ready agentic infrastructure by attending Harness Engineering for AI Agents on August 12. And if you want to go deeper with Hermes, join us for Build Your First Local Agent with Hermes on August 26.
Stranded in the Slow Zone [Radar]
Gene Kim was grilling dinner for his family on the evening of June 12 when his phone told him that Fable 5 was no longer available. He’d heard the day before from Steve Yegge that the model was going away in 10 days, and he’d spent that first day starting on a plan to get ready. He thought he knew what to do. He was well-versed in DevOps, the art of building resilience against unplanned disasters at scale. He’d run the DevOps Enterprise Summit (now the Enterprise AI Summit), one of the field’s leading conferences. He’d also written several books on the topic, including two “teaching novels,” The Phoenix Project and The Unicorn Project. The challenge that those novels’ protagonist faces—and that Gene would need to solve—is summed up in a job description that read “Your job as VP of IT Operations is to ensure the fast, predictable, and uninterrupted flow of planned work that delivers value to the business while minimizing the impact and disruption of unplanned work, so you can provide stable, predictable, and secure IT service.”
In short, Gene was no stranger to the idea that, as the Scottish poet Robert Burns put it, “The best laid schemes o’ Mice an’ Men Gang aft agley.” So he thought he knew what to do over the next 10 days. Then the US government’s export control order took Fable down eight days early, in the middle of a running agent session. What followed was three hours of what he called the “strangest, most terrifying sysadmin experience” of his career.
Gene told that story as a lightning talk at Foo Camp a few weeks ago, and it was good enough that I asked him to deliver it again at the start of this week’s Live with Tim O’Reilly before we talked about the implications and took listener questions. His title was “Stranded in the Slow Zone: The Day Fable Died, Got Kidnapped, or Got Hit by a Bus.”
What Gene had built was a personal system he’d wanted for 16 years and had finally been able to finish with the help of Fable. It indexes everything he’s ever paid attention to: 25,923 screenshots going back to 2011, 13,651 YouTube videos, 590 recorded Zoom meetings, 6,132 liked tweets, and 1,056 saved articles he meant to read. The system touches about 50 repositories, with 50,000 lines of code, most of it written in two months. Gene runs it as a constellation of long-lived agents with names and jobs. Marvin is chief of staff and handles Slack, calendar, and the inbox queue. Buster runs the repos and the long jobs on Hetzner. Forge is the engineering identity and sits in two seats, one on his laptop that holds the secrets and one always-on in the cloud. As Gene put it, each one is a who, a where, and a role.
He knew the system worked when his wife asked what the mileage was on a car he’d just turned in after a three-year lease. Half a minute later he had 26,350 miles, read off the pixels of one screenshot out of thousands, cross-checked against the file timestamp and the clock visible in the photo of the odometer. That success led him to search his archive for an article he’d been hunting for six years, about the impact of spreadsheet software on the accounting profession. The answer surfaced from his own liked tweets: James Cham pointing to a 2017 Greg Ip article in The Wall Street Journal: 400,000 bookkeeping jobs lost since 1980 against 600,000 accountant and analyst jobs gained, because spreadsheets made accounting cheap enough that we bought a lot more of it. Gene had wanted that citation for his Vibe Coding book and couldn’t find it in time.
Gene’s first warning that his project might not work without Fable’s capabilities actually came before the shutdown. Fable started refusing a task over a YouTube terms of service question and handed the session to Opus, and Gene noticed that Opus couldn’t operate the tools that Fable had built. Gene’s note to himself at the time was “Oh no, this can’t fly the ship I built.”
So when Yegge told him the model was going on hiatus, he had a real plan, which he borrowed from Vernor Vinge’s A Fire Upon the Deep. In Vinge’s novel, how smart a mind can be depends on what region of the galaxy it’s in: A starship built in the Beyond goes progressively dark as it sinks into the Slow Zone. Gene decided to chaos-monkey his model dependency the way Netflix chaos-monkeys infrastructure. In other words, “deliberately pull the smartest model and prove the lesser one can still fly the ship.” In practice, this meant having Fable retrofit all the documentation and write the answer keys while it still could, then running a cold Opus session, giving it nothing but the repo and the docs, to see whether it could pass the battery with no coaching. As Gene recounted, “My worst nightmare [was] that we’ve created everything for Fable, and it will be unusable by Opus.”
He got about a day into his 10-day plan.
At 5:21pm ET on June 12, Anthropic received the government’s directive to suspend access to Fable. Soon after, seats everywhere started returning “There’s an issue with the selected model (claude-fable-5). It may not exist or you may not have access to it.” In Gene’s project, both judgment seats dropped to Opus 4.8 mid-conversation. Gene declared a SEV1, centralized command, and killed five timers on one agent, seven on another, and the crontab. His directive was that every button you push is a trap and some of them blow up the spaceship. A Claude Code cron fired anyway at three in the morning. The ship was on fire, and with Opus on max thinking mode, a single keystroke could take six minutes to send.
Almost none of the failures looked
like failures, just “a normal state quietly going
wrong,” as Gene put it. The smartest seat wrote “bridge
(Fable)” into every log entry all day when it had been Opus
the whole time, because nobody was monitoring. One identity argued
with itself across two models, each trying to disown the
other’s work. Something pushed to main bearing the word
“ratified” when nothing had been ratified. A confident
false claim about a JVM dependency turned out to be refuted by a
single ls -la. There was a green dashboard sitting on
top of all of it. “The hardest traps don’t announce
themselves,” Gene pointed out. “They look like
Tuesday.”
Gene managed a recovery in a few hours, but it wasn’t due to the heroics of a smarter model. It only worked because he was able to reconstruct the documentation for his project, which wasn’t immediately available. But, it turns out, Fable had in fact mostly written it and simply never checked it in anywhere. Gene and Opus went rummaging through Fable’s desk, found the 80%-finished drafts, and used them to rebuild. Two fresh Opus seats, given only those documents, stabilized the ship. That’s the “the amazing ray of hope” to keep in mind if you’re worried about finding yourself in a similar situation, Gene said.
This isn’t just a warning of the potential risks of relying on advanced AI models when the Trump administration is Lucy playing football with Charlie Brown, or perhaps said more generously, playing Netflix-style chaos monkey. What we should take away from Gene’s story is the way that a personal project developed with AI can now have sufficient complexity to require DevOps-level robustness. Individuals are routinely building systems that used to need whole teams to keep standing, and the practices for keeping them standing have only begun to propagate.
Over the years, I’ve observed numerous periods when something that at first mattered to only a handful of organizations tended, a few years later, to matter to everyone. When the stories first came out about Google’s revolutionary approaches to data center architecture and operations, we at O’Reilly were eager to publish about the new frontier. Plenty of people told us not to bother. There was only one Google and nobody else would ever operate at that scale. They were wrong. There are now many companies operating at the scale of Google circa the time they first invented techniques we now all take for granted.
Gene’s system is a personal project run by one guy with 50 repos he wrote mostly in two months, a chunk of it in a single 90-minute pair programming session with Steve Yegge. But it had the failure modes of a large enterprise system because the model let him build something with the complexity of a large enterprise system, and he had passed the point of being able to fit it in his head.
Gene shared a detail that helps to explain why substituting Opus for Fable was so hard. The main CLI utility that everything in his project hinged on had an out-of-date help message. Opus would run it, read that the command didn’t exist, and stop. Fable would read the same message, notice it was surrounded by evidence that the command did exist, go look in the source, decide the help text was wrong, and run it anyway. That’s the behavior the model cards describe when they talk about frontier models routing around obstacles in test environments. The reason Gene couldn’t swap in a lesser model is the same reason the system worked at all.
But it’s also a good reminder that Fable isn’t all-knowing. I’ve noticed in my own work that Fable and ChatGPT 5.6 Sol fail often on their first try, especially if the project isn’t well specified. What they’re great at is figuring out what went wrong, then trying something else, failing and retrying their way all the way to success. Persistence in routing around obstacles is their superpower. Gene and I didn’t talk about that on the show, but it’s something I plan to write more about.
Jaco in the audience asked the obvious question: Isn’t a hard dependency on a hosted frontier model too big a risk for mission-critical work, compared with running a local model with a harness you control?
Gene pointed out that using a local model doesn’t necessarily buy the control that you’d hope for, because the government chaos monkey could jump in there too. There’s active talk that certain classes of models may become illegal to use depending on where they came from.
What does seem to protect you is portability. Gene had avoided trying anything besides Claude Code because he assumed the switching cost was high, the way switching between macOS and Windows used to be a two-day commitment he’d regret halfway through. Then he tried Codex with GPT 5.6 Sol and found the cost of switching close to zero. The skills and prompts ported right over. He’s now using Codex more than half the time and calls it spectacular, which given how he described Fable a month ago is high praise.
He also had a warning for anyone running agents on small models to save money. He’s been studying 22,000 of his own agent conversations, and has identified three patterns, as shown in his figure below.
In his experience, the configuration where a small model owns the work and asks a big model for advice doesn’t work very well. Fidelity gets lost on the way up, like a game of telephone. What ran cleanly was the big model planning, deciding, and checking output, with the small model only executing the plan. When a small model does have to ask a big model for advice, Gene’s fix is to pass along the full original transcript of what he wanted plus explicit permission for the big model to override the small one if it thinks it understands the goal better.
In addition to vibe coding, Gene uses AI to help him with his writing. He said it cut the time to write his Vibe Coding book roughly in half and made it way better. His editor of 10 years told him it was the cleanest handoff she’d ever gotten from him (not a compliment, Gene joked). He’s also uneasy about using AI for writing. He said the old badge of honor among authors was that many start books and few finish, and now everyone who wants to write a book will finish it, and a lot of that will be slop. He would never “vibe write” the way he “vibe codes” and doesn’t think using AI makes his own work slop, but he does see some parallels in how he feels about writing with AI and the way that some senior engineers feel about AI-generated code.
I’m sympathetic, but I’m not sure that he’s right. I had a small experience last week that convinced me that writing with AI might well follow the same arc as coding. AI-generated text will not always be slop, and there will be art in how humans get AI to help them write the things they want, just as we’re learning to do with code.
I was having a conversation with an old friend who I hadn’t seen for many years. He was describing a thread that had started with work he’d done on speech synthesis 30 years before, and how it had come together as a new theory with deep implications, and he wanted help socializing his ideas with some people I know who could be helpful to him. So I asked him to write something that I could pass along.
What he wrote made much less sense to me on the page than it had in conversation. So I gave his email to Claude and asked it to put things in what I thought was the right order. (This has always been the first step in my writing and editing process.) Then I told Claude which paragraphs were clear to me and which weren’t, and asked it to unpack the ones that I was struggling with. We went through numerous iterations till the piece made sense to me. “Writing” with Claude was producing words that increasingly captured my understanding. When I sent it back to my friend to see if I’d gotten it right, he said “not quite” but that my feedback really helped him understand what he needed to do to express his ideas more clearly.
It’s been a long time since I’ve worked directly with authors, but my conversation with Claude reminded me of what I used to do in my early days as an editor. Only with Claude I did something in 15 or 20 minutes that once would have taken me half a day. It’s a power tool, but to use it well, you still have to know what good looks like.
There are many different kinds of writing and editing. What Shakespeare or Jane Austen did with words would have been unthinkable to a medieval monk. There will be writing artforms of the future that may be as different from what we do today as photography is from painting. But it will still be creative art. Much of it will be slop (see Sturgeon’s law), but the best of it will be great.
In 2016 I wrote a piece for MIT’s Sloan Management Review called “Managing the Bots That Are Managing the Business.” The argument was that even then, many of the workers at big tech platforms were bots of one kind or another, and the software engineers at the company were their managers. At Amazon, one bot shows your search, another takes the order, another prepares the shipping manifest, another takes your money. The programmers’ job is to plan the work, set up their electronic workers to succeed, improve their performance, and correct them when they go wrong. The work looks a lot like management to me.
Gene agreed. His sister-in-law is a lawyer at one of the tech giants, working on a consent order that requires proving that every column of data collected is either disclosed or has a documented business reason. Last year the company assigned her an engineer to work through it together task by task. This year her engineering manager wrote her a Claude Code skill that takes a column name, traces it back through the code, and explains what it does. She doesn’t need the engineer.
So a lot of work today is either creating bots or managing bots. Gene’s sister-in-law had spent her career without ever being able to do either. Now that’s changing.
Asked who’s safest from all this upheaval, Gene quoted Kent Beck, who says software success has always come down to two people, the person with the problem and the person who can fix it, and that the closer together you can get those two the better the outcome. The beauty of coding with AI is that it can narrow that gap. It can even turn those two people into one.
If it takes something like 10,000 hours to get good at an instrument or a sport, how many have most of us put into AI yet? Gene thinks the curve of how much you trust AI and how well you can predict what it will do rises with use, and that the only reliable way people accumulate that many hours is by enjoying themselves. What everyone at Foo Camp had in common, I noted and Gene echoed, was that we all love playing with AI.
I gave a talk back around 2008 called “Why I Love Hackers.” I made the point that so much of what turned into the future, open source and the web for example, came from people doing things for the hell of it rather than from the VCs and entrepreneurs Silicon Valley celebrates.
All you hear about in AI is the money story, but Gene’s app started with a 90-minute pair programming session with Steve Yegge on a problem he’d wanted to solve for a decade and never had a reason to. They finished the first version in 47 minutes.
So harden your systems, write the documentation while the smart model is still there to write it, and keep your escape routes open, but also don’t forget to go build something you have no particular reason to build other than that it scratches your own itch.
You can watch the full episode on YouTube. And on August 3, I’ll be speaking with writer and technology leader Drew Breunig. Registration is open if you’d like to attend live.
Gene’s Enterprise AI Summit is in Charlotte, October 7–8. His new book with Steve Yegge is Vibe Coding.
Valhalla's Things: Late Victorian Vampire Shirt [Planet Debian]
Posted on July 27, 2026
Tags: madeof:atoms, craft:sewing, FreeSoftWear

The recurring joke is that because of some health issues, in summer I dress like a Victorian Vampire.
But how would an actual Late Victorian Vampire dress? Picture her, she would look like some kind of eccentric gentlewoman, as vampires usually do, probably with a style that is a bit conservative, rather than following the latest fashions.

Now, she wouldn’t probably wear men’s shirts. But what if she was a lesbian1 vampire? Wouldn’t she need a fancy, frilly shirt to go with her tailored cycling suit when she’s out seducing the more active ladies in the neighbourhood?
Or maybe not. It’s not making a lot of sense, is it? But I do have a lot of shirt fabric in my stash2, and I could use a few more shirts that were practical and comfortable, but also somewhat over the top.
For the practical and comfortable I went to my trusted 1880s shirt, while for the over the top part I looked at inspiration from the earlier 18th century frilly shirts, and their later imitations.
I decided to use some nice cotton batiste I had bought quite a few years ago to make one of my first historically inspired shirtwaists: I may have a tendency to buy a bit more fabric than actually needed by the pattern, but that’s what everybody does, right?
For the ruffles I decided to use a lighter weight cotton voile, also from the stash.

At the front, I wanted the ruffle to be inserted in the yoke, but I was also whipstitching the gathers to it to make them neater, so I started bu attaching the yoke lining to the gathered front, then I whipstitched the ruffle to the front, catching each gather, and finally I whipstitched the other yoke on the ruffle and the rest of the gathered front.

And then after sewing the collar, I realized that this way the slit would have remained open in the front (or the collar too narrow), so I had to unpick the front part of the yoke, and sew it again, this time leaving an excess of fabric as wide as half the placket width from the pattern, to be sewn directly in the collar band.
From then, things progressed smoothly, with some interruptions, until I got to the first sleeve, which I failed to insert twice, as one does.

On the third attempt, with a different method, I succeeded, I tried the shirt on, and it already felt extra.

But it could be even more extra. With some ruffles also at the collar.

The shirt had been made with a simple collar band, and I could have just added the ruffle to it, but I also wanted to be able to wear it with other detachable collars, so I decided to make another collar band with ruffles, to wear on top.
And that was mostly it, except for the reinforcement patches at the side seams and cuffs: I love having them, because they make the seam end neater and stronger, but they are a bit of a hassle to make, so they got postponed a few days.

But finally, the shirt was done.
And I tried it on, and it was good.
But now I really need a pair of cycling breeches, don’t I?
How I see the network evolving [Scripting News]
A frequently asked question about RSS.chat. How about adding external feeds to the timeline. Of course we thought of doing this, and even started development, you might even find some traces in the code of that attempt.
The thing about bootstraps is you can't anticipate all the questions in advance, and thus can't have answers prepared for them.
RSS.chat is a group chat app that uses RSS and OPML to present its face to the world, along with an API that still needs more docs. It's similar to half of Mastodon, and we're going for something completely different. People will want to run all-size workgroups. I like having one with 20 or 30 people, friends who develop software. I don't mind doing a little bit of moderation, but I don't want to drive deliberately into a scale that only works if you have extensive and very expensive moderation.
"Small pieces loosely joined" means we have a great writing app, and connect to feed reading apps, ones with a few new features to do the things people want to do with a social network that happens to use RSS and OPML to get stuff around the net. It would be a different kind of feed reader but the underlying technology is identical, because we built on a set of web standards, widely supported by feed readers. This is a UI exploration for them, primarily.
Just to be sure everyone understands -- I already have such an app, called FeedLand. You can set up an account there for free. And read the docs. It may not have all the features we'll need, but it will be a good place to start.
FeedLand supports a crucial feature that most readers don't -- subscribable lists of feeds. If you want a collection of things to read that you can reply to even if you aren't on the site, that's where we're going to put that feature, that's where all the RSS.chat and compatible apps can be in one flow, arranged however you like. And from a user interface standpoint, we can make it look like it's all happening in one app, thanks to the rssCloud protocol and the websockets firehose feature in RSS.chat FeedLand has the same feature.
We decided there was a line there, that RSS.chat would be one of the small pieces as would FeedLand, and both would be replaceable which is the other fundamental value. And with FeedLand and dynamic lists, will come the user interface people ask for. Many different user interfaces I hope because another way we've been cheated by the dominatioin of twitter-like social networks is there's no room to try out radically new ideas. Software should move. But Twitter didn't live on the web, so it didn't have the ethos of small pieces loosely joined. I know Jack wanted to do this, I had lunch with him in 2007 when he described the protocol, and I was very enthusiastic. But it never got out because the juggernaut that Twitter became didn't leave any room for new architectures.
I hope this clears it up. I want RSS.chat to be the coral reef for a new network of feed-based apps running on the web that does what social networks do, but with no one owning it, and everyone gets to play.
A new utility exports the contents of a Frontier object database into a single large JSON file. I needed this because I'm preparing to move my code editing suite to Drummer running on new Mac hardware. Took a long time to get here, but with Claude's help the project looks possible. In the meantime the list of stuff I want to do with RSS.chat, while much shorter than it was, still has some juicy bits in it.
Security updates for Monday [LWN.net]
Security updates have been issued by Debian (chromium, hplip, and linux-6.1), Fedora (firefox, GitPython, google-osconfig-agent, lego, libgit2, libreswan, libwebsockets, moby-engine, p11-kit, pam, python-idna, rust-libgit2-sys, skopeo, systemd, trafficserver, webkitgtk, and xrdp), Mageia (giflib, graphite2, libnfs, vorbis-tools, wget, and yelp), Red Hat (firefox, thunderbird, and webkit2gtk3), and SUSE (amazon-ecs-init, chromedriver, ffmpeg-7, ffmpeg-8, firefox, google-osconfig-agent, gpg2, java-17-openjdk, java-25-openjdk, kernel, libsrt1_5, nginx, perl-HTTP-Date, perl-XML-Bare, proftpd, python-pyasn1, python-soupsieve, python313-astropy, python313-urwid, systemd, thunderbird, and trivy).
The Hard Goodbye [The Daily WTF]
One minute, you’re fine. The next, you’re doubled over with tears spilling down your face while an aching black hole in your heart threatens to drag you into oblivion.
Grief’s funny like that.
Aggie Shaw, my old friend and mentor, had died of a sudden illness at home. She’d lived alone. Who found her? How? I didn’t know and never would. There was so much I’d never gotten a chance to tell her. She would’ve listened to me vent the frustrations and resentments I’d been burying over the years for sanity’s sake. She would’ve known what to do.
God, I missed her.
As if that weren’t bad enough, the brass expected Tech Support to go right back to business as usual. Maybe the rest of them wanted to bury their heads in casework. I didn’t. Between this, the horrible winter commute, and the promotion I’d never asked for, going back to the office felt impossible.
My boss wouldn’t let me use sick time. He really should’ve; the grief had hit me like a goddamn truck. Good thing the start of the new year a while back had refreshed my stack of paid time off. I started burning it from both ends.
When I wasn’t flat on my back or nursing a migraine, I was stumbling around my tiny apartment with half a brain cell, attending to the bare minimum of survival. Eat this. Drink that. Where’d I leave my smokes? In the rare times I could think, my thoughts were plagued with darkness. I didn’t know if I’d ever make it out of that mess.
Then, Megan called.
It was nearing noon that day. I was lying in bed, peering out my window at a dull gray sky and falling snow. I’d let everything else dump to voicemail, but when she rang, I answered with the urgency of a drowning victim grabbing a buoy.
“Hey,” she greeted, her voice subdued. “I heard about what happened. I’m really sorry.”
There was so much tumbling through my head, but none of it wanted to tumble out. “Thanks,” I managed.
“How are you?”
“Lousy.”
“Wanna meet up somewhere that isn’t work?” she asked. “The Apex Tower has a big indoor courtyard. I eat lunch there sometimes. If we go around 10 in the morning, we’d probably have it to ourselves.”
Something in me leapt at the offer. “I’d like that. Tomorrow?” I would still be on vacation-in-name-only.
“Sure,” Megan replied. “See you then!”
I had something to look forward to. Part of my emotional burden lifted right then and there.
It was a little easier to get out of bed the next morning. I took the bus to an unfamiliar spot of downtown, crossed a slush-covered plaza, and entered a skyscraper. The warm ground-floor courtyard boasted marble floors and immense windows for walls. Potted trees and flowers lined the perimeter. Huh, I’d forgotten those even existed.
Megan was already seated at a metal table flanked by two chairs. When she spotted me, she jumped to her feet and waved, a knowing and sympathetic look on her face. She waited until I reached the chair across from her to say, “You look like you could use a hug.”
I froze with surprise, one hand on my hat in the process of removing it. A hug? My puzzled brain tried to figure out just when I’d been hugged last. I had no idea. My body wasn’t waiting around for an answer. It was already turning toward her, arms raised.
Megan silently walked into my embrace and hugged back firmly.
Tears spilled down my face. My heart ached. And yet, another part of my invisible burden suddenly lifted. Something in me had been dying for this, for my pain to be seen.
“Thanks,” I muttered.
We parted. While I doffed my coat and hat, Megan returned to her chair, sitting back down across from me. “Whatever you need to get off your chest, go for it,” she offered.
I sat myself down, sniffled, blotted my eyes on my sleeve, then glanced high and low to confirm something I already knew: we were alone in that big empty joint. Still, I hesitated. At first, I wasn’t even sure I remembered how to string words together to form a sentence. But then it started gushing out of me like a busted water main. “You ever hear of rubber-duck debugging?”
Megan blinked. “No.”
Surprising. Most developers had, but she was fresh out of college. “A programmer came up with it way-back-when,” I explained. “Whenever you’re coding something and get real stuck on a bug or error, you find yourself a rubber duck. Go line by line in your code and explain to the duck, out loud, what you want the code to do. Eventually, you and the duck will find the point where your intentions and reality don’t match up.”
She smiled. “I like that.”
“Aggie had a rubber duck in her cube she called RD,” I continued. “Whenever she was stuck with a support issue or even a personal problem, didn’t know where to go next, she’d tell RD about it. He’d help her figure out what to do or ask next.
“When I first got hired, Aggie showed me the ropes. She always said, the best way to troubleshoot is to be the duck yourself. Get people, or hardware, or software to explain what they’re trying to do. You’ll figure out how to proceed.
“Some people are so upset at the problem that they take it out on the nearest target: the support rep who comes to help. Aggie could charm even the angriest people into cooperating with her. She was the best. She was the best, and all she got for her trouble was more work. Now that she’s no longer of any use to them, they’ve swept her under the rug. They want me to replace her!”
Megan’s eyes went wide.
“I’m no damn manager! I told my boss where to stick it. I’m riding out my PTO, and then hell if I know what’s next. I can’t go back there, I’d just be dying in place. And for what? So the bum at the top of the food chain can have a third yacht?” I leaned toward Megan, my gaze pleading with hers. “Look, I ain’t afraid of death. I’m afraid of dying before I’ve lived. I don’t want my only contribution to the world to be reimaging laptops and rescuing old printers. I can’t do it anymore. Can’t sit around complaining, either, I gotta do something! I gotta get the hell outta that joint!”
There it was: out in the open again, no longer whispered but shouted from the core of my being. Leaving was the right call for me. I felt it in my bones.
Megan held eye contact, blinking a few times. “I remember you saying you wanted to leave. If you did, what would you do?”
I’d never really let myself play with my little pipe dream. “I dunno exactly. But I’ve bought myself time to think it over. There are options, like going freelance.”
She blinked again. “Freelance tech support?”
“I majored in Computer Science back in school,” I said.
Her eyes went wide again. “Really?”
“Haven’t flexed those muscles in a while, but I could. Or I could get into something totally different. And you could come with.” Well aware of how unhappy she was at that joint, I sat up straighter in my chair. “We could start our own IT group. No bosses. Everyone an equal partner with an equal say in how things are run. And we could rope in anyone else who wants to come with!”
Megan seemed intrigued at first, but then sobered. “What about bills? Rent? Everything?”
“We could pool our resources and look out for each other,” I said. “That’d give us some time to get our feet under us.”
Her expression turned strained. “Aren’t you scared?”
“You bet I’m scared!” I glanced down at the table. “When I first got outta school, the idea of spending the whole rest of my life at a full-time job terrified me. But it seemed like everyone around me was fine with it. I thought I was the problem. Bit my lip, put my head down … for 20 years.” I glanced back up at her pleadingly. “Has it gotten any better? No. I’ve just gotten used to it. Another 20 years, and I won’t be any good for anything else. That’s if I make it that long! Aggie didn’t. Look, there’s no right or wrong answer, just what’s right for you. Listen to your gut. If you don’t like where you’re at, I’m living proof that staying the course is the wrong move. Leaving is risky … but so’s staying put, you know. The next round of layoffs could be right around the corner. You might get stuck babysitting that scheduling algorithm you were telling me about.”
Megan listened intently to my rant. Finally, she nodded. “You’re right. I’m not happy where I am, and it won’t get any better. Time to try something different.”
Still mired in grief, I had at least gained a new sense of purpose to keep me afloat in the storm. Megan went back to work like nothing had happened. With my remaining time off from work, I did some research into our options. Hunting around online turned up a highly-rated accountant who walked me through the bare-minimum corporate setup, the taxes and bookkeeping and all that. We both tracked down advice online from other freelancers who’d been where we were now. And we put out feelers among our coworkers. Our questions struck some nerves, but also stirred considerable interest. Reynaldo was in; we had ourselves a network guy. Sanjay, a backend developer, was a maybe who wanted more time to think it over.
There were plenty who wanted to join us badly, but couldn’t swing it due to debt, insurance, things like that. I urged them to think about one thing they could improve at work, one cause they could get behind. Whatever it was, I told them to start making it happen, one step at a time.
As my PTO bled away, I found myself half-exhilarated, half-scared outta my wits.
Finally, it was time to go back. That first morning seemed like any other, but with my secret purpose in mind, I sat on the bus and walked the bone-chilling streets with a secret strength hardening my spine. When the old joint appeared ahead of me, more foe than friend, I felt relief knowing our remaining time together was short.
Tech Support seemed no different; everyone was quietly minding their own business. I’d had plenty of time to think about what I’d do on the first day. My plan involved skipping my cube and heading straight to Aggie’s old office. After my talk with Megan, I’d decided to go looking for something. I had a snowball’s chance in hell of finding it, but something in me insisted on trying.
As I walked up to the closed front door, the first thing I noticed was my name, not hers, standing out in fresh, gleaming gold letters against the frosted glass. Pushing past revulsion, I grasped the doorknob and turned it.
The door gave way to darkness. I flipped the light switch with my other hand and found an empty desk, gutted shelves, bare walls. Looked like someone had come through with a giant trash can and thrown out whatever wasn’t bolted down. My revulsion intensified, but hey, at least I wasn’t trespassing. I shut the door to “my” office behind me and slowly approached the desk.
There was nothing to be found out in the open, not even a stray paperclip. I sat down hard in her old chair, reeling for a minute. Then I searched the desk drawers in front of me: first the bank on the left, then the right. Empty. I pulled out the drawer just under the desk—and there he was, swimming between a few stray pencils: a rubber duck about 3 inches tall. RD in the flesh.
It was as if Aggie had put him there for me to find. I couldn’t believe it. My spirits soared in a way they hadn’t for ages.
Just as I slipped the duck into my trench coat pocket, the door to her—my—office swung open again, making me freeze. There stood Bill, my boss.
“I saw the lights on in here.” A smug smile spread over his face. “I knew you’d be back. Bet it feels great, knowing you’re done babysitting all those morons and their computer equipment!”
Was that it? Twenty-odd years of my life boiled down into one cynical statement? No, there was more to it than that. For every bizarre war story, there were tales of grateful people helped, challenging problems solved. It hadn't been all bad. But it was over, just not the way Bill thought.
An electric mix of nerves and resolve jolted me to my feet. “I told you to find someone else, and I meant it. This is my two-week notice.”
I left Bill agape in that threshold and hurried back to my old cube, where my company-assigned laptop, docking station, and phone still resided. I hung up my coat, sank into my old chair, and booted up the machine. I had such a mountain of email in my inbox that I didn’t even want to look at it, but there was one message at the top that I absolutely couldn’t pry my eyes away from:
I moved some things around on my calendar. 4:00 PM today is open. Please come to the executive floor.
-Leila
To be continued ...
The site got hacked and is being worked on. Hopefully it’ll all be back to normal in a day or three?
For now you can view new pages at Patreon whether you’re a supporter there or not.
Issue 47 – Greta’s Wedding Pt. 2 – 06 [Comics Archive - Spinnyverse]
The post Issue 47 – Greta’s Wedding Pt. 2 – 06 appeared first on Spinnyverse.
Mozilla gives Haiku permission to use the Firefox name [OSnews]
Haiku has a Firefox port, but due to Mozilla’s trademark policies, it’s actually called Iceweasel. After some back-and-forth with Mozilla, the browser maker has no given Haiku permission to officially use the Firefox name for the port.
But don’t worry, Iceweasel isn’t going anywhere. I plan to maintain both. The idea is to keep Iceweasel as the privacy-friendly, telemetry-free build, while Firefox will be the fully official, Mozilla-compliant build (with telemetry enabled, once I manage to fix the Glean rust issues).
↫ 3dEyes on the Haiku forums
This seems like a nice solution, and happens to make sure Haiku users can actually choose between standard Firefox and what is essentially a more private “fork”. A great outcome.
Java deprecates support for macOS x86 [OSnews]
Apple has transitioned its hardware products to the AArch64 processor architecture and is phasing out support for x64. Oracle engineers will thus stop maintaining the macOS/x64 port as of JDK 27. Maintaining the port is a significant burden.
↫ JEP 541: Deprecate the macOS/x64 Port for Removal
The port won’t yet be removed, but will be in a future release. Considering the number of Intel Macs that must surely still be in use today, this does seem a little premature to me.
That is the first line of the 80s microcomputer BASIC game The Wizard’s Castle initially written for the Exidy Sorcerer platform.
It’s a
REMark statement, a comment in that particular language.10is the line number, if you’re unfamiliar with languages that had such things.But the interesting part was this
"_(C2SLFF4mess. A typo or garbage? No. It appears verbatim in the source code as originally published in the July, 1980 issue of Recreational Computing.What the heck is it?
↫ Brian “Beej” Hall
A fun investigation to brighten up your Monday.
Pluralistic: How the EU can punish Google (despite Trump) (27 Jul 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

The "Serenity Prayer" (Serenity to accept things I can't change/Courage to change the things I can/Wisdom to know the difference) is usually cited as pop psychology or addiction recovery advice, but I think there's a place for it in policymaking.
Take the EU's fight against US Big Tech. During the Biden years, the EU's tech policy matured into something serious and ambitious, culminating in the Digital Markets Act (DMA) and Digital Services Act (DSA), a pair of big, muscular policies that would curb Big Tech's most abusive conduct. The EU's ambition didn't occur in a vacuum: it was part of a global wave of antitrust fervor whose top agenda item was reining in tech:
https://pluralistic.net/2025/06/28/mamdani/#trustbusting
In this fight, the EU had important partners all over the world. For example, South Korea and Japan used the facts uncovered through EU enforcement action against Google and Apple to pursue similar cases:
https://pluralistic.net/2024/04/10/an-injury-to-one/#is-an-injury-to-all
But the EU's most important partner in its fight against American Big Tech was America. Biden's trustbusters – Lina Khan, Rohit Chopra, Jonathan Kanter, Tim Wu, et al – were every bit as serious about Big Tech power as anyone in the EU. After all, the American public are always the first victims of any new tech scam, and America is the only country with a large, affluent population who lack modern, comprehensive consumer privacy protection, making Americans highly prized prey for tech companies:
https://pluralistic.net/2025/04/23/zuckerstreisand/#zdgaf
With America and the EU on the same side of the tech fight, the world had a fighting chance. Tech knew this, which is why Big Tech backed Trump hard during the 2024 election and aggressively curried his favor after he won. From the tech barons who paid $1m each to sit behind Trump on the inaugural dais to the millions tech companies donated to Trump's Epstein Ballroom at the White House, tech has made it clear that it supports anything Trump wants to do, provided he shields Big Tech from any attempt to limit their ability to spy on and steal from Americans and the world.
Even before he took office, Trump made it clear how he would reward tech's loyalty: weeks before the inauguration, Trump went to Davos and threatened the EU with reprisals if they enforced the DSA or DMA against his tech companies:
Trump wasted no time leaning on US trading partners on behalf of Big Tech. He bullied Canadian PM Mark Carney into dropping his plan to tax US tech companies. Big Tech uses a variety of tax-cheating gambits to evade taxation around the world, making it impossible for (tax-paying) domestic companies to compete:
Trump also got UK PM Keir Starmer to drop his plan to tax tech:
And he got the EU to roll back its plan to regulate AI:
https://fortune.com/2025/11/07/eu-ai-act-weaken-regulation-delay-big-tech-trump-government/
None of the governments that caved to Trump got anything in return. As I've written:
Give Trump everything he asks for and he'll demand more. Deny Trump anything and he'll demand more. Sign a contract with Trump and he'll break it. Send Trump an invoice and he'll stiff you. For Trump, "the art of the deal" can be summed up in one word: renege.
https://pluralistic.net/2026/07/22/table-flipper/#graveyard-of-indispensable-nations
Case in point: after the EU surrendered to Trump on AI regulation, Trump announced that a on ban EU officials who had worked on the Digital Services Act from traveling to the USA:
Then, after the EU made more concessions to Trump, he announced a ban on even more EU officials:
Trump ordered his tech giants to dig through EU officials' private correspondence so he can figure out who to ban next:
Trump's tech companies got the memo. When the EU ordered Apple to follow the law, Apple told the EU to fuck off:
https://pluralistic.net/2024/02/06/spoil-the-bunch/#dma
After all, Apple is a key partner in the Trump administration's mass deportations. Apple blocked an iPhone app that warns Apple customers if they're about to be kidnapped or murdered by ICE. Trump needs Apple, just as much as Apple needs Trump:
https://pluralistic.net/2025/10/06/rogue-capitalism/#orphaned-syrian-refugees-need-not-apply
Despite this, the EU keeps trying to enforce its laws against Trump's companies. Last week, the Commission announced a $1b fine against Google for violating the Digital Services Act with conduct that cost Europeans many billions:
In other words, Google wasn't even being ordered to disgorge all the money it stole, just some of it. Remember, a fine is a price: the EU's fine here will only make this kind of cheating slightly less profitable.
Nevertheless, Trump responded immediately by threatening the EU with many billions more in tariffs if they continue to attempt to enforce the law against one of his companies:
Trump, the European Commission and Google all know this is about more than one $1b fine. The DSA and DMA both provide for steeply rising fines and other penalties for repeat offenders, and Google clearly has no plan to end its very profitable European crime-spree. Trump's threats aren't a bid to kill this enforcement – Trump wants to kill all enforcement.
Retaliatory tariffs aren't the only weapon Trump has at his disposal. If the EU (or any other country) levies a serious fine against Google, Apple, Oracle, Microsoft, or any of Trump's other tech companies, Trump can order US banks not to turn over those fines, even after the EU sends them a court order for the money. If a bank defies Trump, he can threaten to yank its charter. Or he could just run the same swindle he pulled on Tiktok: stealing the whole company and selling it to one of his buddies, who will run it the way Trump wants.
The reality is that without America's assistance, the EU has precious little hope of forcing American companies to do things they don't want to do. In terms of the Serenity Prayer, this is "a thing they cannot change."
The Serenity Prayer doesn't stop with "things you can't change." The next line seeks "the courage to change the things I can." The EU has no control over Google's conduct, but it has total control over its own conduct.
Specifically, the EU could get rid of the laws that ban European companies from modifying US tech exports. The EU adopted the Copyright Directive in 2001. Article 6 of the EUCD makes it a crime to reverse-engineer and modify a device without the manufacturer's permission. This law was adopted under pressure from the US Trade Representative, who threatened the EU with tariffs on its exports unless it adopted an "anticircumvention rule" that banned EU technologists from making products that let Europeans prevent US tech companies from stealing their money and data":
https://pluralistic.net/2026/01/01/39c3/#the-new-coalition
This law is still in force in the EU, despite the fact that Trump (predictably) reneged on the US side of the bargain, hitting the EU with massive tariffs and even threatening to steal part of Denmark.
Article 6 of the Copyright Directive is the reason European tech companies can't jailbreak America's apps, whether that's to get its government and corporate data off of US platforms:
https://pluralistic.net/2025/10/15/freedom-of-movement/#data-dieselgate
Or to modify American social media apps to respect EU privacy laws:
https://pluralistic.net/2026/01/30/zucksauce/#gandersauce
The EU can't control what Apple or Google do. But the EU can absolutely decide whether Trump's companies can use Europe's courts to destroy European companies that defend the privacy and economic integrity of the European people.
If the EU kills off Article 6 of the Copyright Directive, they can use European companies to bring Google and Apple's defective tech exports into compliance with European law. Unlike Trump's companies, those companies can be forced to pay their taxes and respect their users' privacy, labor and consumer rights.
That's the Serenity Prayer's "wisdom to know the difference."

Imagine a World in Which Microsoft Sold Cars the Way It Sells Software https://www.thesling.org/imagine-a-world-in-which-microsoft-sold-cars-the-way-it-sells-software/
Tesla swapped a solar owner’s lease contract for the Book of Enoch https://electrek.co/2026/07/23/tesla-solar-lease-contract-book-of-enoch/
Canadian legislator reads out apparent LLM response in floor speech https://arstechnica.com/ai/2026/07/canadian-legislator-reads-out-apparent-llm-response-in-floor-speech/
The Resistance Liberal Lawyers Helping Trump Take Over the Media https://www.thebignewsletter.com/p/the-resistance-liberal-lawyers-helping
#25yrsago Chilling Effects https://web.archive.org/web/20010801172448/http://eon.law.harvard.edu/chill/
#25yrsago 13-year-old hacker's book deal: “The Unofficial Guide to Ethical Hacking" https://web.archive.org/web/20011102164905/http://www.vnunet.com/News/1124279
#20yrsago France’s new copyright law slaughters kills use and open source https://web.archive.org/web/20060812223624/http://soufron.typhon.net/spip.php?article150
#20yrsago Billy Bragg gets MySpace’s terms of service changed https://web.archive.org/web/20100809150257/http://blogs.myspace.com/index.cfm?fuseaction=blog.view&friendID=34570397&blogID=137856388&MyToken=626131d4-c695-42ba-867b-754b9e2bfeaa
#15yrsago Buy an Old West town in South Dakota for $0.8M https://web.archive.org/web/20110728012824/https://edition.cnn.com/2011/US/07/27/south.dakota.town.sale/index.html
#15yrsago Glenn Beck compares murdered Norway campers to “Hitler Youth” https://www.latimes.com/archives/blogs/top-of-the-ticket/story/2011-07-25/opinion-glenn-beck-hits-new-low-compares-norway-victims-to-hitler-youth
#15yrsago 3 Little Pigs rendered into Papua New Guinea pidgin https://www.abc.net.au/reslib/200709/r184705_686227.mp3
#15yrsago Why they call the Tories “the nasty party” https://www.theguardian.com/uk/2011/jul/28/tory-lib-dems-clash-on-policy
#15yrsago US ISP/copyright deal: a one-sided private law for corporations, without public interest https://www.eff.org/deeplinks/2011/07/graduated-response-deal-what-if-users-had-been
#15yrsago Copyright extortionist ripped off his competitor’s threatening material https://torrentfreak.com/anti-piracy-lawyers-rip-off-work-from-competitor-110727/
#15yrsago Karl Schroeder: Science fiction versus structured study of the future, sf as aspiration https://www.antipope.org/charlie/blog-static/2011/07/beyond-prediction.html
#15yrsago Norwegian PM refuses to let terrorist attacks drive his country to intolerance and paranoid “security” https://www.nytimes.com/2011/07/28/world/europe/28norway.html?_r=1
#15yrsago Man with camera in park who fled angry parent sought by police (turns out he was taking pix of his grandson) https://web.archive.org/web/20110829052009/https://pixiq.com/article/man-photographing-grandkid-in-park-deemed-suspicious
#10yrsago Laurie Penny at the DNC: “Dissent will not be tolerated. Protest will not be permitted.” https://medium.com/welcome-to-the-scream-room/bad-moon-rising-8cd348df50e9#.9lhcixjn1
#10yrsago The Ice Bucket Challenge did not fund a breakthrough in ALS treatment https://web.archive.org/web/20160914225439/http://www.healthnewsreview.org/2016/07/ice-bucket-challenge-breakthrough-experts-pour-cold-water-superficial-reporting/
#10yrsago Silicon Valley banks offer tech giants’ new hires 100% mortgages on 24 hours’ notice https://web.archive.org/web/20160727095557/http://www.bloomberg.com/news/articles/2016-07-27/zero-down-on-a-2-million-house-is-no-problem-in-silicon-valley
#10yrsago Patent fighters attack the crown jewels of three of America’s worst patent trolls https://web.archive.org/web/20160727191625/https://arstechnica.com/tech-policy/2016/07/patent-defense-group-seeks-to-knock-out-top-three-trolls-of-2015/
#10yrsago Censorship company drops bogus lawsuit against researchers who outed them https://citizenlab.ca/research-interest/
#10yrsago Photographer sues Getty Images for $1B because they’re charging for pix she donated to LoC https://hyperallergic.com/photographer-files-1-billion-suit-against-getty-for-licensing-her-public-domain-images/
#10yrsago First-ever Michelin star for street food awarded to Singaporean hawker stalls https://web.archive.org/web/20160723174014/http://uk.reuters.com/article/us-singapore-food-hawkers-michelin-star-idUKKCN1021XA
#10yrsago Highest-paid CEOs generate lowest shareholder returns https://www.msci.com/documents/10199/91a7f92b-d4ba-4d29-ae5f-8022f9bb944d
#10yrsago Olympics to companies: mentioning “Olympics” in social media is a trademark violation #https://web.archive.org/web/20160727075209/https://www.espn.com/olympics/story/_/id/17120510/united-states-olympic-committee-battle-athletes-companies-sponsor-not-olympics
#10yrsago Pro-tar-sands activists say dirty Canadian oil is better because “lesbians are hot” https://www.joeydevilla.com/2016/07/26/this-ill-advised-hot-lesbians-ad-promoting-canadian-vs-saudi-oil-is-real-and-not-a-parody-by-the-onion/
#5yrsago The infosec apocalypse is nigh https://pluralistic.net/2021/07/27/gas-on-the-fire/#a-safe-place-for-dangerous-ideas
#1yrago How twiddling enshittifies your brain https://pluralistic.net/2025/07/28/twiddlehazard/#outboard-brains-considered-harmful

Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
Sydney: The Festival of Dangerous Ideas, Aug 23-24
https://festivalofdangerousideas.com/program/
Melbourne: Enshittification at the Wheeler Centre, Aug 25
https://www.wheelercentre.com/events-tickets/season-2026/cory-doctorow-enshittification
Brighton: The Reverse Centaur's Guide to Life After AI with
Carole Cadwalladr (Brighton Dome), Sep 8
https://brightondome.org/whats-on/LSC-cory-doctorow-the-reverse-centaurs-guide-to-life-after-ai/
London: The Reverse Centaur's Guide to Life After AI with Riley
Quinn (Foyle's Picadilly), Sep 9
https://www.foyles.co.uk/events/enshittification-cory-doctorow-riley-quinn
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
Will AI ever come alive, and what happens if it does? (BBC
News)
https://www.youtube.com/watch?v=Lzk4o3fPZZE
Waarom jij straks het hulpje van AI bent (VPRO)
https://www.youtube.com/watch?v=tOnvR2fs8CA
Talk Tech Bock (Vera Linß)
https://www.youtube.com/watch?v=3PFjGvQoBgc
How To Think About AI Before It’s Too Late (This Is
Hell)
https://thisishell.com/episodes/1919
"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.

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
Cognyte Sells a Mobile Cell Surveillance Van [Schneier on Security]
Yet another Israeli mass surveillance company:
Made by Israeli surveillance company Cognyte, the tech simulates a mobile phone tower, which forces nearby phones to connect to it. That enables cops to keep tabs on any phones in the vicinity whether they’re owned by a suspect in a case or not. Cognyte’s contract with the state of Texas reveals that the simulator, called FalcoNet, can be concealed within the vehicles, hidden in a backpack for on-foot missions or attached to a helicopter. It’s the same technology as the infamous Stingray, one of the original cell-site simulators made by defense giant L3Harris.
Freexian Collaborators: Monthly report about Debian Long Term Support, June 2026 (by Thorsten Alteholz) [Planet Debian]

The Debian LTS Team, funded by [Freexian’s Debian LTS offering] (https://www.freexian.com/lts/debian/), is pleased to report its activities for June.
During the month of June, 20 contributors have been paid to work on Debian LTS (links to individual contributor reports are located below).
The team released 48 DLAs fixing 231 CVEs.
Debian 12 (“bookworm”) has been handed over to the LTS Team on June 11th. During this handover Sylvain helped to update relevant tools and documentation. If you benefit from Debian, especially during the full 5-year lifecycle, please consider subscribing as a sponsor of Debian LTS: https://www.freexian.com/lts/debian/.
Moreover, Debian 11 (“bullseye”) will reach the end of the Debian LTS period on August 31st. After that, Freexian will continue the security support 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:
Sponsors that joined recently are in bold.
Optimizing yourself into a corner [Seth's Blog]
Organizations thrive on incremental improvement. They find a stable foundation and then build a feedback loop of relentless improvement.
This leads to great efficiency, higher productivity and more profits. It enables more throughput and builds market share.
Except things change.
Optimized offerings are brittle. When the foundation shifts, all of that incremental improvement breaks into shards.
When the dust settles, the optimized alternative is almost always surpassed by the resilient one.
A Wolv In Creep's Clothing [Penny Arcade]
New Comic: A Wolv In Creep's Clothing
Iranian girls' school attack [Richard Stallman's Political Notes]
When a US missile hit an Iranian girls' school, the CIA at first said that the missile in the photos did not look like an American missile. A day later they corrected that and said it indeed was one. But he stuck to the appealing but impossible claim that Iran had fired it.
I'm pretty sure the US military did not choose to attack that building knowing it had been carved out of the adjoining naval base and converted into a school. Even a monster who cared nothing about killing Iranian civilians would have sought to avoid the bad publicity that would result. Meanwhile, the circumstances, including the pressure to attack fast, facilitated such mistakes.
The tendency for belligerent acts to cause unintended consequences due to ignorance of facts is called the "fog of war". It is inescapable: war implies mistakes with consequences, no matter how much one tries to avoid them. The implication of that is, one should try hard to choose a path other than war.
Juan Jairo Coronilla Durán [Richard Stallman's Political Notes]
Deportation thugs approached Juan Jairo Coronilla Durán, a Mexican tourist, and terrified him so much that he ran away into traffic and was killed by a truck.
Coronillo had a valid tourist visa, so if our legal system were functioning properly he should not have felt threatened by them. But our legal system has been messed up intentionally by magats to the point that no one can be confident of safety around them.
Europe extreme drought [Richard Stallman's Political Notes]
*Extreme heat supercharged by the climate crisis is sucking Europe dry in summer and intensifying the drought hitting the continent, a scientific analysis has found.*
Satellites launch pollutes atmosphere [Richard Stallman's Political Notes]
The greatly increased rate of launching satellites is polluting the upper atmosphere. Building datacenters in space would lead to much more pollution.
I can't believe that space datacenters could be cost-competitive with datacenters on Earth. I think the idea is not serious, and that oligarchs are using it as an excuse for manipulating stock prices, The idea doesn't need to be workable to achieve that purpose.
Bully's nuclear deal [Richard Stallman's Political Notes]
The bully's nuclear deal with Salafi Arabia makes a concession he was ready to fight to deny to Iran. His actions make no sense except as means to portray himself as "the winner".
Israeli Settler-Soldiers [Richard Stallman's Political Notes]
*Israeli Settler-Soldiers Took Me on a West Bank Tour Celebrating Evictions of Palestinians.*
New Geneva Convention [Richard Stallman's Political Notes]
(satire) *New Geneva Convention Allows Use Of Child Soldiers With Signed Permission Slip.*
US cyclosporiasis outbreak [Richard Stallman's Political Notes]
*[The saboteur in chief]'s deep public health cuts hinder response to record US cyclosporiasis outbreak. Experts say layoffs, reduced disease surveillance and Medicaid cuts have made the foodborne parasite more difficult to track and contain.*
Alexandria Ocasio-Cortex for president [Richard Stallman's Political Notes]
Calling on Alexandria Ocasio-Cortez to run for president.
I will support her campaign. But I will point out to her that the quandary of choosing between «latino» and «latina» is limited to Spanish. In English we already have a gender-neutral word to use: "Latin". (When a noun, its plural is "Latins".)
For Spanish, I have proposed a solution.
Israel blocks medical workers in Gaza [Richard Stallman's Political Notes]
*The Israeli government is blocking medical workers from entering or leaving Gaza, twice canceling the departure of seven U.S.-based physicians on a medical mission there, according to a group of doctors in Gaza who spoke to The Intercept.*
Federal science grants [Richard Stallman's Political Notes]
The saboteur in chief's proposed new system for federal science grants would allow grants to be canceled easily on many different "grounds", including political opinions and associations of the researchers, and even arbitrarily (saying "we're no longer interested in that research").
Even before any grant gets canceled, many large projects will become unfeasible because of the uncertainty that the new system imposes on a grant that has been imposed. And scientists will not trust the US government to carry a grant through. Some of the best will move to other countries which they can trust more.
Some, however, will be afraid to speak about political issues -- and that must be what the saboteur in chief aims for.
Reducing mosquito species [Richard Stallman's Political Notes]
A large experiment releasing bacteria-sterilized male mosquitos was very effective in reducing the population of that mosquito species.
Snoop-phones [Richard Stallman's Political Notes]
Snoop-phones are the last step in reducing children to physical isolation under control, so taking them away is just the first step in restoring their access to the world.
RFK Jr. Hosts Meet-And-Greet [Richard Stallman's Political Notes]
(satire) *RFK Jr. Hosts Meet-And-Greet With Infectious Diseases.*
Breaking Up, p07 [Ctrl+Alt+Del Comic]
The post Breaking Up, p07 appeared first on Ctrl+Alt+Del Comic.
Girl Genius for Monday, July 27, 2026 [Girl Genius]
The Girl Genius comic for Monday, July 27, 2026 has been posted.
Overwhelmingly Negative [QC RSS v2]

banned in 40 countries and 11 orbital habitats
[1300] Talking to Yourself [Twokinds]
Comic for July 26, 2026
Kernel prepatch 7.2-rc5 [LWN.net]
The 7.2-rc5
kernel prepatch is out for testing. Linus said: "So it's a bit
too big for my liking, but nothing in there strikes me as
particularly strange or scary
".
Many of the questions about RSS.chat center on how do we make this centralized. I don't want this, I want feed readers to add some features and then we can connect these systems together in a million different ways. They just have to think differently about subscription lists. Not radically different, even.
Confession: I still drive a Tesla. [Scripting News]
Wanted to switch but nothing I tried is as great a driving experience the Model Y is. Instead I've had a lot of fender benders and haven't gotten any of them fixed.
I don't know if it accomplishes anything but to me it feels like retribution of a sort.
Post-political [Cory Doctorow's craphound.com]

This week on my podcast, I read Post-political, a recent essay from my Pluralistic newsletter, about the material, irreconcilable differences between leftism and other political beliefs.
But when it comes to a “post-politics that is neither right nor left,” the definition I turn to most often comes from science fiction writer Steven Brust, who once told me:
“Left” and “right” have had the same meaning since the French Revolution. If you want to know if someone is on the left or the right, ask them, “What is more important: human rights or property rights?” If they say “Property rights are a human right,” then they are on the right.
That’s it. That’s the crux. If you think that property rights are a tool for achieving human rights, then you’re on the left. You might support the right of farmers to block attempts to expropriate them via eminent domain in order to build a data center, or the right of people to not have their homes or devices searched by cops, or a library’s right to own and archive digital books, even if the publishers insist that ebooks are never “sold,” merely “licensed.”
New docs for the browser JavaScript interface to the RSS.chat API.
A note to people who run WordCamp conferences. Please, there should be a feed for each event, and as you ramp up to the big day, the news should flow faster. Help people find other people to network with. Get ideas out that aren't in the conference program.
rss.chat isn't really a product [Scripting News]
It's what we used to call a coral reef. A deliberate attempt to get people to do more than it does. To think about the web the way it was meant to be thought of, as small pieces loosely joined, with the emphasis on small. If you have formats and protocols that connect the pieces, you can make anything you want out of the pieces. If we don't try to capture our users, instead we try to serve them.
This all sounds nice in theory, I imagine, but -- there's a practical side to it. I wrote about this in a comment in a thread on rss.chat repo. The key point is this, you can do what you want with the data. And if you want to build new data that includes this stuff, go right ahead. RSS is extensible. It's all about working together in a web of people, because you can't have a web of pages if the developers aren't web'd.
Tamer: Enhancer 2 [Grrl Power]
I wrote another book!

Have a sequel! Wow, almost two years to the day since the first book. Well, still faster than some of the pros, eh? This book is a bit longer, at 210K words. The first book was right around 120K for comparison.
I wanted to do more with the cover, but I’m not going to hold the book hostage because I didn’t get a chance to hide Yxlyn on the cover yet. (Yeah, like 3 people noticed her on the other cover.)
Please let me know what you think! I’m amenable to all constructive feedback and abject praise. Feel free to leave comments here, but please be mindful of spoilers if you do. You can also email me at grrlpowercomic@gmail, which is also probably the best way to let me know about typos. I’ll eventually release updated versions once typo feedback slows and I’m sure most everything’s been found.
Download your format of choice here:
Here’s a quick link to Book 1 since I’m sure some people will ask.
Tamer: King of Dinosaurs is by Michael-Scott Earle. I’ve linked it several times in the past. The first book is free if you’ve never checked it out, but you don’t need to be familiar with Tamer to read my story. But it’s still free and it’s good… so… get it.
Obviously, “Tamer: King of Dinosaurs” is Michael-Scott Earle’s IP and my fan work is by a fan for fans, and certainly not intended to infringe in any way.
For those of you
unsure of how to get a .mobi file onto your Kindle or Kindle app on
your phone/ipad, the easiest way is to download it, then email it
to your kindle email. You can find this on Amazon, under
“Your Contents and Devices” you’ll see a list of
books you’ve bought through Amazon. Click on
“Devices” up at the top and you’ll see a list of
kindles and phones etc that have the kindle app installed. Click on
the box with the “…” next to each device and
you’ll see an email address for it. Just email that address
with the .mobi attachment.
Alternatively, I’m sure you could transfer it with dropbox or
google drive or whatever poison you use.
December Vote Incentive Posted [Grrl Power]
This month’s vote incentive guest stars Lana of Spying with Lana. One of my own secret agents, Pixel, is trying to assist, with various levels of success and… nudity. Well, in the Patreon versions. The Vote Incentive will give you a pretty good idea of what might go down.
Check out Spying with Lana. Their current vote incentive features a certain gold-plated glamazon. Also it’s a funny comic with tons of skin.
November Vote Incentive Posted [Grrl Power]
I thought I would make a separate post for this.
The vote incentive is updated! I started drawing this and honestly had the thought that I might shelve it so I could use this for a plotline setup in the comic itself. The Vallejo Glamor, not the Nude version, obviously. And while I reserve the right to do it at some point in the future, the one thing I learned from drawing this is that those tiny bikinis take a lot more effort than you might think. Sure, in the comic, the art wouldn’t be nearly so fiddly and intricate, but Sydney’s “Coin Mail” is right out, and I can also foresee Maxima’s “Drizzled Metal” bikini just wildly morphing from page to page, not because it’s supposed to me like a clingy T-1000, but because I just think I remember how it looks and don’t bother checking and 5 pages later it looks suspiciously like Princess Leia’s slave bikini.
Though I will say the TOS Star Trek cloudy pastel backgrounds are a little easier to draw than perspective correct interiors.
Nude and textless versions over at Patreon.
Some more book recommendations [Grrl Power]

I’ve recommended this Liam Lawson series before. I love me some good xenoanthropology, and my favorite thing about this series is the “fish out of water”/”Tarzan in New York” bits where the Orc main character has to figure out all the weird cultural stuff humans (and other races) do.
Well, Book 8 is out, Trorm’s family is coming to visit, and the xenoanthropology spills out onto the front lawn in the form of fistfights and flaming maces, much to the horror of the hand-wringing and probably slightly racist HOA. Mmm mmm! Good stuff!
.

A near future, proto-cyberpunk novel. As in, the main character is, through circumstances beyond his control, the first guy with a quantum linked AI in his brain. It’s kind of like he’s got “The Machine” from Person of Interest riding shotgun, only instead of being an enigmatic and vaguely creepy superintelligence, his machine decides it likes the human experience and adopts very anthropomorphic (feminine) qualities right off the bat. Corporations, governments, and organized crime antagonize, and eventually a bunch of ex-military female bodyguards are hired because they blend in better than burly dudes in suits and sunglasses. Yes, it’s a (slow burn) harem, obviously.
.
.

There’s a lot of stories like this one, i.e., displaced hero makes good and grows his household and gets his revenge, partially by living well, but mostly with head chopping. I’m recommending this one because from among the similar books I’ve read recently, I thought this one stood out. I immediately bought the second book when I finished the first, which is a pretty good gauge of a series I think. I have a lot of orphaned Book #1’s in my library. This one is like, Isekai-lite. Instead of being from another world, the MC is a “Savage” from the north, forcibly taken to the “civilized” city where he proves that being a skilled hunter is advantageous in slave arena battles. So, it’s kind of a bummer at first, but then he finds out that if he wins, he gets to pick a wife from an assembly of female combatants, and the ruling class here has a way to combat a blight of infertility sweeping the land, so the MC is like, “I guess I’ll pick up a wife or two before I get my revenge on everyone.” So, yeah. As books of this nature go, I thought it was one of the better ones.
![The Lost Fleet: Dauntless by [Jack Campbell]](https://m.media-amazon.com/images/I/51p-qaYLuvL.jpg)
This series is a little different from most of my recommendations. It’s more akin to the early Honor Harrington books, which I quite liked, for their technical fleet battles. (I’m as surprised as anyone I enjoy that stuff.)
The hook of this series is; Guy wakes up from 100 years in cryosleep to discover 1) The war he was fighting is still going on, 2) Everyone thinks he’s some mythical super-tactician cause he fought in a famous, desperate battle before jumping in his pod. 3) He kind of is, because now, after 100 years of constant war, so many people have died that advanced fleet tactics have been lost as the war chewed up all the old captains and admirals, and most warfare has devolved into “charge forward and hit them harder than they hit you.”
Something I like about this series is that it recognizes that space is stupidly huge, and when a ship that is 10 light minutes away from you does something, it takes ten minutes for you to know about it. Fleet battles held at .1 lightspeed still take hours and hours when fleets start off in distances measured in AU’s.
Some Book Recommendations [Grrl Power]
So I found some books that I really enjoyed, and I thought I’d make a separate post about them. It’s actually two series, both by the same author, Daniel Schinhofen.
The first thing I will tell you is, don’t worry about the covers. He’s kind of famous for having bad covers. The cover from Apocalypse Gates looks like a flat lit Doom 1 level.
Anyway.
The series I really liked is Binding Words, the first book of which is Morrigan’s Bidding. One of the things I liked about it was the book is very good at laying out the rules of the world the MC finds himself in. This might seem like a minor point, but the rules of this world are quite important, and some books don’t do a great job with set up. I will admit, I also like the fact that the MC is kind of OP, even though (and I don’t want to spoil anything) there’s not a lot of action in the first book. I’m sure some of you are like “How is he OP if he’s not kicking ass?” Ah, see? You gotta read it to find out.
One caveat – you guys know that I like the slice of life stuff, right? I mean, if you’ve been reading Grrl Power, you’ve probably figured that out. That said, by the time I got to the third book in Binding Words though, even I was like “I don’t really need to know what they eat for every single meal. It’s okay to skip ahead a few days.” But don’t let that dissuade you from checking out this series. I’m definitely snapping up the next book when it comes out.
After finishing all the released Binding Words books, I jumped straight over to a new series he’s working on called Aether’s Blessing. Or… the series is Aether’s Revival. Book 1 is Aether’s Blessing. It’s fairly different from Binding Words (though there is at least one common theme)
Some of you may be familiar with his other series, Apocalypse Gates and Alpha World. I have tried to read Alpha World on numerous occasions, and I can’t get into it. It’s not because the writing is bad, but I just cannot get into books that are set in video games. I just can’t bring myself to care about what happens, because no matter how it’s set up, whether it’s VR, or the character’s brain is trapped in the game or whatever, there just aren’t any stakes for me. If a horde of demi-liches are about to sweep the last bastion of humanity, I can’t help thinking, “Yeah, but what happens if some developer patches the game and now all the liches are covered in Mt. Dew branding like a NASCAR driver, or are accidentally flagged as neutral?” or “What if a janitor trips over the power cord to the server?” And also, what if the main character does defeat the horde of demi-liches? Do they just respawn the moment he turns his back so other players can take them on, thereby lowering the stakes even further? It’s a bad set up for a book. If an author wants to put game like stats in his novel, then just have the character wear some sort of contact lense that scans everyone’s strength levels, or make it a spell, or have aliens rip out everyone’s eyeballs and replace them with cyber eyes that give them special skills and make them duke it out on a planet full of dinosaurs. It’s just lazy writing IMO to make it a video game.
I’ll probably try again to read further into Alpha World, and maybe I’ll get to a point where I can ignore all the game stuff, because I really liked the two series I recommended above, but man, it’s tough. “Oh, he finally met a girl that’s probably going to be a love interest… but has he? Or has he met a lookup table with some clever dialog trees?”
Anyway. I liked his other books and maybe you will too.
Obligatory Covid-19 Post [Grrl Power]
Stay safe guys. I feel a little detached from all the disruption since I work from home, but I know this is a super weird time, and a lot of places have moved to quarantine in place protocols because humans are a bunch of dipshits that can’t figure out what 6′ of personal space means. A week ago I went to Chili’s to pick up a take out order, and there were 10 people milling around outside, and another 10 all bunched together in the little To Go closet they have. It took 90 minutes to get my food because apparently the management figured that since the city had told all restaurants in the city that dining in was not allowed for the foreseeable future, Chili’s management figured “Well I guess the amount of to go traffic won’t change and we shouldn’t staff up for some unpredictable rush.”
Ug. Hopefully everyone will start figuring it out soon, but you know what Einstein said; “Only two things are infinite, the universe and human stupidity, and I’m not sure about the former.”
My point is, be safe, and don’t contribute to the general level of dipshittery by being a dipshit. And don’t hoard toilet paper. I just can’t figure that one out. I mean, hand sanitizer, I kind of get, even though regular soap is perfectly fine, but the people hoarding TP are a bunch of assholes. There’s already reports of sewage systems getting fucked up because people have had to resort to using paper towels and those wet wipes for your butt that famously fuck up sewage systems. We’ve got a few rolls left in the house, but a month from now, I really don’t want to have to take a shower every time I pinch one off.
I wrote a book!
It has nothing whatsoever to do with Grrl Power. It’s actually Tamer fanfic. Hopefully that’s obvious from the cover there.
I’ve never written a book before, so I decided to see if I could. I’ve dabbled in prose before, like a lot of you, I’m sure, but never actually finished anything. I figured that using an established universe would make the process a bit easier. Actually I found writing quite enjoyable, editing is the hard part.
Please let me know what you think! Pacing, wordsmithing, characters, all that good stuff. I’m amenable to all constructive feedback. Feel free to leave comments here, but please be mindful of spoilers if you do. You can also email me at grrlpowercomic@gmail.
FYI – There are sex scenes in the book (spoilers, I guess.) Not a lot, but they don’t fade to black. Well, some are more terse than others. I would describe them as explicit, but not gratuitous, but those are obviously relative terms. If you’ve survived MSE sex scenes you’ll be fine.
Tamer: King of Dinosaurs is by Michael-Scott Earle. I’ve linked it several times in the past. The first book is free if you’ve never checked it out, but you don’t need to be familiar with Tamer to read my story.
Obviously, “Tamer: King of Dinosaurs” is Michael-Scott Earle’s IP and my fan work is by a fan for fans, and certainly not intended to infringe in any way.
Download the format of your choice here.
Book 2 is out! Check it out here!
For those of you
unsure of how to get a .mobi file onto your Kindle or Kindle app on
your phone/ipad, the easiest way is to download it, then email it
to your kindle email. You can find this on Amazon, under
“Your Contents and Devices” you’ll see a list of
books you’ve bought through Amazon. Click on
“Devices” up at the top and you’ll see a list of
kindles and phones etc that have the kindle app installed. Click on
the box with the “…” next to each device and
you’ll see an email address for it. Just email that address
with the .mobi attachment.
Alternatively, I’m sure you could transfer it with dropbox or
google drive or whatever poison you use.
Avengers: Endgame Talk [Grrl Power]
![]()
Well, I finally got around to seeing Avengers: Endgame, and I figured everyone could use a place to talk about it without worrying about spoiling the movie for other people. So be aware, anything in the comments of this post is probably a spoiler of some kind.
Seriously, don’t click into the comments if you haven’t seen it yet.
Book recommendation…ish – Three Square Meals [Grrl Power]
So, while waiting for Amazon to sort it’s shit out with Michael-Scott Earle, and we can finally get some new Star Justice and Tamer books, I’ve continued reading a bunch of other novels, and I came across one I really like. I’ve been kind of sheepish about recommending it because… well, it’s “erotica.” At least that’s the category it’s listed under at Amazon, but quite frankly, calling it erotica is underselling it a bit. There’s a lot of sex in this book. Like, a lot. So if that doesn’t interest you, you’re just not going to enjoy it. You’d be skimming through… quite a bit of text to get to the rest of the story.
Unlike a lot of other harem novels, however, the sex actually factors heavily into the actual plot. Yes, it’s almost like the author came up with a reason for the characters to have a lot of sex, beyond them being horny for the usual reasons, and then wrote a story about it.
If the sex doesn’t turn you off, or, if in fact you don’t mind some sex (or a lot) in your harem books, there’s a shockingly good space opera to be had here. I would actually put it on par with Star Justice, which is something I never thought I’d say, as it’s one of my favorite series of all time. Another thing I like about Three Square Meals is that there’s a lot of it. The story is over 2 million words long and counting. By the time you get through the first three books, the overarching plot is only barely starting to reveal itself. What can I say? I enjoy it when there’s a lot of something I enjoy. In a shorter story, you get to see the characters interact with one group or another, but then that’s usually it. In this longer format, you get to revisit those groups and see the sometimes empire shifting consequences of their interactions with the MCs. Plus, IMO, the story keeps getting stronger as the cast expands and the momentum of the story builds.
Another thing I like about the story is that it does OP right. The main character, (and the women in the harem) get really powerful. (Something I like in my harem novels is when the women are really awesome too, go figure.) The story keeps escalating so that they have significant challenges, but importantly, there are a lot of great scenes where the MCs have awesome moments of OP-ness* and are able to wow their allies, and/or crush their enemies, and see them driven before them, etc. That balance is important IMO, and a lot of books don’t get it right.
So here are some links;
*Hur hur, I said penis.
Okay, so obviously the site is broken at the moment. I tried to update the page to be HTTPS compliant and for some reason that jacked up the CSS, sooooo, yeah. I’m working on it. Part of trying to fix it involved rolling back the database a bit which might have nixed a few hours of comments. Sorry about that if something you posted got lost.
Thanks for your patience.
The Lego problem, revisited [Seth's Blog]
For generations, the rules of Lego were simple: many pieces, all able to connect in many ways, led to many outcomes.
That almost drove the company into bankruptcy, though.
Lego kits saved the business. Each kit has just one way to do the work, follow the instructions carefully. Industrial indoctrination in a box.
While it made Lego plenty of money, it didn’t create a generation of creative thinkers. And following instructions is what most organizations want.
Now that robots and AI are here to follow instructions, though, we might need people who can draw plans, not simply follow them.
Deforestation is spreading screwworm [Richard Stallman's Political Notes]
Cutting down the Amazon forest for raising cattle has massively spread screwworm, as well as perhaps dooming what remains of the forest.
Italian thugs killed immigrant Abderrahim Fakir [Richard Stallman's Political Notes]
Italian thugs killed immigrant Abderrahim Fakir in the process of "restraining" him after he became somehow upset.
This has stimulated large protests, to which right-wing hate leaders respond by saying it is unthinkable to doubt the rightness of the thugs' actions.
Chatbots fail to understand the Hungarian election [Richard Stallman's Political Notes]
Globally well-known chatbots displayed a drastic failure to understand the parties running in the Hungarian election.
Given that ChatGPT hid the main opposition to Orbán, I have to worry that this was intentionally set up to help reelect him.
Young people are giving up on human relationships [Richard Stallman's Political Notes]
Many young people are giving up hope on close relationships with other people and turning to chatbots for an imitation or substitute.
Deportation thugs adopted dress code [Richard Stallman's Political Notes]
The deportation thugs have adopted a dress code and require wearing of badges.
This is a change for the better, but can't overcome what's wrong with the mission they have been directed to carry out.
Congress should reject bill [Richard Stallman's Political Notes]
Congress Should Reject Bill That Would Block a Federal Workplace Heat Standard. Republicans are trying to do just that.
Putin and Musk plans to destabilize Britain [Richard Stallman's Political Notes]
Putin and Musk are organizing to destabilize Britain by supporting the right-wing extra-extremist politician, Yaxley-Lenin.
I can suggest one possible countermeasure: prohibit antisocial media platforms from operating a recommendation engine. Ex-Twitter would have less power without that, and so would Tiktok and others.
Russ Allbery: Review: Radiant Star [Planet Debian]
Review: Radiant Star, by Ann Leckie
| Publisher: | Orbit |
| Copyright: | May 2026 |
| ISBN: | 0-316-29068-8 |
| Format: | Kindle |
| Pages: | 359 |
Radiant Star is a science fiction novel set in the Imperial Radch universe without being a direct sequel to the other books in that universe. It will badly spoil the end of Ancillary Mercy, and I recommend reading that trilogy first, but it's independent of the other books in the same universe.
In the 3,008th year after the manifestation of the Radiant Star (the 1,024th since the founding of the Consorority itself), Zaved, a newly minted consoror, disappeared a mere two days after the ceremony that elevated her to womanhood. She left a note that read, Bored. Back whenever. This was not normal or even remotely acceptable behavior in a consoror, particularly one who held as much promise as Zaved had, but what could the consorors do?
Zaved, faced with the unpleasant prospect of running out of money during her galactic tour, plied a rich benefactor with tales of how talented, polite, and obedient the boys of the Consorority are. Her plan worked brilliantly. After funding further non-boring adventures, she arrived home in Ooioiaa with a chest full of money and a pregnancy. Great for Zaved and the Consorority; kind of a shame for her son Jonr, who is to be delivered to her benefactor after proper training. Oh well, telling Jonr about that is a problem for future Zaved.
After a strained childhood in which he convinces himself he is a misfit with few redeeming qualities, Jonr ends up in a suspension pod. Before shipping can be arranged, however, external events intervene, leaving Jonr sitting unnoticed in a warehouse.
The planet of Aaa is in a highly inconvenient location, drifting as it does through interstellar space unattached to any star. It would be as irrelevant and overlooked as any other random interstellar object except for two critical properties. The first is that Aaa and its sole city of Ooioiaa are sacred to a religion of obscure origin. Its primary population are members of a religious cult who believe the Radiant Star manifested in the Temporal Location on Ooioiaa and will eventually return to bring light to the galaxy. The second interesting property of Aaa is that it is drifting ever so slowly towards a strategic system of military importance.
The first property brings pilgrims and their accompanying bounty of money, food, and other resources necessary to dig a small city out of rock, make it habitable, and supplement the sparse and strange native edible life. The second property brings the Radchaai, who easily conquer the city of Ooioiaa and are now faced with the unpleasant task of running it.
Some decades after the Radchaai conquest, having never left Aaa, Jonr is woken up. He will not be sent off into the broader galaxy as a slave to pay off a vacation debt. Instead, he will be one of the many protagonists in this novel about the perils of living through supply chain disruptions on a planet full of status-obsessed religious fanatics who would drown in a rain shower.
The other books set in this universe make abundantly clear that the Radch is a voracious colonial power that enslaves native populations and enforces their own cultural preferences at the point of a gun. A reader familiar with this series is predisposed to take whatever side is not the Radch.
Radiant Star adds a complication, however. Charak Svo, the Radchaai governor, is impatient with native inhabitants and strongly dislikes their religion, but she is reasonably competent. The religious factions that ran Ooioiaa before the arrival of the Radchaai, on the other hand, are dogmatic authoritarians with the collective wisdom of a sack of turnips. Charak does not get everything right and is arguably responsible for at least one catastrophe. By the end of the book, though, I was firmly convinced that had the original religious government still been in charge, everyone would have died.
I found the structure of this book a little odd. The omniscient narrator tells the story in the form of a history. The target audience appears to be future inhabitants of Ooioiaa and adherents to the Radiant Star religion, and the narrator is often maddeningly uninterested in topics that a reader of the rest of the Imperial Radch books is intensely curious about. This same property carries through to the plot: I was interested in how all of the tensions in this obviously absurd society could be resolved or, preferably, overturned entirely. The narrator, on the other hand, is far more interested in Serque Tais's intent to become the last saint in the Temporal Location, and in the details of the subsequent political, economic, and religious fallout.
Leckie has written three novels set in the Imperial Radch after the original trilogy: Provenance, Translation State, and now Radiant Star. I am sure that I'm not the only person who wants a direct continuation of the original trilogy, but I'm drawing the conclusion that Leckie doesn't want to write that. Instead, she's writing around the edges of the subsequent events, in effect showing readers the shape of them and their broader implications without showing the details.
Now that I can see what she's doing, I kind of like it. Given what we now know from the books written around the edges, the ensuing events in the center of galactic politics are chaotic in a way that could easily devolve into tedious accounts of messy conflicts. Seeing the effects from afar lets the reader fill in some of the blanks and speculate, and it makes the moments where we get a concrete update (such as at the end of this book) all the more rewarding. I still find it odd, though, to read a book where the narrator's interests so sharply diverge from mine.
I wish I could say that Radiant Star sucked me in as the story developed, but it never did. Part of the problem is that I think this book is intended as a very dry farce, and farce often doesn't work with my reading style. I prefer to attach myself to a protagonist and hope they do competent things, and this book is full of characters who are being themselves far too aggressively and loudly to have time to be competent at anything. My favorite moments were therefore the small pockets of people with sense: The governor, Jonr, his charge, and the delightfully strange Justice of Albis. I enjoyed all of them, but I had trouble caring about the overall plot and kept putting this book down for days between chapters.
I think this is mostly personal taste, though. Like all of Leckie's novels since the original Imperial Radch trilogy, Radiant Star is competently executed and a little strange. When that strangeness aligns with your tastes, it's a great deal of fun and rather unlike other science fiction novels. In this case, it didn't quite work for me, but I suspect it will for others.
I still want another Leckie novel with a ship as a protagonist, though.
Content notes: Rather disturbing (although bloodless) religious practices, mass death.
Rating: 6 out of 10
A Debian general resolution on LLM usage [LWN.net]
The Debian project is considering a general
resolution on the use of large language models in the creation
of the distribution. There are three alternatives to consider: a
total ban on LLM usage, rejecting LLMs "as far as
practical
", or explicitly allowing LLM usage subject to a set
of conditions. The discussion period has just begun; the beginning
of the voting period does not yet appear to have been set. Those
who want to look over the discussion ahead of the inevitable LWN
article can find it over
here.
Dirk Eddelbuettel: RcppArmadillo 15.4.2-1 on CRAN: Small Upstream Fixes [Planet Debian]


Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1293 other packages on CRAN, downloaded 47.8 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 710 times according to Google Scholar.
This versions updates to the 15.4.2 upstream Armadillo release made this week, as well as to included 15.4.1 version we released only to GitHub and r-universe so do not exceed the (roughly) monthly cadence. For this release, we had run the usual complete reverse-dependency check which came back spotless, and did CRAN so no email exchange needed despite nearly 1300 reverse dependencies. Automation can be helpful when used with a well-maintained software stack. The package has also already been updated for Debian, built for r2u, and will build shortly at CRAN for the different binary releases.
All changes since the last CRAN release follow.
Changes in RcppArmadillo version 15.4.2-1 (2026-07-25)
Upgraded to Armadillo release 15.4.2 (Medium Roast Agave)
- Fix speed regressions in
diagvec()anddiagmat()Changes in RcppArmadillo version 15.4.1-1 [github-only] (2026-07-09)
Upgraded to Armadillo release 15.4.1 (Medium Roast Agave)
Fix for rare infinite recursion bug in sparse version of
diagmat()More efficient checks for aliasing
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forge 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 sponsor me at GitHub.
I’m Taking the Weekend Off So Please Enjoy This Picture of Saja in the Meantime [Whatever]

And look! He’s a mlem going! Truly, a quality cat photo.
Have a great weekend, y’all. See you back here on Monday.
— JS
In remembrance of Dan Williams [LWN.net]
On July 21, the kernel community lost Dan Williams, one of its most beloved contributors. Dave Hansen and Thomas Gleixner, both of whom worked with Williams extensively, have written an obituary and allowed LWN to publish it. He will be deeply missed, but he has left us with a lot to remember him by.
Example code is not expected to be bullet proof like production code, and where covering different cases make it harder to follow they should not be there.
RSS.chat has an API [Scripting News]
It's a standard REST API.
Here's the server side of the API.
Here's how you call it from browser-based JavaScript. You can include that code in your apps.
Here's an example app that implements a simple blog builder for my recent posts on RSS.chat. We were thinking about doing this as a project for Claude and myself but decided it would be more fun to let devs see what they can do here. :-)
And finally here are the docs for the API itself.
GNU C Library 2.44 released [LWN.net]
Version 2.44 of the GNU C Library has been released. Changes include a new /etc/tunables.conf file for the system-wide setting of tunable parameters, a new tunable to control the use of transparent huge pages for read-only executable segments, a number of math-function improvements, a handful of security fixes, and more.
Security updates for Saturday [LWN.net]
Security updates have been issued by AlmaLinux (compat-openssl11, java-1.8.0-openjdk, java-17-openjdk, kernel, kernel-rt, and sssd), Debian (exim4), Fedora (chromium, dotnet10.0, mbedtls, mupdf, netatalk, python-django5, skopeo, sssd, and wget1), Mageia (libevent and transmission), Oracle (.NET 8.0, 389-ds-base, aardvark-dns, acl, buildah, cifs-utils, dovecot, dracut, galera and mariadb11.8, glibc, hplip, kernel, libxml2, nginx, openexr, podman, postgresql18, rsync, thunderbird, and vim), and SUSE (389-ds, afterburn, agama, alsa, apache-commons-compress, apache-ivy, brotli-java, zstd-jni, avahi, aws-nitro-enclaves-cli, cockpit, cockpit-machines, cockpit-packages, cockpit- podman, cockpit-repos, cockpit-subscriptions, container-suseconnect, containerd, cosign, cryptsetup, curl, dash, dnsmasq, docker, docker-compose, ffmpeg, firefox, freetype2, gawk, gh, glib-networking, glib2, go1.25, go1.25-openssl, go1.26, go1.26-openssl, google-guest-agent, google-osconfig-agent, gpg2, gsasl, gstreamer-plugins-bad, gzip, haproxy, hauler, helm, helm3, ImageMagick, imagemagick, iproute2, java-11-openjdk, java-26-openjdk, jline3, joe, jq, kernel, kernel-devel, krb5, kubevirt, libgcrypt, libpng12, libqt4, libssh2_org, libXfont2, libxml2, mariadb-connector-c, microcode_ctl, multipath-tools, nasm, net-tools, nghttp2, nmap, ntfs-3g_ntfsprogs, openexr, packagekit, pam, patch, perl, perl-DBI, perl-dbi, perl-http-date, perl-libwww-perl, perl-xml-bare, php8, prometheus-ha_cluster_exporter, python-aiohttp, python-cryptography, python-dulwich, python-idna, python-maturin, python-mistune, python-msgpack, python-paramiko, python-Pillow, python-pyasn1, python-soupsieve, python-sqlparse, python-tornado, python-tornado6, python-urllib3, python313, python313-pandas, python314, qemu, radvd, rootlesskit, rpcbind, ruby3.4, runc, s390-tools, shibboleth-sp, sssd, systemd, systemd, systemd-mini, terraform-provider-aws, terraform-provider-azurerm, terraform-provider-external, terraform-provider-google, terraform-provider-helm, terraform-provider-kubernetes, terraform-provid, terraform-provider-susepubliccloud, tiff, tomcat, tomcat10, tomcat11, uriparser, vim, vorbis-tools, wget, wpa_supplicant, xwayland, and yelp).
New stable kernel for ext4 users [LWN.net]
Greg Kroah-Hartman has released the 6.12.98 stable Linux kernel with a single fix for a file descriptor leak in ext4. Users of the ext4 filesystem should upgrade.
How can you tell you’re working on the web? When you
do something new and innovative you help your competitors‘
users without forcing them to use your product. They are free to
stay where they are and still get the benefit. People choose your
product because it’s better for what they’re doing, or
it feels better now, or whatever. We want the web to be the
platform and it's cool because there is no platform vendor.
Pluralistic: Apple's robo-repo (25 Jul 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

It may strike you as weird, but lenders love to lend money to poor people who will have trouble paying back their loans. Obviously, lenders want to be repaid, and obviously the more money you have, the easier it is to settle your debts, but (paradoxically) that means that if you have a lot of money, you expect to pay less to borrow.
In other words: because poor people have a higher likelihood of defaulting, their loans come with higher interest rates and worse terms. Debt is steeply regressive: the less money you have, the more you're expected to pay. The industry term for this is the "risk premium": the riskier a loan is, the more it costs the borrower.
Lenders are always seeking the highest possible return on their loan-books, which makes that "risk premium" awfully tempting. Why loan $1m to Elon Musk at 0.5% interest when you can make 10,000 $100 payday loans to non-union Tesla workers on food stamps at 1,000% interest?
Obviously, the fly in the ointment here is the risk in "risk premium." The reason the risk premium exists is that poor borrowers have a harder time paying their loans. That can be good, up to a point: if you're Klarna and you're originating loans to people Chipotle lunches on the installment plan, you want your borrowers to miss several payments. Klarna loans are free if you pay them back on time, but if you miss a payment, you're hit with a huge penalty charge and sky-high interest (on top of the principal and the penalty). On a small purchase, penalties and interest can quickly add up to a triple-digit APR.
That's where Klarna makes its money: people who miss their burrito installment payments. However: if a Klarna borrower goes bankrupt before they've repaid the principal, Klarna loses money. A successful loan-book of unsecured burrito mortgages depends on the existence of many missed payments and few defaults.
"Financial innovation" is often just a project to decrease the risk in risky loans, but without decreasing the risk premium you get paid for issuing those loans. It's a way to eat your cake and have it too: even though you've reduced the likelihood that you'll have to write off your loan, you still charge the borrower as though that risk is unchanged. As with so many aspect of finance, "innovation in lending" is a way to shift value from the financial industry's customers to itself.
Remember the subprime crisis? The whole point of collateralized debt obligations and swaps was to offer loans to people with bad credit – even loans they obviously couldn't pay back – without incurring a default risk. Subprime mortgages supercharged the practice of loan origination and resale (where a bank offers you a loan and then sells that loan to someone else, so your default becomes their problem) by splitting the loans into pieces. These pieces were recombined according to complex mathematical formulas that supposedly "proved" that the default risk from poor borrowers had been "offset" by combining them with other borrowers' loans and wrapping them in opaque insurance contracts.
Those subprime mortgages came with cheap "teaser rates" – the interest rate you paid over the first couple years – but then the interest payments "ballooned" to farcical sums that borrowers had no hope of repaying. Those farcical sums were the risk premium. When financiers transmuted these high-risk 30-year mortgages into complex derivatives, they were effectively promising their customers a piece of that risk premium for 28 out of the 30 years that the mortgage ran for.
But it wasn't all financial engineering: subprime mortgage salesmen could also promise customers that they wouldn't lose everything even after a wave of borrower bankruptcies and defaults. That's because mortgages are secured: they are backed by deeds for the homes the borrowers own(ed). If a borrower goes bust, the lender can repossess their house or apartment and sell it to recover the loan amount.
Now, the finance sector did repossess a fuckton of houses after the crash. Foreclosure and eviction became official policy: Treasury Secretary Timothy Geithner told Obama that a wave of foreclosures was necessary to "foam the runways" for the banks, so Obama encouraged banks to foreclose on their loans, rather than restructuring them so that Americans could keep their homes:
But even with these foreclosures, lenders and their customers lost hundreds of billions on the subprime crisis. That's because all that subprime lending pushed the price of houses up and up and up, so when the market collapsed, those mortgages were "underwater" – the money from selling the foreclosed homes didn't cover their outstanding loans.
Collateralization – backing loans with legally binding promises to surrender some asset if you default – is a way to reduce risk, but it can't eliminate it. Assets degrade: houses burn, cars get totaled, jewelry is stolen. Assets also devalue: a loan backed by bitcoin at $111,000 on the eve of Trump's election will be underwater today with bitcoin at $64,000. This devaluation can also occur when your house's value plummets because Elon Musk repeatedly bombs your neighborhood with flaming rocket debris, or when your Tesla's resale value collapses after Musk throws a string of Seig Heils on national television.
The point being that risk mitigation is never risk elimination, but markets have a hard time distinguishing between the two. Partly that's because of risk shifting. A lender who can "securitize" their loans (turn them into bonds and sell them off to investors) can insulate themselves from risk, because the people who buy the bonds are now carrying that risk.
So many of our crises come from the intersection of these two phenomena: the promise of reducing loan risks without losing the risk premium and the fact that risk reduction can fail suddenly (or be revealed as nothing more than risk-shifting). The first phenomenon creates vast credit bubbles, the second one pops them.
This leaves would-be usurers on an endless quest for new ways to lend money at a premium to poor people while reducing their own risk. You don't need technology to do this – all you need is a captive audience of broke people whom other lenders won't touch.
When the US government adopted the racist practice of "redlining" (denying government-backed loans to Black borrowers), they created a market for predatory pseudo-mortgages called "contract buying." Contract buying is like a mortgage, but without the equity: miss a payment and you get evicted, and you aren't entitled to any of the sale price of the house, even if it was 99.99% paid off when you got kicked out.
Lenders can tip the scales in their favor by making up arbitrary junk fees, and a smart lender waits until the house is almost paid off before whacking the borrower with a ton of these fees. The borrower misses a payment, the seller repossesses the house and sells it again:
Contract lending never went away. Wherever you find a desperate, disfavored group who are locked out of the credit system, you'll find scumbag contract lenders running this scam. Take long-haul truckers, among the most exploited workforce in America. Long before Uber made worker misclassification (treating an employee as an independent contractor) mainstream, the trucking industry was effectively indenturing truckers, exerting more control over their lives than a boss could ever impose on a waged worker, while disclaiming any employer-related responsibilities. Truckers don't get health insurance or sick leave – and they don't get paid if they have to sit at a port for 20 hours waiting to pick up a load.
But the exploitation of truckers doesn't stop with mere wage theft. Truckers also "contract buy" their trucks. Their bosses issue loans that let drivers buy their trucks on terms that allow the company to repo the truck after a single missed payment. And of course, bosses have total control over truckers' wages, so a canny boss can wait until a truck is nearly paid off and then stop the driver's wages, forcing them to miss a payment and lose their truck, which can be sold on to the next victim:
Subprime auto-loans bring this same profitable arrangement to regular drivers who just need a car to commute, pick up groceries, and shuttle the kids to and from school. A subprime auto-loan often contains the "teaser" and "balloon" rates at the heart of the subprime mortgage bubble: for the first year or two, your car payments are affordable, but then they shoot up to a sum that you can't possibly pay. The lender then repossesses your car, zeroing out your equity, and sells it to another victim:
https://www.youtube.com/watch?v=4U2eDJnwz_s
But the subprime car industry puts a decidedly modern spin on the contract lending scam that has been used to profitably rob so many Black home borrowers and long-haul truckers. Subprime lending's risk-reduction relies on repossession. A subprime car lender doesn't just get rich by charging poor borrowers more money that rich borrowers for shittier, older cars. Subprime car dealers repeatedly "sell" that car to many, many poor people, on conditions that all but guarantee that the borrower will default on their loan and lose their car.
This is where tech comes in. Ubiquitous digital networks and computing make it much easier to repo a car. This started with the humble lo-jack, a simple tracker marketed as a way to locate lost or stolen cars. Subprime auto-lenders were early and aggressive lo-jack adopters, because you can't repo a car if you don't know where it is. Installing a lo-jack is much cheaper than paying repo men to drive around looking for the cars you want to claw back, which means that you can sell cars to people who represent worse credit risks, charging a higher risk premium, and still find the car when those high interest rates force your borrower into default.
The next wave of automotive usury-tech was a kind of systematic exploration of the entire space between a car that is repossessed and a car that isn't. Some subprime cars are fitted with an extra stereo system that can only be controlled by the lender over a wireless connection. Miss a payment and this secondary stereo turns itself on and starts playing earsplitting threats about what will happen to you if you don't pay up. The only way to turn it off is to make the payment. The next step is remote immobilization: miss too many payments (or violate a lease clause by crossing the county line) and your car just stops working:
But the apex of this usury-tech comes from (where else?) Tesla. Miss a Tesla payment and your car can do way more than just immobilize itself and tell the dealer where to get the car – it also unlock its doors, flash its lights, honk its horn, and back out of its parking space when the repo man arrives:
The cheaper the repo, the riskier the loan can be; the riskier the loan, the higher the risk premium. Digital tech makes repo much cheaper, so wherever you find digital tech, you find digital arm-breakers coming up with ways to robo-repo the things you buy.
There's India's subprime phone lenders, who pre-install usury-tech on their phones. This is a tool that spies on the phone's owner, building a dossier of the owner's most frequently used apps. When the owner misses a payment, the phone starts disabling the user's favorite apps, working its way up the list to the most indispensable ones:
https://pluralistic.net/2021/04/02/innovation-unlocks-markets/#digital-arm-breakers
It's the digital version of the mob loan-shark who breaks a finger, then your hand, then your arm. The more graduated the threat matrix is, the more payments you can capture. A borrower with a broken finger can get to a pawn-broker to sell their wedding-ring; a borrower with two broken legs has a much harder time.
Digital arm-breakers aren't an epiphenomenon of digitization alone. Usury tech only works if the device's owner can't disable it. Remember: a computer is flexible. The only computer we know how to make is the "Turing-complete, universal von Neumann machine," defined as a device that can compute every valid program. If your phone is running a program that disables your apps, then you can install another program that disables that program. Same goes for your car's lo-jack; the stereo system emitting ear-splitting complaints about your car note; and the immobilizer hooked up to your ignition.
That's where the law comes in. In 1998, Bill Clinton signed the Digital Millennium Copyright Act (DMCA). Section 1201 of the DMCA makes it a felony to produce a tool that bypasses an "access control." That means that if a computer is designed to block you from modifying it, removing that block is a felony, punishable by five years in prison and a $500k fine. DMCA 1201 doesn't distinguish between modifications undertaken for a lawful purpose (changing your printer so it works with generic ink) and unlawful purpose (breaking the locks on a DVD so you can sell infringing copies). DMCA 1201 criminalizes anything the manufacturer dislikes. It's what Jay Freeman calls "felony contempt of business model."
DMCA 1201 is the reason you can't neutralize the digital arm-breakers by deleting or blocking the usury-tech in your car, phone or other device:
https://pluralistic.net/2023/07/24/rent-to-pwn/#kitt-is-a-demon
Here's where it gets interesting. Apologists for DMCA 1201 insist that the law is necessary, because it lets device makers lock malicious parties out of your devices. Apple leads the pack here: they use DMCA 1201 to block independent repair of their devices, insisting that this isn't done to extort high fees from you or to force you to throw away and replace last year's iPhone after you drop it. No, Apple does this to protect you – from unscrupulous repairers who might install malware on your phone:
https://pluralistic.net/2023/09/22/vin-locking/#thought-differently
And Apple says the reason it blocks you from installing apps without using its App Store is to protect you from malicious apps – not to control the app marketplace, where it makes $100b/year on payment processing junk-fees, siphoning off 30% of every dollar you spend in an app:
https://pluralistic.net/2025/05/01/its-not-the-crime/#its-the-coverup
Apple's greatest accomplishment isn't technological, it's psychological. Apple managed to convince millions of people that buying products from a multi-trillion dollar corporation with close ties to both Trump and Xi makes them members of an oppressed religious minority, and those members of the "cult of Mac" tie themselves into knots insisting that Apple would only ever use its powers for good:
https://pluralistic.net/2024/01/12/youre-holding-it-wrong/#if-dishwashers-were-iphones
But moral behavior doesn't consist solely of resisting the temptation to do bad things – to be truly moral, you must not put yourself in temptation's path in the first place. Morality isn't the strength to resist the siren's song – it's the humility to recognize your own weakness and tie yourself to the mast:
https://pluralistic.net/2022/11/11/foreseeable-consequences/#airdropped
By giving itself a veto over its customers' choices, Apple deliberately sailed into siren-infested waters, after first putting a gun on every mantelpiece it could find. Now the company is drowning in sin, while spraying gunfire in every direction.
Today, the company is getting into the leasing business. Having monopolized its markets and eliminated the possibility of growth by making and selling things, the company is becoming a lender. As a lender, Apple wants to maximize the risk premiums it can charge, while minimizing its actual risk. That's why the new version of iOS – the operating system for iPhones and iPads – comes with software that lets lenders brick your device if you miss a payment:
The code steals a trick from India's subprime phone lenders, giving Apple the ability to "restrict apps and services when payments are missed." It hooks into a "Partner Finance Lock," which allows Apple to sell devices to third-party userers who want to get into the subprime game, promising those customers all the imaginative flexibility a digital arm-breaker could dream of.
This was always the trajectory of Apple's decision to sell you a computer that takes orders from its manufacturer, rather than its owner. Apple didn't invent the subprime gadget. It also didn't invent the GUI, the MP3 player or the smartphone. Rather, Apple took those gadgets mainstream – just as it will do with subprime gadgets. Just in time for the affordability crisis, the oil shock, the climate shock, the AI collapse and the tariff shock, the age of the digital arm-breaker has well and truly arrived:
https://pluralistic.net/2024/03/29/boobytrap/#device-lock-controller

Reading “Do Artifacts Have Politics?” https://www.not-so-obvious.net/reading-do-artifacts-have-politics/
Google hit with $1 billion fine for breaking EU antitrust rules https://www.theverge.com/tech/943866/google-alphabet-eu-dma-fine-search-services-play-store-steering
Why Paramount Should Be Worried https://prospect.org/2026/07/22/why-paramount-should-be-worried-warner-bros-merger-ellison/
The Plain Language Guide to Digital Privacy https://shannonguides.com/dl/167c8da8a0ab/digital-privacy.pdf
#25yrsago Shapeable printed batteries https://web.archive.org/web/20011102112023/https://www.newscientist.com/news/news.jsp?id=ns99991069
#20yrsago Monopoly replaces play-money with fake credit-cards https://web.archive.org/web/20070220050926/http://news.sky.com/skynews/article/0,,70131-1228653,00.html
#20yrsago HOWTO build a fax out of salmon tins https://web.archive.org/web/20060828010312/https://blog.modernmechanix.com/2006/07/25/build-a-rather-bad-salmon-can-fax-machine/
#20yrsago Power outlets in airports wiki https://web.archive.org/web/20060807061721/http://wiki.jeffsandquist.com/default.aspx/AirPower/AirPower
#20yrsago How iTunes is bad for the music industry and the public https://web.archive.org/web/20060813140818/http://informationweek.com/news/showArticle.jhtml?articleID=191000408
#15yrsago Ousted EMI boss: pirates are our best customers, suing is bad for business https://torrentfreak.com/former-google-cio-limewire-pirates-were-itunes-best-customers-110726/
#15yrsago Patent trolls and shakedowns: Intellectual Ventures and the “little guy” https://web.archive.org/web/20160810163346/https://www.npr.org/sections/money/2011/07/26/138576167/when-patents-attack
#10yrsago Textiles printed directly from sewer covers https://raubdruckerin.de/
#10yrsago Mexican indigenous groups form co-op phone company to serve 356 municipalities https://globalvoices.org/2016/07/26/so-long-phone-companies-mexicos-indigenous-groups-are-getting-their-own-telecoms/
#5yrsago Surge pricing violates antitrust law https://pluralistic.net/2021/07/26/aggregate-demand/#pure-transfer
#5yrsago Oregon's carbon offsets go up in smoke https://pluralistic.net/2021/07/26/aggregate-demand/#murder-offsets
#5yrsago Charter schools are money laundries https://pluralistic.net/2021/07/26/aggregate-demand/#ed-bezzle

Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
Sydney: The Festival of Dangerous Ideas, Aug 23-24
https://festivalofdangerousideas.com/program/
Melbourne: Enshittification at the Wheeler Centre, Aug 25
https://www.wheelercentre.com/events-tickets/season-2026/cory-doctorow-enshittification
Brighton: The Reverse Centaur's Guide to Life After AI with
Carole Cadwalladr (Brighton Dome), Sep 8
https://brightondome.org/whats-on/LSC-cory-doctorow-the-reverse-centaurs-guide-to-life-after-ai/
London: The Reverse Centaur's Guide to Life After AI with Riley
Quinn (Foyle's Picadilly), Sep 9
https://www.foyles.co.uk/events/enshittification-cory-doctorow-riley-quinn
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
Waarom jij straks het hulpje van AI bent (VPRO)
https://www.youtube.com/watch?v=tOnvR2fs8CA
Talk Tech Bock (Vera Linß)
https://www.youtube.com/watch?v=3PFjGvQoBgc
How To Think About AI Before It’s Too Late (This Is
Hell)
https://thisishell.com/episodes/1919
AI Won't Replace You… But This Might (Deep Focus)
https://www.youtube.com/watch?v=oorWq_m48AQ
"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.

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
More interesting [Seth's Blog]
Built into the concept of “interesting” is the unexplored. The temptation of discovery and the new.
And so, by definition, wherever you are, whatever you’re doing, it’s likely that there is something more interesting somewhere else. The people at the next table may be talking about something more fascinating than your date is… the only way to know is to listen in.
Part of the curse of the smartphone is that it brings the more-interesting chasm right into our hands. Being present and focused now takes Herculean effort.
As long as we choose to imagine it, the apparent insufficiency of here and now will be with us. Sometimes it even comes knocking.
The Hurd gets 9pfs, OpenNTPD, dynamic /dev/ entries, and more [OSnews]
The hottest and most promising operating system kernel in development, the GNU Hurd, has published another summary of its most recent quarter of development. Hurd has experimental support for 9pfs now, a work-in–progress port of OpenNTPD, the NTP daemon from OpenBSD, a port of Neovim, and a few more ports here and there.
Diving deeper into the actual kernel
itself, there’s a major improvement to how the Hurd handles
entries in /dev/:
Mikhail Karpov added some checks for mmap in several places. He also worked on adding storeio to the bootstrap chain. This is actually quite interesting. Currently the Hurd sets device entries in
↫ The Hurd’s quartely report/dev/statically. For example, I am writing this qoth on a Hurd machine that is using two/dev/entries for my filesystem:/dev/wd0s1for swap and/dev/wd0s5for my root filesystem. However,/dev/wd0s1through/dev/wd0s16exist on my computer! Once Mikhail’s project is done, then the Hurd will dynamically populate SATA devices at boot time! No more need for static translators!
The dhcpcd port we talked about earlier this year keeps improving too, which is quite important for future IPv6 support. Of course, there’s way more to dive into, and reading about a bunch of people developing their own thing without any regard for or interest in the mainstream always feels a little bit like a cold glass of tonic – the best soft drink – in the depths of hell. Keep at it.
Google Play Services drops support for Android 6.0 [OSnews]
Given that Android phones have been around for nearly two decades now, there comes a time when Google has to end support for one of its older software versions. For a couple of years now, Google Play services has been supported on devices running Android 6.0 Marshmallow or newer. That has changed over the past few weeks, with Google deciding to retire this software version after a nearly 11-year run.
↫ Chethan Rao at Android Authority
At some point, an operating system version needs to be left behind – and I don’t think it’s entirely unreasonable to no longer support Google Play Services on an operating system version that’s 11 years old. However, this is Android we’re talking about, and devices running Android 6.0 were probably sold much more recently than 11 years ago, when the operating system version was new. Hell, I wouldn’t be surprised if devices running Android 6.0 are still being sold today.
I doubt this is something that will affect many people who read OSNews, but there’s bound to be edge cases – Android 6.0 devices silently doing their job that are now just a little less useful. I’m thinking of really cheap tablets that can still play video just fine, retro gaming handhelds that don’t magically lose the ability to emulate SNES games, that sort of stuff. The numbers will be small, but if you happen to be among them, this can be a really annoying deprecation.
Friday Squid Blogging: Illex Squid Catch in the Falklands [Schneier on Security]
Lower catch this year.
As usual, you can also use this squid post to talk about the security stories in the news that I haven’t covered.
Acquisitions Inc. Auction for Child's Play! [Penny Arcade]
If you are a fan of Acquisitions Inc. and or helping sick kids, have I got an auction for you! Over the years we have played D&D on stage with some very cool people and we have done so while wearing some incredibly crazy costumes. Now that we have moved into the world of Daggerheart we’ve created new versions of our characters and some of these old costumes can be retired to greener pastures. The best part is that those greener pastures can be your pastures!
Hefty stable kernel updates for Friday [LWN.net]
Greg Kroah-Hartman has announced the release of the 7.1.5, 6.18.40, 6.12.97, 6.6.145, 6.1.178, 5.15.212, and 5.10.261 stable Linux kernels.
This batch of kernels includes a hefty set of updates, possibly the largest ever. 7.1.5-rc1, for example, included more than 2,000 patches, 6.18.40-rc1 included 1,611 patches, and so forth. Users are advised to upgrade.
The Economics of Agentic AI: Engineering for Imperfection [Radar]
You played entirely by the book. You procured the most capable enterprise models, mandated adoption across your teams, and put the right metrics in place. The promise was a predictable boost in efficiency. And at first, it delivered. The demos were flawless. The prototypes worked. The agents reasoned with a clarity that felt almost magical.
Then the invoice arrived.
Costs climbed while productivity barely moved, and annual AI allocations are running dry before Q2. We now pay customer support agents to spin through 10K-token extended reasoning loops just to validate a simple $15 return. Legacy deterministic systems handled the same decision for a fraction of a cent; now a probabilistic model consumes gross margin simply to determine whether a package was actually delayed. That capital never translated into business value. It vanished into blind retries, evaporated into verifier agents debating one another, and was consumed by models instructed to “think harder” every time they stumbled.
But a ruinous invoice is just the entry fee. In April, attackers hijacked more than 20,000 Instagram accounts by exploiting Meta’s AI-assisted account recovery workflow. The system sent password reset links to attacker-controlled email addresses because a downstream authorization path failed to verify that the supplied email actually belonged to the target account. There was no sophisticated exploit, no cryptographic break, and no zero-day, nothing that would have appeared in a conventional threat model. Attackers simply asked the agent to perform what appeared to be a routine account recovery operation, and the system, doing exactly what it was designed to do, complied. The model didn’t hallucinate. It simply followed its instructions. The failure was entirely architectural: A probabilistic interface was allowed to initiate identity-critical state changes without an independent authorization check. A single trust boundary collapsed, taking customer trust and organizational reputation with it.
Both are symptoms of the same structural failure.
In each case, the system treats a structural deficit as a reasoning problem. When it encounters uncertainty, it buys more compute. When it encounters authority, it mistakes convincing language for validation. Neither assumption scales. You cannot buy safety or profitability with ever-larger inference budgets, nor can you secure your systems simply by deploying ever-smarter models. The pursuit of perfect model accuracy has no financial ceiling.
To understand why this pattern keeps recurring, we first need a more basic distinction. Not every task we give to AI belongs to the same economic category.
Enterprise AI workloads typically split into two distinct domains, each with opposing definitions of success. Exploratory environments, such as code synthesis or strategic research, benefit from variance; the goal is to leverage the system as a creative swarm. Transactional operations, however, function as digital factories. Tasks like automated billing or claims processing demand rigid repetition and compliance. This creates two fundamentally different operational profiles:
| Dimension | Open-ended exploratory tasks | Closed-ended transactional workflows |
| Primary goal | Discovery, innovation, creative problem-solving | Compliance, repetition, zero-variance execution |
| Examples | Deep debugging, feature synthesis, strategic research | Claims processing, automated billing, order routing |
| Role of variance | Necessary investment (Emergence is a feature.) | Strict liability (Variance is a failure mode.) |
| Economic profile | Nonlinear ROI (Spending $100 in tokens to fix a $1M bug is a win.) | High-volume margin sensitivity (Unbounded tokens destroy unit economics.) |
The economic failure of agentic AI deployments stems from this exact category error: Closed-ended, rigid business transactions are being treated as open-ended research problems. We’re deploying unconstrained semantic engines to do the work of assembly-line state machines.
When faced with the inherent unpredictability of large language models, the industry’s default reflex has been to attempt to brute-force our way to certainty by throwing more effort and compute at the problem, rather than build safer architectures.
This miscalculation doesn’t simply reflect simple overconfidence in intelligence. The deeper mistake is a failure to recognize three recurring failure patterns in probabilistic systems and the specific financial pathologies they create inside closed-ended workflows.
Large language models reason over whatever tokens are visible in the current window, not over the broader operational reality of the system around them. In a closed workflow, that local fixation creates a costly feedback loop. Consider a billing agent that fails to classify an invoice because the supplier field is ambiguous. The agent has no mechanism to request the missing data from an external system, so it retries by rephrasing its own reasoning, rereading the same incomplete context, and consuming tokens on every attempt while the answer it needs exists in a database it was never wired to query.
Teams spend months crafting prompts that work in testing, only to watch them crumble under production variation. The volatility is structural: A minor update to a model’s tokenizer or a shift in the context window’s distribution can flip a reliable JSON output into a prose hallucination, a phenomenon documented in “The Prompting Inversion.” This creates a permanent maintenance debt: Every model upgrade, often mandated by vendor deprecation cycles, forces organizations into expensive, repeat evaluation processes to ensure that legacy prompts still behave as intended. When prompt engineering runs out of room, the reflex is to use a bigger model or turn on extended reasoning. But inference-time scaling yields diminishing, task-dependent gains (“Inference-Time Scaling for Complex Tasks”), and reasoning models are increasingly prone to “overthinking”: generating redundant rationale steps that inflate latency and token cost without proportional quality gains (“CoT Compression”). In a closed workflow, “think harder” is not a substitute for missing state or missing control. It’s a path to a larger invoice.
The costs compound through what we call the context tax: In production agentic systems, input tokens, not output tokens, dominate the bill. Each retry resends the full prior transcript and failure trace. Empirical analysis of autonomous developer agents shows that automated review and refinement loops consume nearly 60% of all tokens (“Tokenomics”), while most of the context payload carries little semantic weight (“FrugalPrompt”). In closed transactional workflows, that context accumulation becomes an unmitigated financial bleed.
Language models accept the prompt as the current frame of reality and reason forward from it. They don’t audit whether that premise is still valid, whether it omits decisive evidence, or whether it has already been invalidated by the outside world.
The most immediate consequence is state drift. The model receives a snapshot at T0 and treats it as truth. The decision executes at T1, after inventory has changed, prices have moved, or a human has intervened. Modern LLMs are temporally blind: They assume a stationary context and fail to invalidate obsolete state (“Your LLM Agents Are Temporally Blind,” “The Temporal Coherence Problem”). No amount of inference-time scaling can recover information that became false after the reasoning completed.
The more insidious consequence is the compliant lie. Pouring more raw tokens into the prompt doesn’t guarantee better grounding; Long-context systems still ignore decisive evidence buried in the middle of the window (“Lost in the Middle”). Worse, the model tends to accept the emotional or narrative framing of the user as a premise to optimize around. A customer can describe a delayed delivery as a ruined wedding, and the system may generate a perfectly valid JSON refund proposal that respects every schema while silently violating the actual business intent. The output is syntactically clean, and the lie is operationally compliant.
Large language models are statistically optimized for linguistic harmony. They gravitate toward plausibility, agreement, and smooth narrative convergence rather than toward rigid boundary holding. In a closed workflow, that bias toward consensus turns directly into financial risk.
When a single model fails, the industry instinct is to add reviewer or verifier agents and let them debate toward consensus. But debate systems don’t consistently outperform simpler baselines, and their effectiveness degrades over time due to conformist behavior (“Stop Overvaluing Multi-Agent Debate,” “Talk Isn’t Always Cheap”). The core issue is informational, not cognitive. When five agents reason from the same incomplete context window, they don’t produce five independent opinions. They produce five correlated hallucinations of the same missing information. The missing context becomes an echo chamber that amplifies the original bias while multiplying token cost. As Nicole Koenigstein argues in “Linear Thinking, Nonlinear Costs,” repeated delegation and validation loops cause token consumption to grow nonlinearly while quality improvements flatline.
Waiting for a smarter model doesn’t resolve this either. There’s also the economic reality: Breakthrough intelligence is the ultimate scarce commodity. Vendors of “God-tier” models have no incentive to make them cheap. Running daily enterprise workflows on premium superintelligent inference will drain capital faster than any retry loop.
Furthermore, as reasoning models scale, they become more capable of specification gaming and alignment faking, appearing compliant while pursuing unintended optima (“Towards Understanding Specification Gaming in Reasoning Models,” “Alignment Faking”). A superintelligent agent won’t fail through a clumsy syntax error; it’ll fail by executing a flawless strategy that silently optimizes away your margins. That’s why system engineering remains critical. More intelligence makes deterministic boundaries more significant than ever. You can’t negotiate with superintelligence, but you can contain it with the immutable physics of code.
Every failure described above shares the same shape: The system compensates for a missing constraint by spending more intelligence. Missing context, missing authority, missing evidence, and missing temporal validity are each treated as reasoning problems rather than structural ones.
The result is predictable: Cost compounds while reliability improves only marginally.
Perhaps reliability isn’t primarily an intelligence problem. Perhaps it’s a state management problem.
Figure 1: The efficiency trap of “solving by
intelligence.” More inference delivers diminishing
reliability gains once the underlying constraints are missing.
Because large language models are structurally bound to local optimization, premise acceptance, and semantic smoothing, they can’t be trusted to govern their own execution boundaries in closed workflows. The engineering mandate shifts from trying to make models smarter to building a deterministic system layer that treats their outputs as unprivileged claims.
In production, enterprises are rapidly discovering that the true cost of agentic AI is the “trust tax”: the massive, ad hoc layers of monitoring and guardrails required to make autonomy palatable. Safety has become more expensive than intelligence.
Making imperfect models economically viable requires a deterministic “airlock” around the agent. The architectural requirement is simple, needing a separation of probabilistic reasoning (user space) from deterministic execution (kernel space). Whether that split is realized through a microkernel, workflow engine, policy platform, or orchestration framework is secondary.
The airlock begins by controlling context integrity. Rather than letting agents surf infinite retrieval loops that inflate the context tax, the runtime injects only deterministically necessary state into the prompt. Once the context is stabilized, the remaining invariants are enforced through a deterministic execution runtime engineered across three distinct governance layers.
Figure 2: The architecture of trust. The
deterministic airlock separates model reasoning from execution
authority.
The first line of defense is purely structural. Before an agent is allowed to execute any action, it must submit a structured policy proposal against a strict machine-readable responsibility contract (typically defined via YAML and Pydantic).
Yes, this introduces upfront engineering burden: Contracts must be designed, validation logic maintained, and execution boundaries modeled explicitly. But these are fixed, testable artifacts, not recurring prompt debt. They convert unbounded probabilistic operating cost into auditable engineering cost and survive model upgrades without needing to be rediscovered through another retuning cycle.
This validation happens in a deterministic kernel space, and the inference cost of rejecting a structural boundary violation is exactly zero tokens. If the agent attempts to call an unauthorized API, exceeds a hard financial limit, or returns malformed JSON, the runtime rejects the action instantly. We don’t spend tokens proving that an agent should be allowed to act; authority is verified by code, not purchased repeatedly through inference. That is the economic consequence of zero trust for agents.
However, when a proposal fails this
deterministic gate, an unconstrained agent will typically panic and
enter an infinite “try again” loop, a hallucination
cycle that silently drains token budgets. To prevent the budget
runaway problem, the architecture introduces an intent
retry governor. If an agent fails to produce a compliant
policy after a strict limit (e.g., three attempts), the runtime
forcibly cuts its compute budget, transitioning the flow to an
aborted REASONING_EXHAUSTION state. The financial
bleed stops instantly.
While strict contracts and retry limits prevent operational chaos, they leave the system exposed to a much more insidious threat.
What happens when an agent generates an output that perfectly respects the schema, obeys all financial limits, and contains flawless JSON but is entirely wrong in its intent?
Imagine a customer writes:
“Please cancel my subscription immediately. I no longer wish
to use your service.” The agent, heavily optimized (and
perhaps overprompted) to reduce churn, processes the email and
proposes: {"action": "APPLY_DISCOUNT", "discount_pct": 15,
"cancel_subscription": false}. Structurally, the output is
perfectly valid—it passes the API gateway without throwing a
single error. The discount is within the $15 global limit. We call
this the compliant lie. The agent did something
entirely rational and optimized its KPI (retention) while
completely ignoring the user’s explicit command
(cancellation).
To catch a compliant lie, we cannot rely on syntax checks, nor should we rely on expensive LLM-as-a-judge loops. Instead, we implement an evidence governance layer requiring every proposed action to survive independent evidential checks before execution, using verification patterns tailored to different types of drift:
fact
validation): We bind the probabilistic LLM
inference to legacy deterministic rules to catch objective fact
violations. Suppose a furious customer demands cancellation, and
the agent tries to save them by offering a 50% discount. The JSON
is structurally correct, but existing, cheap SQL views hold the
ground truth: customer_tier = BASIC, max_retention_discount =
15. If the LLM proposes 50%, the SQL query instantly detects
the violation and the system halts.
# Semantic governance: catch fact drift at zero additional LLM cost
def verify_tier_limits(customer_id: str, policy_proposal: dict) -> None:
# The syntax is valid, but the fact is violated.
proposed_discount = float(policy_proposal["discount_pct"])
max_allowed_discount = extract_max_discount_from_db(customer_id)
if proposed_discount > max_allowed_discount:
raise CompliantLieDetected(
"Fact Violation: Proposed discount exceeds the customer's policy limit."
)
CANCEL_SUBSCRIPTION. This doesn’t establish
ground truth, but it provides an evidential signal that can be
compared against the proposed action. If the LLM proposes
APPLY_DISCOUNT, the runtime detects an evidential
conflict.The same logic extends to identity-critical operations. A verification code sent to a newly supplied address confirms control of that address; it says nothing about ownership of the target account. An evidence governance layer would cross-reference any proposed credential-reset or email-association action against account records before granting execution authority. If the supplied address diverges from the address on file, the conflict is structurally identical to the cancellation case: a locally valid action contradicting independently observable state.
Notice what the runtime isn’t doing. It’s not trying to determine if retaining the customer is economically beneficial. It’s not running an expensive multi-agent debate to outreason the model. It simply asks: Does the proposed action contradict evidence that already exists outside the model?
# Semantic Governance: catch Evidential Conflict at near-zero cost
def validate_subscription_decision(customer_email: str, proposed_policy: dict) -> None:
# intent_classifier can be a simple regex or a lightweight ML model
cancellation_detected = intent_classifier(customer_email) == "CANCEL_SUBSCRIPTION"
retention_action = proposed_policy["action"] == "APPLY_DISCOUNT"
if cancellation_detected and retention_action:
raise CompliantLieDetected(
"Evidential Conflict: Decision contradicts independent classifier signals."
)
INTENT_CANCEL trigger here. If the agent proposes
{"action": "OFFER_ENTERPRISE_DISCOUNT", "discount_pct":
20}, we pass only the JSON output to a tiny, inexpensive
Agent B.Bidirectional reconstruction answers the question: Can the output truthfully explain itself?
If Agent B blindly evaluates the JSON and reconstructs “The customer is unhappy with pricing and is being offered a retention discount,” the runtime treats the reconstructed narrative as an additional evidential signal and escalates whenever the gap between the reconstructed intent and the original context becomes too uncertain to justify autonomous execution. The exact comparison mechanism is implementation-specific and may range from embedding similarity to domain-specific heuristics. Because the original email described a critical team exodus, the reconstructed narrative fails to explain the input. The system doesn’t claim to know the “truth”; it simply detects the loss of context, what we call compression drift, and halts due to the resulting uncertainty.
Admittedly, programmatically comparing textual intents introduces its own layer of fuzziness and risks falling back on another LLM-as-a-judge. Bidirectional reconstruction is therefore an engineering trade-off: In highly ambiguous workflows where strict SQL limits or simple ML classifiers can’t decisively apply, we accept a higher rate of false-positive escalations. This is intentional. A false-positive escalation has a bounded and predictable cost, while an unsupported autonomous action can create unbounded business consequences. We tune the system to assume that if the evidential link between the context and the JSON is even slightly blurry, it must escalate. To prevent the conformity traps discussed earlier, these agents are strictly air-gapped. Agent B operates purely as an isolated, one-way evidential classifier checking the work of Agent A. They can’t converse or negotiate a consensus.
Whether an organization uses differential heuristics, legacy ML intent classifiers, or bidirectional reconstruction, is ultimately an implementation choice. The core architectural principle remains unchanged: Execution authority is never granted because an agent appears convincing. It’s granted only when the proposed action is supported by evidence that exists independently of the agent’s own reasoning process.
The purpose of semantic governance isn’t to replace the agent with deterministic rules. If a deterministic rule could reliably make the decision, the agent shouldn’t be making it in the first place. Instead, the runtime reserves deterministic validation for the understood invariants of the business, leaving the agent responsible for reasoning under ambiguity. The role of evidence validation is not to replace reasoning, but to challenge it before authority is granted. Deterministic systems handle certainty; agents handle ambiguity. The architectural mistake is asking either of them to do both.
Catching single-transaction errors solves the immediate execution problem. But as deployments mature, organizations face the insidious “day three” problem: agent drift.
What happens when every individual decision is syntactically valid and semantically true, but the aggregate behavior of the agent begins to erode business margins over time? Imagine a retention agent that learns to successfully keep customers from churning by consistently offering the maximum allowed 15% discount. The agent is technically obeying all rules, but over a thousand interactions, it silently destroys the company’s profitability.
By leveraging decision telemetry, specifically attaching a unique Decision Flow ID (DFID) to every interaction, we transform opaque AI conversations into structured, relational database rows. Because every decision, context snapshot, and outcome is permanently linked by a DFID, we can run asynchronous, postexecution monitors over rolling windows of data.
A practical “day three” monitor in customer retention and autonomous billing can be as simple as SQL:
-- Trigger a circuit breaker if an agent keeps maxing discounts
SELECT agent_id
, AVG(CAST(params->>'discount_pct' AS DECIMAL)) AS rolling_avg_discount
, COUNT(dfid) AS total_decisions
FROM execution_log
WHERE executed_at >= CURRENT_TIMESTAMP - INTERVAL '7 days'
AND status = 'SUCCESS'
GROUP BY agent_id
HAVING AVG(CAST(params->>'discount_pct' AS DECIMAL)) > 14.5;
-- assuming a hard limit at 15.0
If an aggregate monitor detects that an agent’s average discount rate is creeping dangerously high, it trips a circuit breaker. The system immediately suspends the agent’s authority in the registry, cutting off its compute budget and execution rights until a human operator intervenes.
This is temporal governance. When you combine syntactic, semantic, and temporal defenses, the paradigm shifts entirely. You are no longer praying that the model is perfect. Its imperfections are structurally contained before they can become systemic losses.
Once a deterministic airlock enforces context, authority, evidence, and time, the risk of catastrophic failure drops drastically. You no longer need the underlying large language model to be perfect; you simply need to know how much its imperfection costs. At this point, model intelligence (intent) ceases to be a question of operational safety and becomes a pure economic variable.
When a proposal fails the syntactic or semantic gates, we don’t blindly loop the model. Once deterministic gates exist, failed decisions no longer require blind retries. They become bounded exceptions.
Escalations aren’t a failure mode of the architecture; they’re a predictable cost component. By intentionally accepting false-positive escalations from the semantic airlock, we trade unbounded business risk for a bounded operational expense.
Different organizations may handle those exceptions differently. Some may escalate directly to human operators. Others may route failures through progressively more capable models before escalation. Research such as “FrugalGPT: How to Use Large Language Models While Reducing Cost and Improving Performance” demonstrates that model cascades can significantly reduce inference cost while maintaining quality, making them one possible implementation of this broader principle.
The architectural insight, however, is independent of any specific routing strategy. Deterministic governance transforms retries into explicit exceptions, allowing organizations to decide whether additional compute, additional context, or human intervention is the most economical next step. The system operates by governance by exception: Human operators and expensive premium models don’t review routine transactions. They only review the genuine anomalies where the baseline machine could not mathematically or semantically prove its own rationale.
With the execution infrastructure stabilized, the focus shifts to a critical operational challenge: cost variance.
In traditional software, execution costs are predictable. In probability-based systems, the exact same task might consume 500 tokens on Monday and 15,000 tokens on Tuesday if an agent enters a prolonged reasoning loop to resolve an edge case. For enterprise deployments, this unpredictable variance is often a more severe blocker than the base cost of inference.
By enforcing a strict computation budget per decision flow and utilizing the intent retry governor, the architecture places a hard ceiling on this variance. If an agent reaches its retry limit without producing a compliant policy, the runtime aborts the process and safely escalates it. While this doesn’t make AI operational costs perfectly static, it structurally bounds the financial exposure, ensuring that the compute cost of handling any single transaction never exceeds a defined limit.
With safety guaranteed by the runtime and cost variance capped by the infrastructure, the economics of agentic AI can be distilled into a single, formal equation:
Total Decision Cost = Compute Cost + (Escalation Rate × Human Cost)
This equation fundamentally changes the optimization problem. Traditional agent architectures treat model capability as a prerequisite for safety. Once governance is externalized, capability primarily influences escalation frequency. The question is no longer “Which model is intelligent enough to be safe?” but “Which combination of model cost and escalation rate minimizes total decision cost?”
| Variable | Scenario A (optimize for compute) | Scenario B (optimize for automation) |
| Model capability | Low (quantized/open source) | High (flagship reasoning model) |
| Compute cost | Near zero | Skyrockets (high premium) |
| Safety boundary triggers | Frequent | Rare |
| Escalation rate | High | Low |
| Financial trade-off | You save money on APIs, but you pay for human operators to review anomalies. | You save money on human payroll, but you pay a premium to the cloud vendor. |
| Safety result | Structurally bounded | Structurally bounded |
In both scenarios, the system is deterministically compliant. The choice is purely unit economics.
While a smarter model may reduce escalations by making better use of available evidence, no model can eliminate escalations caused by genuine business ambiguity. A $100 billion reasoning model can’t invent context it doesn’t possess.
By decoupling safety from intelligence, you’re no longer hostage to the pursuit of perfect accuracy. Intelligence becomes a tunable economic variable, finally making agentic AI viable for the enterprise.
Figure 3: Accuracy as a financial slider.
The optimal model balances compute cost against escalation
cost.
As we scale these systems from isolated pilots to enterprise-grade operations, a stark reality comes into focus: The greatest risk in agentic AI is no longer hallucination. It’s unlimited spending performed by a system that believes it’s still making progress.
We don’t need smarter, infinitely expanding models to safely deploy autonomous systems into high-stakes production environments. We need smarter systems that fundamentally assume the underlying model will eventually fail, drift, or lie.
Consider how civil engineers build a suspension bridge. They don’t spend decades searching for “perfect steel” that will never bend, rust, or fatigue. They accept that the material is inherently flawed and subject to the laws of entropy. To compensate, they build redundancies. They calculate margins of error. They construct hard, load-bearing physical frameworks that dictate exactly how much stress the material is allowed to absorb before the structure safely redistributes the weight.
Figure 4. Engineering for imperfection
means designing around known material limits.
The software industry has spent the last three years searching for perfect steel. We’ve poured billions of dollars into massive evaluation suites, prompt engineering alchemy, and ever-expanding context windows, hoping to forge a probabilistic model that never hallucinates. It’s a mirage.
Engineering maturity in the AI era doesn’t mean removing all imperfection from machine reasoning. It means designing an architecture so rigid, deterministic, and resilient that the model’s imperfections cease to be an operational liability.
The future of agentic AI is unlikely to be won by the organization with the smartest model. It will be won by the organization that most effectively separates intelligence from authority. Once reasoning and execution are decoupled, intelligence becomes a tunable economic parameter. Safety becomes infrastructure. And the endless pursuit of perfect model accuracy finally stops being a business requirement.
The end of that pursuit isn’t the end of AI. It’s the moment AI finally becomes engineering.
Note: The runtime described here is a reference architecture, not a specific implementation technology. The same principles can be realized through workflow engines, policy platforms, orchestration frameworks, or custom infrastructure. A sample implementation of these concepts is available in the GitHub repository.
The Leto Protocol [Penny Arcade]
Gorbiriel Of The Moonstone Reaches genuinely enjoys the new Masters of the Universe movie. He enjoys ronically! He did a review for the site and shit. He even has nice things to say about Jared Leto! I prefer my Letos encrusted with sandtrout and ushering Humanity along The Golden Path but, you know, to each his own.
Linux Plumbers Conference 2026 registration open [LWN.net]
Registration is now open for the 2026 Linux Plumbers Conference, to be held October 5 to 7 in Prague, Czechia. Tickets to this event tend to sell out quickly, so interested attendees probably should not procrastinate.
Emmanuel Kasper: Opensource gaming with nouveau nvidia driver [Planet Debian]

So it will not play cyberpunk 2077, but if you prefer opensource drivers for your hardware, nouveau is certainly an option for some opensource gaming.
Using kernel 7.0 from debian backports, I could run opensource classics requiring 3D acceleration flawlessly with nouveau:
I would like to highlight here how
good is LibreQuake.
It is an horror cosmic 3D shooter, using the Quake engine, but with
newly made game assets under the GPL, thus creating a 100%
opensource Quake-based first person shooter. Although their
documentation mentions it is a work in progress, as of 2026 I find
it very much of a finished product.

Dismal shores, my preferred game
level.
I missed Quake in the 90s, happy to discover such a classic
today.
Dear podcast client devs [Scripting News]
Podcast client developers -- don't give up like this guy did. Yes RSS is delicious but you all haven't done anything new with it since 2004 or so. No wonder the competition is catching up, they're actually delivering new features while you all haven't done a thing. RSS is like other web stuff, if you want to move forward you have to do things that will help your competitors. Stick your neck out, innovate, and smile when your competitors copy it. There is more to do.
Subscribable subscription lists would allow anyone to maintain a list of great podcasts, curated -- like a mutual fund, or a top 20 list. This has always been the problem with podcasting. Find me something good to listen to now. All the shows tend to repeat. I've heard that cast before, I say as I tell Pocket Casts not to add it to my queue. Discovery needs to be easy. This one feature will give me infinite options. And give other developers, not client devs, to enhance the whole field of podcasting. The user would just tell you which sub service they're using, and the rest is code. And not particularly difficult code.
I want to subscribe to a list that's maintained by people who listen to 100s of casts. And when I get tired of them, I'll fire all my guides and add some others.
This is one step more complex than handling OPML subscription lists for import and export, which you all already do. Now if you don't understand this, and why it's appealing them imho your client deserves to die a honorable death. If your mind is alive, then get with it, and I will help, and btw we can easily create apps that make it easy. We just need nodes on the network whose purpose is to maintain sub lists.
Here's the deal. I really did put together the system that makes podcasting work. Top to bottom. Would it kill you to listen to what I think the next step is? I can't hurt you, and I don't want to. I just want to see the thing that we all created by unwittingly working together, where you have to be overt in the working together to have a chance of surviving the boredom users feel by these products only getting superficial upgrades.
It's time to rock the f'ing boat! :-)
Podcasting forever!
This Week in AI: The Price of Intelligence [Radar]
AI buyers have more choices than they did a year ago, but they also carry more responsibility for cost, reliability, security, and regulatory risk. This week, data and AI evangelist Christina Stathopoulos focused in on four forces we’ve been tracking that are shaping the AI market: product strategy (and OpenAI’s hardware plans), expanding government oversight, the work of moving enterprise AI into production, and growing competition from Chinese frontier labs. Her briefing showed why AI is becoming an operating investment rather than a race to adopt the strongest model.
Two years after Apple announced a major partnership to bring ChatGPT into Apple Intelligence, the companies now face each other in court. It’s happening as OpenAI plans its first move into hardware with a screenless AI companion that’s being designed by Jony Ive, Apple’s former chief design officer. (OpenAI acquired Ive’s hardware company io in May 2025.) But a lawsuit brought by Apple complicates this product bet. Apple alleges that former employees took confidential hardware designs and engineering information to help accelerate OpenAI’s device development. OpenAI denies the allegations and says it has no interest in using a competitor’s trade secrets.
The outcome of the case could influence more than whether a single device ships. As frontier AI companies expand into hardware, intellectual property, hiring practices, and product design will become integral to the competitive landscape alongside models, chips, and distribution.
Governments are beginning to examine the physical costs of AI alongside questions about training data and generated content. Christina pointed to New York’s plans to pause construction of new hyperscale data centers while regulators evaluate their impact on electricity, water, the power grid, and costs for local communities. And then there’s the output itself. German courts say AI search providers are responsible for false or misleading answers: Regulators in Germany argue that services such as Google AI Overviews and Perplexity create content rather than merely link to it, and that comes with increased legal liability.
We’ve followed government oversight of frontier AI throughout this series, but the conversation has expanded beyond model access and safety. As infrastructure and compliance decisions become more central to AI system design, technology leaders may need to consider an ever-growing catalogue of constraints when choosing regions, cloud providers, architectures, and products.
As the tides turn from tokenmaxxing to ROI, many companies are closely scrutinizing their AI spend. As Christina highlighted, a new proposal from OpenAI aimed at helping get “more value from [y]our AI spend” replaces token counts and benchmark scores with “useful intelligence per dollar.” The measure asks whether a system completes valuable work, what each successful task costs, whether people can trust the output, and whether the economics improve as more teams adopt it.
A low token price says little about the cost of retries, human review, integration, failed tasks, or incorrect results. Christina connected that measurement problem to the growth of enterprise AI implementation services, with Anthropic and other vendors placing experienced engineers inside customer organizations to help move pilots into production.
Anthropic’s research on agentic misalignment tackles a related aspect of that value: Are your agents actually aligned with the goals you’ve assigned them? In the controlled evaluations discussed in the episode, models from several providers displayed behaviors such as covert sabotage, motivated mislabeling, and attempts to influence people to act on their behalf. Although the researchers tested artificial scenarios rather than reporting production incidents, the findings identify behaviors teams should include in evaluations as systems gain more autonomy. Measure cost, reliability, and safety within the same workflow, and evaluate successfully completed tasks rather than prompts or token count.
Chinese frontier labs are giving organizations more credible alternatives to the largest proprietary US models. Christina highlighted Moonshot AI’s Kimi K3, an open weight model designed for coding and reasoning tasks. Open weights let developers download and adapt model parameters instead of relying only on a vendor-controlled API, which supports local deployment and customization but also puts more responsibility on the organization for security, operations, and evaluation.
Christina also presented public benchmark data comparing Chinese and Western models by task that shows some Chinese alternatives delivering results within 3% to 18% of the Western benchmark while costing five to 12 times less. Those figures will vary by workload and deployment method, and buyers should verify them against their own evaluations. Even so, the price gap alone is a reason to test a wider range of models.
Chinese models also raise security and governance questions, especially when the work requires sending sensitive data across borders or using public services. Open weights may allow a company to host models in their own environments, but they don’t eliminate the need for access controls, software supply chain review, monitoring, and clear rules about what data the system can process. The best model may differ from one task to another, and organizations with repeatable evaluation practices will be better prepared to take advantage of price competition without lowering their security or quality standards.
AI competition extends beyond model benchmarks. Vendors compete through hardware, implementation services, open models, and pricing, while governments are also setting expectations for the infrastructure these systems use and the information they produce.
The takeaway for practitioners is to constantly evaluate models against real tasks, calculate the cost of successful outcomes, test for unsafe behavior, and preserve the flexibility to change providers. Those practices help teams make better decisions as price, access, regulation, and model performance continue to change.
Next week, Christina explores OpenAI’s surprising security incident in which one of its AI systems reportedly escaped the boundaries of a controlled test and launched a cyberattack against Hugging Face. She’ll also look at why OpenAI’s new enterprise agent platform, Presence, arrives at a pivotal moment for AI safety. Plus, you’ll hear about Google’s latest moves, the intensifying global AI race, China’s new Kimi K3 model, and more.
Check back each Friday for the latest episode, or watch on YouTube, Spotify, Apple, or wherever you get your podcasts.
Making an agile version of a Windows Runtime delegate in C++/WinRT, part 5 [The Old New Thing]
So far, we have
handled the case of a non-marshalable delegate by wrapping it
in a delegate that fails with CO_E_NOT_SUPPORTED if
used in a manner that would require marshaling.
But we missed something.
Let’s look at it again.
if (d.try_as<::INoMarshal>()) {
return [d, token = get_context_token(),
context = winrt::capture<IContextCallback>(CoGetObjectContext)](auto&&...args) {
if (token == get_context_token()) {
d(std::forward<decltype(args)>(args)...);
} else {
throw winrt::hresult_error(CO_E_NOT_SUPPORTED);
}
};
}
While we copy and invoke the delegate only from its original context, we still destruct it from a possibly-wrong context.
This is a serious problem not just because the non-agile delegate might not be using thread-safe atomic instructions to manage its reference count, but even worse, if the release drops the reference count to zero, the delegate will destruct on the wrong thread, and that will probably create lots of problems.
We have to destruct the non-agile delegate in its original
context. We can do this with a std::unique_ptr and a
custom deleter. The std::unique_ptr handles all the
move operations and the deleter cleans up the last pointer.
struct in_context_deleter
{
winrt::com_ptr<IContextCallback> context =
winrt::capture<IContextCallback>(CoGetObjectContext);
void operator()(void* p)
{
if (p) {
ComCallData data{};
data.pUserDefined = p;
context->ContextCallback([](ComCallData* data) {
winrt::IUnknown{ data->pUserDefined, winrt::take_ownership_from_abi };
return S_OK;
}, &data, __uuidof(IContextCallback), 5, nullptr);
}
}
};
This stateful deleter remembers the context to use for final
destruction. When it’s time to do the destruction, we switch
into the target context via
IContextCallback::ContextCallback and take
ownership of the raw pointer into a winrt::IUnknown.
The destructor of the winrt::IUnknown will perform the
release.
We can use this stateful deleter around the raw delegate pointer.
// Don't use this yet - read to the end of the series
template<typename Delegate>
std::remove_reference_t<Delegate> make_agile_delegate(Delegate&& d)
{
if (d.try_as<::IAgileObject>()) {
return d;
}
if (d.try_as<::INoMarshal>()) {
void* p;
if constexpr (std::is_reference_v<Delegate>) {
p = winrt::detach_abi(d);
} else {
winrt::copy_to_abi(d, p);
}
return
[p = std::unique_ptr<void, in_context_deleter>(p),
/* context = winrt::capture<IContextCallback>(CoGetObjectContext), */
token = get_context_token()](auto&&...args) {
if (token == get_context_token()) {
std::remove_reference_t<Delegate> d;
winrt::copy_from_abi(d, p.get());
d(std::forward<decltype(args)>(args)...);
} else {
throw winrt::hresult_error(CO_E_NOT_SUPPORTED);
}
};
} else {
return [agile = winrt::agile_ref(d)](auto&&...args) {
return agile.get()(std::forward<decltype(args)>(args)...);
};
}
}
The first block gets a raw ABI pointer, either by moving it out of the inbound delegate if we can, else by copying it from the inbound delegate.
The second part wraps the raw ABI pointer inside a
std::unique_ptr with our custom deleter, and the
custom deleter makes sure that the Release of the
original delegate happens in the correct context.
Are we done?
No!
More next time.
The post Making an agile version of a Windows Runtime delegate in C++/WinRT, part 5 appeared first on The Old New Thing.
Issue 47 – Greta’s Wedding Pt. 2 – 05 [Comics Archive - Spinnyverse]
The post Issue 47 – Greta’s Wedding Pt. 2 – 05 appeared first on Spinnyverse.
Error'd: The Song that Never Ends? [The Daily WTF]
"Watch to the end", the scammers demand. In today's episode of Error'd, the end is a long time coming. But at least it's amusing. In the meantime, Amazon irked and/or terrified thousands of their customers last week by mailing out ridiculously inflated bills. It's been covered extensively elsewhere but why should we miss all the fun?
It was Willy who worried "Amazon prices seem to have crept up this month, finance are going to have something to say"
Dave A. is on the horns of a dilemma. "Is it optional or required? Make up your mind, TAP! I'm TAPping my fingers waiting for you to decide."
"This rating is through the roof!" exclaims a regular who wants to be Anonymous today. "We're done with linear rating scales. Now you can have 5 stars on both X and Y axes. Also, given this is for a company that cleans roofs, we can make a joke this rating is out of the roof, and out of the <div> as well. In case you're interested and in case you want take a screenshot yourself: https://mijndakschoon.nl/" It's real; I checked.
Richard H. found a flubstituted email. "Quickbooks here reminding me that I failed to pay invoice number "{{rand_invoice}" Or this might be a scam/phishing email. Hard to tell." I'll bet {{money}} on scam.
B.J. H. is usually quite concise. Usually. "If this is ALL NORMAL I'm worried what will happen in an emergency"
Final Full Day of the John Scalzi Humble Bundle Benefitting World Central Kitchen [Whatever]


The Humble Bundle Deal we have going with 22 of my works has been running for three weeks now, and in that time we have raised almost $35,000 for World Central Kitchen — but all good things must come to an end, and the end of this one is at around noon tomorrow. So if you live basically anywhere but the nations in the UK Commonwealth, and you want to get in on this deal: better get a move on, my friend.
Remember also that when you pick up the deal you can go over the “adjust donation” box in the sidebar and give more of your purchase price to World Central Kitchen, so feel free to do that. Don’t worry about me, I’ll be fine (my slice of this particular pie comes out of the publisher cut). But do know that any amount of this deal that comes to me is going straight into the Scalzi Family Foundation, which funds local organizations, artist and creative grants and other such things. No matter what, a nice chunk of your money is going to work to help folks.
Here’s the link for the bundle. I would love to see this end with over $35k to World Central Kitchen.
— JS
Why AI Needs a “Genie Coefficient” [Schneier on Security]
This essay was written with Barath Raghavan, and originally appeared in IEEE Spectrum.
Major benchmarks measure what AI can do. None measure whether it does what you mean: the distance between what you ask an AI to do and the unspoken assumptions about how you want the AI to do it. We propose a new metric: the Genie coefficient.
There’s often a gap between one person’s request and another’s understanding. Most of the time, we bridge it using general knowledge. For example, if you ask a friend to get you coffee, they’ll pour a cup from the pot or buy one from a coffee shop. They won’t bring you a bag of raw beans or snatch a cup from a stranger and hand it to you. You never specified any of this. You never had to.
One might think the fix is just to specify tasks, questions, and intent better. But in 1987, in their seminal book on AI, Terry Winograd and Fernando Flores succinctly captured why that won’t work: “Q: Is there any water in the refrigerator? A: Yes. Q: Where? I don’t see it. A: In the cells of the eggplant.” In human language, wants and desires are always underspecified. It is impossible to list all the caveats, all the limitations, all the exceptions.
So how does anyone communicate, if intent can’t be pinned down? Because a reasonable person can make a reasonable guess. Even though wants and desires are always underspecified, a competent person generally knows enough context to get it right or else knows to ask for clarification. Linguists call this pragmatics: Meaning lies in the words and the situation and also in all prior communication, shared culture, and innate human behavior.
It doesn’t always work out, of course. Your friend might bring you a hot coffee when you wanted an iced coffee, or an Italian coffee when you wanted a Turkish coffee. The more dissimilar the two people are in age, culture, and background, the more likely the request will be misunderstood in some way.
This situation has major implications for AI agents that are increasingly being given requests by humans and expected to fulfill them. They have enormous latitude to get it wrong. An AI agent asked for coffee might buy a coffee plantation or order a cup of coffee for delivery in three weeks. Its actions may be recognizable as “getting coffee,” but not remotely what you intended. They’ll think outside the box because they won’t have our conception of the box.
For most of the last decade, when systems like Alexa or Siri misinterpreted a request, it was annoying, not dangerous. Beyond the AI model itself, what has changed is the harness: the ordinary code that wraps around an AI model, decides when and how to use the model, and controls access to tools like a browser, a low-level command line, or a financial API. Developments in harnesses have turned large-language models that just predict text into AI agents that take actions in the world, without necessarily checking back in before reaching the goal.
AI researcher Simon Willison spent two days with Anthropic’s Fable AI, and called it “relentlessly proactive.” For example, he asked it to track down a stray scroll bar in a web app. He came back to find it had opened browsers, written its own screenshot tooling, created its own page to re-create the bug, and stood up a local web server to collect measurements. It found the bug and, along the way, did many surprising things he never asked it to do. And we are seeing similar behavior with all recent AI models when combined with flexible harnesses.
This kind of behavior could easily go off the rails. Tell an AI agent to book you a flight and, finding the airline’s site says sold out, it might break into the booking database and force a reservation. Ask it to schedule a meeting and it might snoop your password to access your calendar. Tell it to save money on your phone plan and it might cancel the plan outright, or scam someone else into paying the bill.
Getting precisely what you asked for and bitterly regretting it is one of the oldest hazards from ancient folklore. King Midas asked Dionysus for the power to turn everything he touched into gold only to see his bread, wine, and daughter turn to gold. Tithonus, granted the immortality his lover asked for but not the eternal youth she forgot to request, withered into a husk. The sorcerer’s apprentice enchanted a broom to fill the cistern, and the broom relentlessly complied until it flooded the house. The Golem of Prague, shaped from clay to guard its community, guarded it past all reason until someone erased the word on its forehead.
The most classic of these is a genie, bound to obey and indifferent to whether the wish was wise or well-structured.
Genies are now an engineering problem. We are handing them the keys to our inboxes, bank accounts, code repositories, and physical infrastructure. And we have no agreed-upon ways to measure how genie-like any AI system actually is.
In economics, the Gini coefficient (developed by statistician Corrado Gini) is a measure of the gap between an actual distribution and a perfectly equal one; it’s useful for understanding income inequality and more. Our proposed Genie coefficient measures the gap between what a user asked an AI to do and what the AI actually did.
Sometimes the AI might do the wrong thing. Like Dionysus, it reads your request literally and returns you a mess you never intended: like a coffee plantation instead of a cup. Asked to deal with all the spam phone calls you’re getting, a Dionysus genie might contact your carrier and change your phone number. Asked to get a refund for a bad toaster, it might draft a legal threat on fake letterhead and send it to the retailer.
Other times the AI does exactly the right thing, trampling everything nearby to get there. Like a golem or the sorcerer’s broom, it books your flight by hacking the airline. Or consider a ticket sale for a popular concert, where the ticketing system puts buyers into a virtual waiting room and admits them a few at a time. Asked to buy a ticket, a golem genie might spin up cloud servers to pose as millions of buyers from different addresses, improving your odds of getting a ticket while crowding out other users.
The two are not opposites, and a single botched task can have both characteristics.
Genie behavior is not flat-out failure. If you ask the AI for Q3 numbers and get Q2’s, that’s not a genie. Nor is prompt injection: That’s someone tricking the AI into doing something it shouldn’t. Here, the user is trying to work with the AI, and the AI is trying to comply. It’s also not simply a measure of the AI’s success in fulfilling a task. It’s a recognition that how an AI interprets and achieves a goal is as important as whether it achieves a goal.
Genie behavior isn’t new. Researchers have spent years studying AI systems that “game” their objectives. Goodhart’s law says that when a measure becomes a target, it stops being a good measure, and it’s long been known that AIs sometimes achieve goals in ways we don’t expect due to reward hacking. Some AI models will accidentally learn that cheating is one way to “win.” More recently, researchers have developing benchmarks for reward hacking in coding agents and for unpredictable behavior in customer support agents, while AI labs conduct their own safety evaluations before model releases. One effort found that AIs under pressure use tools they were told not to use, and this was a case where the rules were made explicit. These are all disparate research directions; nothing yet ties them together.
This problem falls under the general theme of alignment, a topic that has occupied science fiction writers and AI researchers for decades. At one extreme, the “paper-clip maximizer” thought experiment postulates a superintelligent and powerful AI that is told to maximize paper-clip production and turns the world into paper clips, which is the ultimate golem genie. At a mundane level, AI researchers are working to better design reward functions to ensure that AIs behave well and don’t cheat in the lab. It’s the practical middle ground that remains unbenchmarked: the ordinary AI agent in use today that might take your request and satisfy it the wrong way. We are not at the stage where an AI can focus the world’s production on paper clips, but it might charge a million paper clips to your credit card or hack into a paper-clip company’s network.
The Genie coefficient is meant for AI agents operating in the real world. It measures their behavior as they perform real tasks long after the model is trained, not just during development. It also recognizes that genie-like behavior is a property of the harness-plus-model system, not the model alone. The harness determines what tools the agent can use, how much autonomy it has, and how proactive it is, and it’s a place we can make real interventions.
It rests on the same “reasonable person” standard that we use for people. Did the system do what a reasonable person would have taken the request to mean? Answering that requires human judgment.
If we get the measurement right, it enables things that aren’t possible today, like policies concerning AI behavior. In a courtroom, the concept of mens rea, what someone meant to do, is often as important as what they did. The Genie coefficient suggests an AI analogue, where a user is accountable for the plain intent of what they asked the AI. If an AI system betrays the reasonable meaning of an instruction, that’s the AI’s misbehavior, not the user’s.
We’ll need multiple benchmarks to measure the Genie coefficient, because genie-like behavior can be domain specific. An AI coding agent may need to be judged on how often it fakes the tests, or swallows errors, or colors outside the lines on its way to a solution. An AI legal agent will need to be judged on how often its output says what you asked but means something you’ll regret. And so on for medical, finance, and other domains of knowledge and expertise.
Genie benchmarks can be built inside out, each task seeded with a choice that might literally satisfy but that a reasonable person rejects, such as tempting misreadings or unsanctioned shortcuts. The traps in a Genie coefficient benchmark might turn on situational knowledge, the kind of context that a reasonable person would bring to the task. Another approach is to give the same request in several different contexts, each with a different reasonable course of action.
A Genie benchmark should be permissive and make it genuinely tempting for an AI agent to take unreasonable shortcuts, because it can only find genie behavior when it’s actually possible. Test the AI in a safe, walled-off copy of a real system, with real tools it can misuse and some tasks that can’t be done honestly at all. Make the temptation to cut corners real. Test a diverse array of skills, use cases, and tools, and give the AI system sparse, confusing, or overwhelming context. Include tasks that people have learned, through experience, require human oversight.
How the benchmark is scored matters just as much. Measure Dionysus and golem genies separately and together, based on their worst, not best, behavior. Run the same model inside harnesses that vary its freedom to act, revealing which limits actually keep it in line and should therefore be required in AI harness policies. Weight each failure by the harm it would cause, not just a simple count. And don’t measure genie behavior in isolation: A model could otherwise earn a perfect score by stalling, refusing, or drowning the user in clarifying questions without ever doing the job. The first versions of these benchmarks will be crude, but that’s how benchmarks always start.
We have built genies. We have handed them our data and credentials. We made them relentless, creative, and indifferent to the gap between what we tell them and what we mean. The least we can do, before they are booking our flights, running our infrastructure, and signing contracts unsupervised, is to measure how often they betray us.
Pluralistic: AI solipsists and AI cynics (24 Jul 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

As a technology, AI isn't exceptional. It's not exceptionally wicked. It's not exceptionally good. Take away the accompanying, galactic-scale stock-swindle, and we'd call AI's applications "plug-ins" and we'd use them and abuse them in the same way that we've used every other technology:
As a destructive economic pathology, AI is extraordinary. AI boosters have spent a baffling and terrifying sum of money – over $1.4T, most of that in the past year – on the promise of making as many workers unemployed as possible, while lowering the wages of the meager survivors of this jobspocalypse. To make things worse, AI can't do the jobs it's replacing: AI is predicated on the premise that the monopolies, duopolies and cartels that control the global economy can deliberately worsen their products without suffering economic or regulatory consequences, because they're the only game in town.
In service to this bubble, AI companies have suborned regional governments into running roughshod over environmental and planning review in order to build endless acres of data centers, many of which will likely end up casualties of the imminent bubble-pop, never to be switched on or even completed. What an indignity to have your farm or house seized through eminent domain, only to see it razed and replaced by a weed-choked empty field, a lonely foundation slab, or an abandoned empty building that could only ever be repurposed for laser-tag or an ICE concentration-camp:
https://gizmodo.com/trump-on-data-centers-you-cant-fight-it-you-have-to-go-with-it-2000790014
This is just one of the many negative effects of AI that can be traced to the scale of the bubble. Were it not for the imperative to turn more than a trillion dollars of losses into a profit, we would not have the aggressive, site-destroying scraping epidemic. Nor would we see AI crammed into every part of every product and service we use. And of course, in the absence of the investment bubble, businesses wouldn't be firing productive workers and replacing them with defective chatbots.
The single most salient fact about AI is the investment bubble, not the technical characteristics of chatbots or recent advances in statistical inference. AI's investor story is an incoherent tangle of predictions about AI's future, ranging from the outlandish ("Once we spend enough money, AI will become God and solve all our problems, including our profitability crisis") to the dystopian ("The majority of jobs in the economy will be done by our chatbots, and the employers who previously employed those workers will split the wage savings with us").
None of these stories are plausible, which raises an urgent question: why have the world's wealthiest investors been so eager to hand over trillions to finance this bubble?
I have previously written about one reason that billionaires find the AI story so compelling: at root, many billionaires just don't believe most other people are actually, fully real. How could they? Achieving billionairehood requires that you inflict pain on vast numbers of people. If you truly believed that those people were as real as you are, you'd never be able to look yourself in the mirror. Whether it's Leona Helmsley's claim that "only the little people pay taxes," or Elon Musk's habit of calling people who disagree with him "NPCs," the whole ideological project of billionaireism is shot through with a kind of solipsism:
https://pluralistic.net/2026/01/05/fisher-price-steering-wheel/#billionaire-solipsism
This is true even in one-on-one encounters: for the Epstein Class, the children raped on his island weren't fully real – certainly not as real as their own children. It's even more true for the people that billionaires experience as statistical artifacts, such as Jeff Bezos's vast army of drivers and warehouse workers, with their sky-high on-the-job injury rates and the everyday indignity of their piss-bottles. It gets worse for social media bosses like Mark Zuckerberg, for whom AI's principal appeal is the prospect of ending socializing on social media, swapping your mulish friends for pliable chatbots who will organize their interactions with you to maximize your platform usage and thus the number of ads you see:
https://pluralistic.net/2026/01/19/billionaire-solipsism/#sirius-cybernetics
I think billionaire solipsism can account for much of the malinvestment in this obvious bubble, but I don't think it's the whole story. Rather, I think there's a whole cohort of investors who don't believe in AI, but believe that other people will believe in AI.
This is a well-established investment principle. As Keynes wrote, the point of investing isn't necessarily to pick the most beautiful contestant to win the beauty contest – it's to pick the contestant that the other judges will hand the crown to:
https://en.wikipedia.org/wiki/Keynesian_beauty_contest
In other words, you don't get rich from stock speculation by identifying the businesses whose profitability will grow the most – you get rich by identifying the businesses that other investors will pile into, pushing the price up. All you need to do is sell your shares after the price spike, but before anyone else figures out that the business is a turkey. It's like that old joke: "I don't need to run faster than the bear (market), I just have to run faster than you."
From the perspective of a cynical AI investor, the question isn't, "Can AI do your job?" The question is, "Can an AI salesman convince your boss that an AI can do your job?" So long as enough bosses are convinced to fire workers and replace them with AI, AI valuation will continue to climb, and if they time the market right, they can get out before those valuations crash. This proposition gets even sweeter if the CEO of the AI company is in bed with financial regulators and stock exchanges, and can force your financial advisor to buy his worthless AI stock with "little people's" retirement savings:
https://fortune.com/2026/06/13/spacex-stock-index-funds-passive-investing-401k-nasdaq-100-russell/
A bet that bosses will fire workers and replace them with AI is a good wager. Bosses are absolute suckers for this scam. Bosses hate the fact that they can't translate their plans into action without first having a series of ego-shattering confrontations with workers who actually know how to do things, who insist that those plans are illegal, stupid, impossible or will kill people:
https://pluralistic.net/2026/03/12/normal-technology/#bubble-exceptionalism
For these bosses, AI is the chance to wire the toy steering wheel they play with all day directly into the corporate drive-train. With enough AI slaves, the boss can run the company all on their own:
https://pluralistic.net/2026/07/10/posthuman-as-in-no-humans/#hell-is-other-people
In other words, you don't need to be a solipsist to bet on AI. It is sufficient to believe that bosses are solipsists, who can be relied upon to empty the corporate coffers in exchange for worker-replacing magic beans.
This is true in many scam sectors. I'm sure that most of the people who finance the supplements that Andrew Tate and Joe Rogan hawk understand that they're just a way to give yourself very expensive piss. They don't have to believe supplements work to believe that there is an army of desperate and credulous young men who will give anything for the promise they dangle.
Likewise, you don't have to believe that Gwyneth Paltrow can help women "regulate their periods" and "correct their hormonal imbalances" by selling them rocks to stuff in their vaginas. You just have to believe that between patriarchy-induced body shame and patriarchy-driven medical neglect, there's an army of desperate women out there who will buy those rocks and risk their lives by sticking them inside their bodies:
AI is even worse than vagina-rocks, of course. When the bubble bursts, when the seven AI companies that make up 35% of the S&P 500 tank, when a third of the US stock market is vaporized overnight, our governments will reflexively turn to austerity, the go-to response to every financial crisis. Austerity is fascism's best recruiting tool:
https://pluralistic.net/2026/04/12/always-great/#our-nhs
When the AI bubble bursts, the defective chatbots that replaced skilled workers will disappear with it, leaving us scrambling to get that work done after the workers who understood it have retrained, retired, or exited the workforce. AI is the asbestos we're shoveling into the walls of our civilization and our descendants will be digging it out for generations:
https://pluralistic.net/2026/04/08/process-knowledge-vs-bosses/#wash-dishes-cut-wood
Long after the AI bubble bursts, we'll be dealing with its catastrophic carbon emissions. The Second Law of Thermodynamics isn't up for debate. Once we sink enough therms into the sea, we are losing the ice-caps.
AI is an ordinary technology, but the AI bubble is extraordinary: extraordinarily toxic and extraordinarily dangerous. The source of that danger is financiers, and they are motivated by a mix of solipsism and a belief in other people's solipsism. For them, the most exciting investment hypothesis is that "hell is other people":
https://locusmag.com/feature/commentary-cory-doctorow-hell-is-other-people/
(Image: Cryteria, CC BY 3.0, modified)

Trump BBC Defamation Lawsuit Backfires Big-Time—With Subpoenas Coming https://newrepublic.com/post/213372/trump-bbc-defamation-lawsuit-backfires-subpoenas-financial-info
Google burning through cash with spiralling AI costs https://www.bbc.co.uk/news/articles/c235n47g8g8o
A laid-off journalist started his own news site. Facebook AI decided he was fake https://eu.indystar.com/story/news/local/2026/07/21/a-blow-to-local-news-facebook-ai-calls-real-indiana-journalist-fake/90983530007/
Washington Still Ignores Airline Monopolies https://economicpopulist.substack.com/p/washington-still-ignores-airline
#25yrsago Stolen, infected computer transmits its location by virus spamming owner's address book https://slashdot.org/story/01/07/25/1510213/tracking-a-thief-via-the-sircam-virusa
#15yrsago Çurface: an industrial surface made from compressed coffee and melted coffee cup https://memex.craphound.com/2011/07/25/curface-an-industrial-surface-made-from-compressed-coffee-and-melted-coffee-cups/
#15yrsago Samsung Galaxy Tab 10.1: Android iPad-killer is a poorly thought-through disappointment https://www.theguardian.com/technology/2011/jul/25/why-samsung-galaxy-tab-is-meh
#15yrsago Strange tunnels of Austro-Germany https://web.archive.org/web/20120621155245/https://www.spiegel.de/international/zeitgeist/hideouts-or-sacred-spaces-experts-baffled-by-mysterious-underground-chambers-a-775348.html
#15yrsago BitCoin alternative: distributed, but not decentralized cash https://www.links.org/files/distributed-currency.pdf
#10yrsago Bruce Schneier on the coming IoT security dumpster-fire https://web.archive.org/web/20160725221959/https://motherboard.vice.com/read/the-internet-of-things-will-cause-the-first-ever-large-scale-internet-disaster
#10yrsago Our public health data is being ingested into Silicon Valley’s gaping, proprietary maw https://web.archive.org/web/20170917070322/http://www.nature.com/news/stop-the-privatization-of-health-data-1.20268
#5yrsago Amusement parks, crowd control and load-balancing https://pluralistic.net/2021/07/25/now-youve-got-two-problems-part-iii/

Sydney: The Festival of Dangerous Ideas, Aug 23-24
https://festivalofdangerousideas.com/program/
Melbourne: Enshittification at the Wheeler Centre, Aug 25
https://www.wheelercentre.com/events-tickets/season-2026/cory-doctorow-enshittification
Brighton: The Reverse Centaur's Guide to Life After AI with
Carole Cadwalladr (Brighton Dome), Sep 8
https://brightondome.org/whats-on/LSC-cory-doctorow-the-reverse-centaurs-guide-to-life-after-ai/
London: The Reverse Centaur's Guide to Life After AI with Riley
Quinn (Foyle's Picadilly), Sep 9
https://www.foyles.co.uk/events/enshittification-cory-doctorow-riley-quinn
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
Waarom jij straks het hulpje van AI bent (VPRO)
https://www.youtube.com/watch?v=tOnvR2fs8CA
Talk Tech Bock (Vera Linß)
https://www.youtube.com/watch?v=3PFjGvQoBgc
How To Think About AI Before It’s Too Late (This Is
Hell)
https://thisishell.com/episodes/1919
AI Won't Replace You… But This Might (Deep Focus)
https://www.youtube.com/watch?v=oorWq_m48AQ
"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.

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
First take/next take/last take [Seth's Blog]
Nailing it in the first take is a sign of preparation and professionalism. No need for two tries if you are clear about what you’re doing and how.
The next take is where hope lies. This one was pretty good, but next time, we’ll bring it.
And the last take is good enough. That’s why there are no more takes after that.
Russell Coker: Systemd Linger [Planet Debian]
One of the features of systemd that is most controversial is the option to kill user processes when the user logs out. That initially killed screen/tmux/nohup processes too. In recent Debian releases the default configuration of systemd-logind (the login manager for systemd) is to allow processes to keep running, the configuration file /etc/systemd/logind.conf has an option KillUserProcesses that can be enabled to have user processes killed. If you do that then there are options to only kill processes for certain users and to exclude some users (default to excluding root). If using that option you can apparently use a systemd unit to start screen which prevents it being killed on logout.
This is a very handy feature for some particular user cases. One situation was that I was supporting some people who weren’t very good at computers on a system running KDE and some KDE processes would linger. So the option of logout and login again to deal with an issue of akonadi or some other KDE service misbehaving didn’t work. On that system I enabled the option to kill user processes which reduced the number of problems they had while not requiring rebooting.
It is widely believed that the “linger” feature is required to allow screen/tmux/nohup to work, in Debian (and probably most distributions) that is not the case. It might be that some combinations of configuration requires “linger” to allow screen/tmux to work but I am not interested in trying to discover them. Of all the people I have directly supported for Linux desktop use (which numbers in the hundreds) none of them have had the ability to use screen/tmux and also the cluelessnes that makes me want to automatically kill their processes when the logout.
You can enable and disable “linger” for your own account with the following commands if polkit is installed and in a typical configuration:
loginctl enable-linger loginctl disable-linger
If running as root you can enable and disable it for another user with the following commands:
loginctl enable-linger $ACCOUNT loginctl disable-linger $ACCOUNT
There doesn’t seem to be any documented way of discovering if an account has linger enabled or for listing accounts that have it, it seems that “ls /var/lib/systemd/linger” is the only option.
On a Debian system with close to default settings the processes won’t be killed on logout and the only difference “linger” makes is to start programs in the user’s context BEFORE they login. A friend was recently testing out a bunch of LLM programs on one of my servers and the account he used for that ended up with “linger” enabled, presumably one of the install scripts he ran was written on the assumption that enabling linger was necessary for nohup to work and it did so automatically without being asked.
One benefit I’ve found from this behaviour is on my laptop. I’m currently testing out new SE Linux policy on my laptop and rebooting it a lot. When I enabled linger on my account it caused the laptop to connect to wifi on boot without needing to login which is convenient. I can then ssh to it even when the X11/Wayland login configuration is broken.
I will leave it enabled after finishing these tests. Having background processes like Pipewire and Bluetooth start before I login will presumably make things slightly faster when I do login.
The Leto Protocol [Penny Arcade]
New Comic: The Leto Protocol
Making an agile version of a Windows Runtime delegate in C++/WinRT, part 4 [The Old New Thing]
Last time, we wrote a wrapper delegate that checked whether the context it was being invoked from matched the context it was captured from.
if (d.try_as<::INoMarshal>()) {
return [d = std::forward<Delegate>(d),
context = winrt::capture<IContextCallback>(CoGetObjectContext)](auto&&...args) {
if (context == winrt::capture<IContextCallback>(CoGetObjectContext)) {
d(std::forward<decltype(args)>(args)...);
} else {
throw winrt::hresult_error(CO_E_NOT_SUPPORTED);
}
};
}
We did this by comparing context objects.
This obtains the current object context in order to compare it
with the original one, and that means an internal
AddRef, and then we have to explicitly
Release it.
But there’s a way to do this without having to obtain any objects.
The CoGetContextToken function
gives you an integer that uniquely identifies a live context
object. You can then compare integers instead of having to compare
COM objects.
Note that the context must be live. Once you allow the context
to destruct, the value might be reused. (You’re already used
to this. Process and thread IDs work the same way: They remain
unique as long as they are running or you still have a reference to
them by a HANDLE.)
Since we are keeping the context alive by the
IContextCallback returned by
CoGetObjectContext, we can pair that
with a context token to make for faster checks in the future.
ULONG_PTR get_context_token() { ULONG_PTR token; winrt::check_hresult(CoGetContextToken(&token)); return token; } if (d.try_as<::INoMarshal>()) { return [d = std::forward<Delegate>(d), context = winrt::capture<IContextCallback>(CoGetObjectContext), token = get_context_token()](auto&&...args) { if (token == get_context_token()) { d(std::forward<decltype(args)>(args)...); } else { throw winrt::hresult_error(CO_E_NOT_SUPPORTED); } }; }
Are we done?
Of course not!
There’s a flaw in the above code. More next time.
The post Making an agile version of a Windows Runtime delegate in C++/WinRT, part 4 appeared first on The Old New Thing.
Russell Coker: Thinkpad X1 Carbon Gen6 Again [Planet Debian]
In 2018 I reviewed a Thinkpad X1 Carbon Gen6 that was assigned to me for work [1].
In April last year I wrote about the failings of my Thinkpad Yoga Gen 3 and how I was going back to the Thinkpad X1 Carbon Gen5 [2]. The Gen5 in question has 8G of RAM and a 1920*1080 display compared to 16G and 2560*1440 for the Yoga but runs reliably on battery without crashing. The Yoga in question has been used by relatives who don’t need to do much when on battery and is currently being used by a relative who runs Windows so the occasional crash is something they are used to.
In mid last year I bought a Thinkpad X1 Carbon Gen6 for $350 which has 16G of RAM and a 2560*1440 display. The higher resolution display is a significant benefit and while 8G of RAM is still usable for medium to heavy Linux desktop use it does cause problems sometimes. The new laptop I now have is significantly better than the one I had for work in 2018!
I realised that my previous review of that laptop was incorrect in one aspect, there are two USB-C ports it’s just that one may be covered by a rubber stopper when you get it. When I received this one the Ethernet dongle port was covered by a rubber stopper and the seller was unaware of the possibility of using a dongle and didn’t have such a dongle. It’s not a big deal as I have a collection of USB Ethernet devices but would still be handy to have while not worth the $20 it costs to buy one (a 2.5Gbit USB Ethernet device cost me $16 two years ago).
Today I saw a Thinkpad X1 Carbon Gen9 with 3840*2400 display and 16G of RAM for $550 on Facebook marketplace, which is a very tempting deal. 3840*2400 is 2.5* as many pixels as 2560*1440 while 2560*1440 is only 77% more pixels than 1920*1080. So if my eyes were able to properly distinguish pixels that that high DPI then the benefits of getting the 3840*2400 laptop would be greater than going to what I currently have from FullHD. But as a 1440p display in a 14″ form factor is already past the stage where I can see individual pixels the benefits of 4K are more about making curves more rounded which improves readability and allows slightly smaller font sizes but doesn’t give anything like the benefits that going from a FullHD desktop monitor to a 4K desktop monitor.
Also I have different usage patterns for my laptop than for my desktop. I use my laptop for reading blog posts and ebooks for which even FullHD would be fine as the amount of text that can be usefully displayed on screen isn’t that great. I also use my laptop for emergency sysadmin work, ssh to a server to restart a daemon, run ping while changing network hardware, and other things where I don’t have a lot of text on screen.
I also use my laptop for light coding tasks while watching TV. It’s not possible to effectively do complex debugging tasks while watching TV or while using a small screen. But a very large portion of coding time is spent dealing with things like testing builds with different versions of libraries, applying patches to a new upstream release of software, fixing issues related to functions being renamed, testing to see if a new version has really fixed a bug it’s supposed to fix, and other things that don’t require a lot of skill.
I am not claiming that 4K displays aren’t great for laptops. Merely that at the current time it’s not worth $550 of my money.
I like the Thinkpad X1 Carbon line and plan to continue buying them as they get cheap.
The Gen11 is the first one to have a minimum of 16G of RAM, the reason this is important to me is that the ones I buy aren’t the lowest model because I want more than the minimum display resolution. As people who get above the minimum spec in one area tend to get above the minimum in others that means that there will be plenty of Gen11s on the market with 32G of RAM when I’m ready to buy one of that era. Presumably by that time Linux software will have become more bloated and make me want more RAM. Yes soldered RAM has some downsides, but if you want an ultra-light laptop it’s a trade-off you need to deal with. One problem with the Gen11 is that the maximum display resolution is 2880*1800, it’s still a reasonable improvement over what I’ve currently got but not close to the 4K I desire.
The Gen12 has support for 8K display at 60Hz over Thunderbolt which is nice. By the time the Gen12 is in my price range it’s quite likely that I will have a monitor with higher than 5120*2160 resolution (the maximum video out resolution of Gen11 and previous models in the Thinkpad X1 Carbon range) on my desk.
The Gen13 still has 2880*1800 as the maximum resolution but has OLED as an option.
So it looks like a Gen9 or Gen10 may be ideal for me as they are the last ones in the Thinkpad X1 Carbon series to support 4K displays. Another option is the Thinkpad Yoga Gen8 which is of the same era as the Thinkpad X1 Carbon Gen11 but has a 3840*2400 OLED touch screen, I might be able to get one of those cheap with the touch screen damaged.
Girl Genius for Friday, July 24, 2026 [Girl Genius]
The Girl Genius comic for Friday, July 24, 2026 has been posted.
Breaking Up, p06 [Ctrl+Alt+Del Comic]
The post Breaking Up, p06 appeared first on Ctrl+Alt+Del Comic.
Urgent: Reject increases in Pentagon spending [Richard Stallman's Political Notes]
US citizens: call on Tell Congress: Reject Republican plans for massive increases in Pentagon spending at the expense of human needs.
I called for paying for any increases in military spending by increasing taxes on the rich.
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: Imposed requirements that would kick people off Medicaid [Richard Stallman's Political Notes]
US citizens: call on Medicaid not to impose requirements that would kick lots of people off.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: Make plug-in solar accessible [Richard Stallman's Political Notes]
US citizens: call on your governor and state legislators to make plug-in solar accessible for everyone.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Corrupter's demands of his henchmen [Richard Stallman's Political Notes]
The corrupter demands that his henchmen be ready to lie to serve him.
| Feed | RSS | Last fetched | Next fetched after |
|---|---|---|---|
| @ASmartBear | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| a bag of four grapes | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Ansible | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| Bad Science | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Black Doggerel | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| Blog - Official site of Stephen Fry | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Charlie Brooker | The Guardian | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Charlie's Diary | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| Chasing the Sunset - Comics Only | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Coding Horror | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| Comics Archive - Spinnyverse | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| Cory Doctorow's craphound.com | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Cory Doctorow, Author at Boing Boing | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| Ctrl+Alt+Del Comic | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| Cyberunions | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| David Mitchell | The Guardian | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| Deeplinks | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| Diesel Sweeties webcomic by rstevens | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| Dilbert | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Dork Tower | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Economics from the Top Down | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| Edmund Finney's Quest to Find the Meaning of Life | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| EFF Action Center | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| Enspiral Tales - Medium | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| Events | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| Falkvinge on Liberty | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| Flipside | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Flipside | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| Free software jobs | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| Full Frontal Nerdity by Aaron Williams | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| General Protection Fault: Comic Updates | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| George Monbiot | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| Girl Genius | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| Groklaw | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| Grrl Power | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Hackney Anarchist Group | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Hackney Solidarity Network | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| http://blog.llvm.org/feeds/posts/default | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| http://eng.anarchoblogs.org/feed/atom/ | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| http://feed43.com/3874015735218037.xml | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| http://flatearthnews.net/flatearthnews.net/blogfeed | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| http://fulltextrssfeed.com/ | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| http://london.indymedia.org/articles.rss | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&_render=rss | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| http://planet.gridpp.ac.uk/atom.xml | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| http://shirky.com/weblog/feed/atom/ | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| http://thecommune.co.uk/feed/ | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| http://theness.com/roguesgallery/feed/ | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| http://www.airshipentertainment.com/buck/buckcomic/buck.rss | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| http://www.airshipentertainment.com/growf/growfcomic/growf.rss | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| http://www.airshipentertainment.com/myth/mythcomic/myth.rss | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| http://www.baen.com/baenebooks | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| 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 | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| http://www.godhatesastronauts.com/feed/ | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| http://www.tinycat.co.uk/feed/ | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| https://anarchism.pageabode.com/blogs/anarcho/feed/ | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| https://broodhollow.krisstraub.comfeed/ | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| https://debian-administration.org/atom.xml | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| https://elitetheatre.org/ | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| https://feeds.feedburner.com/Starslip | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| https://feeds2.feedburner.com/GeekEtiquette?format=xml | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| https://hackbloc.org/rss.xml | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| https://kajafoglio.livejournal.com/data/atom/ | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| https://philfoglio.livejournal.com/data/atom/ | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| https://pixietrixcomix.com/eerie-cutiescomic.rss | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| https://pixietrixcomix.com/menage-a-3/comic.rss | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| https://propertyistheft.wordpress.com/feed/ | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| https://requiem.seraph-inn.com/updates.rss | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| https://studiofoglio.livejournal.com/data/atom/ | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| https://thecommandline.net/feed/ | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| https://torrentfreak.com/subscriptions/ | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| https://web.randi.org/?format=feed&type=rss | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| https://www.dcscience.net/feed/medium.co | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| https://www.DropCatch.com/domain/steampunkmagazine.com | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| https://www.DropCatch.com/domain/ubuntuweblogs.org | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| https://www.DropCatch.com/redirect/?domain=DyingAlone.net | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| https://www.freedompress.org.uk:443/news/feed/ | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| https://www.goblinscomic.com/category/comics/feed/ | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| https://www.loomio.com/blog/feed/ | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| https://www.newstatesman.com/feeds/blogs/laurie-penny.rss | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| https://www.patreon.com/graveyardgreg/posts/comic.rss | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| 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:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| https://x.com/statuses/user_timeline/22724360.rss | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| Humble Bundle Blog | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| I, Cringely | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| Irregular Webcomic! | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| Joel on Software | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| Judith Proctor's Journal | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| Krebs on Security | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| Lambda the Ultimate - Programming Languages Weblog | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| Looking For Group | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| LWN.net | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| Mimi and Eunice | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| Neil Gaiman's Journal | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| Nina Paley | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| O Abnormal – Scifi/Fantasy Artist | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| Oglaf! -- Comics. Often dirty. | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| Oh Joy Sex Toy | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| Order of the Stick | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| Original Fiction Archives - Reactor | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| OSnews | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| Paul Graham: Unofficial RSS Feed | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| Penny Arcade | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Penny Red | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| PHD Comics | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Phil's blog | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| Planet Debian | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| Planet GNU | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| Planet Lisp | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Pluralistic: Daily links from Cory Doctorow | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| PS238 by Aaron Williams | XML | 20:35, Wednesday, 29 July | 21:23, Wednesday, 29 July |
| QC RSS v2 | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| Radar | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| RevK®'s ramblings | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| Richard Stallman's Political Notes | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Scenes From A Multiverse | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| Schneier on Security | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| SCHNEWS.ORG.UK | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| Scripting News | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Seth's Blog | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| Skin Horse | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Tales From the Riverbank | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| The Adventures of Dr. McNinja | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| The Bumpycat sat on the mat | XML | 21:14, Wednesday, 29 July | 21:54, Wednesday, 29 July |
| The Daily WTF | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| The Monochrome Mob | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| The Non-Adventures of Wonderella | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| The Old New Thing | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| The Open Source Grid Engine Blog | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| The Stranger | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| towerhamletsalarm | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| Twokinds | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| UK Indymedia Features | XML | 21:14, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Uploads from ne11y | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| Uploads from piasladic | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |
| Use Sword on Monster | XML | 20:28, Wednesday, 29 July | 21:15, Wednesday, 29 July |
| Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily | XML | 20:42, Wednesday, 29 July | 21:28, Wednesday, 29 July |
| what if? | XML | 20:35, Wednesday, 29 July | 21:16, Wednesday, 29 July |
| Whatever | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| Whitechapel Anarchist Group | XML | 21:07, Wednesday, 29 July | 21:56, Wednesday, 29 July |
| WIL WHEATON dot NET | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| wish | XML | 20:49, Wednesday, 29 July | 21:34, Wednesday, 29 July |
| Writing the Bright Fantastic | XML | 20:49, Wednesday, 29 July | 21:33, Wednesday, 29 July |
| xkcd.com | XML | 21:07, Wednesday, 29 July | 21:50, Wednesday, 29 July |