New GNU Taler integration in be-BOP [Planet GNU]
A new GNU Taler integration is now officially available: be-BOP.
It's An Older Code, But it Checks Out [Penny Arcade]
Forza Horizon 6 is doing numbers on Steam, and I'm glad - I think this series is the torchbearer for A Fun Racer That Is Just Technical Enough To Offer An Intriguing Skill Ceiling. That's a new subgenre I just made up. But apparently the game is fun, and works on computers - a powerful combo that's delivered real results in Q2. The only issue Morak has identified to me are the faces, which… well, I'll show you. They aren't faces in the classic sense, they're more like a fongoid "fruiting body":

Printing with CUPS on OpenBSD [OSnews]
Printing on Linux, macOS, and even on Windows seems to be pretty much a solved problem, but what about printing on OpenBSD?
Anyway, to do so I would need to set up my HP OfficeJet printer, connected wirelessly to the network, on OpenBSD. I chose to do this using HPLIP and CUPS as they are both in ports, I am familiar with how they work, and my printer is old enough that its PPD (driver) file is included in the slightly older version of HPLIP that is ported to OpenBSD. However, after installing both packages, starting the relevant services via rcctl including Avahi, and launching CUPS and finding the printer, I could not get it to install properly. Either it would error out at the end saying the printer couldn’t be added and advise me to check the CUPS error log, or it would seemingly successfully add the printer but I couldn’t print anything and couldn’t adjust the printer settings.
↫ Morgan at his blog
Only very tangentially related, but my personal crowning achievement in computing is somehow making it possible for my PA-RISC c8000 workstation running HP-UX 11i v1 to print to my modern all-in-one HP printer thing, some random HP consumer junker we bought on a whim because it was a returned item and cheap. It took some messing around, but ever since I’ve been able to just print stuff right from any application on HP-UX over the network, wirelessly. Note that the c8000 and HP-UX 11i v1 are almost two decades out of date compared to the printer, but by trying out promising device files included in HP-UX I managed to get it all to work.
I never need it, but I am fairly sure I’m one of the very few people in the world who can reliably print from an HP-UX 11i v1 workstation to a modern throwaway HP junker over Wi-Fi. Put that on my tombstone.
OSNews fundrasier progress [OSnews]
⁂ A little progress bar to keep track of our fundraiser! ⁂
➡️ Donate through
Ko-Fi ➡️ Donate through SEPA transfer
➡️
Why a fundraiser?
Note that I have to update it manually, and that it includes
both Ko-Fi donations, as well as direct bank transfers. Yes, if
your country is part of SEPA
(EU, more or less), you can now do a safe direct bank transfer
using IBAN to a dedicated bank account. This avoids any third
parties. Use your bank’s application or website (Name: Thom Holwerda –
IBAN: SE08 8000
0820 1684 4657 8414 – BIC: SWEDSESS).
The Big Idea: Caitlin Rozakis [Whatever]

Excel spreadsheets, water-cooler talk, and demons are all things you’ll find in the corporate setting of author Caitlin Rozakis’s newest novel, Startup Hell. Log on to her Big Idea as she begs the question: who is more of a monster, a demon, or a CEO?
CAITLIN ROZAKIS:
I’m not saying that startups, or tech companies, or tech startups in particular, are evil.
Well, not all of them.
I’ve spent more than fifteen years working in startups and tech, and in that time, I’ve gotten to work with some awesome people and on some cool products. I do believe that technology still has enormous potential to make our lives easier, safer, more fun.
But I know I’m not alone in feeling increasingly cynical about the tech industry these days. The “move fast and break things” approach to infrastructure and people’s lives that should never have been broken. The disruption of industries so we can replace things that used to work well with subscription models of things that don’t quite work as well. The enshittification. I’ve seen companies who have a product that is working great and is depended on by customers be told by investors that their current business model doesn’t have a big enough revenue multiplier.
And then I’ve watched them pivot, and pivot again, trying to appeal to a wider audience while betraying the initial customers who relied on them, all in search of that billion-dollar valuation. It’s not enough to do a thing well and make a steady profit. If the revenue numbers don’t go up by an exponential quarter after quarter forever, it’s a failure. Never mind that Earth and its resources and its population are finite.
There’s plenty to write about there. But none of it’s fun.
One of the things I’ve noticed is how often fantasy terminology comes up around tech. A side effect of the victory of the geeks, I suppose. Every company has a story about how their app is going to change the world. (I should know; as a tech marketer, I’ve had to come up with ways to describe the deep storytelling roots and potential to bring a golden age of knowledge that’s created by, say, targeted TV advertising tech. My apologies. The rent was due.) But it’s more than the savior complex by an app that promises to revolutionize your approach to air freshener plugins. We talk about angel investors. Vampire capitalists. Unicorn startups. And the usual jokes about selling your soul and deals with the Devil.
That, I can work with.
Startup Hell started with an image. A junior employee at a crappy Manhattan tech startup stays late trying to make her quota. She walks into her boss’s office and finds him face-down on his desk, dead. And the demon he summoned to make his own quarterly target is still there, trapped in the circle.
She’s a junior salesperson. He’s a junior salesdemon. They both have impossible KPIs (that’s key performance indicators, for those of you lucky enough to live free of corporate jargon). They both have terrible, ruthless bosses. Are their situations really all that different?
Writing both offices (human and Infernal) was enormous fun. Well, fun for me, not so much fun for Morgan and Lucareoth. Along the way, they end up having to survive company-sponsored goat yoga, a bloodthirsty corporate shuffleboard tournament, a siege warfare lunch-and-learn, an angel-infested tech conference, and a lot of dubious free snacks. (I’ll let you guess which office has which.)
Along the way, the supporting cast filled itself out. Morgan, who is depressingly mundane, acquired a kickass demon-slaying mother whose black leather outfits and back tattoo would be at home on the cover of any paranormal romance. Poor Morgan grew up aware of the hidden magical world, but her magical dyslexia leaves her a major disappointment to her parents and lacking an obvious career path. Lucareoth, on the other hand, has Rix, a not terribly bright hellhound whose drool can eat through flooring. Rix is the very bestest boy, by the way. He has no particular talents, he’s just happy to be participating. Good thing it’s a dog-friendly office.
So now Morgan has an inconveniently cute demon sleeping on her couch and masquerading as the latest sales intern. And she owes the Infernal Plane one human soul (it doesn’t have to be hers). While her demon-hunting mom sniffs around for rumors of startups making Infernal pacts. Morgan and Luke need to make some choices—in today’s capitalist hellscape, do you even have a choice about selling your soul? And who is worse—the literal forces of hell or a tech bro CEO?
(Let’s be honest, we’re all picking the same answer.)
Startup Hell: Amazon|Barnes & Noble
In Retrospect I Suppose This Demise Was Inevitable [Whatever]

“He died at the hand of the Coca-Cola Company” has a fitting ring to it, doesn’t it.
(Spoiler: I survived. Bearly.)
— JS
Saying Bluesky is part of the web is like saying Spotify or YouTube own podcasting. They say it, but that doesn't mean it's true.
I've been following Jake's work privately, but now he's blogging about it publicly. I totally look forward to running Frontier on today's hardware. I especially want to run Manila on one of my home computers, and use it for Linux server apps. I've forgotten so much about how Manila works, but I expect it'll all come back. We had a great team back in the Manila days -- we all used the product, and it was and will be again one of the most powerful and pragmatic programming environments ever.
Michael Prokop: The mysterious XF86AudioPlay issue [Planet Debian]

I was getting “<XF86AudioPlay> is undefined” in the status bar of Emacs displayed every 2-3 seconds. Nowhere else I noticed any misbehavior or problems, and also couldn’t find any related log entries. It didn’t stop, though didn’t want to reboot my system to see whether that would fix the problem, but it was driving me nuts.
Now, as a starting point I adjusted my sway configuration, to react to the XF86AudioPlay key press event:
bindsym XF86AudioPlay exec playerctl play-pause
After reloading sway, my music player started to play for 2-3 seconds, stopped playing, started again, etc. It wasn’t a Emacs bug, but something indeed seemed to send the XF86AudioPlay key event every 2-3 seconds. It wasn’t my USB keyboard or any stuck key on it, as verified also by unplugging it. So which device was causing this?
libinput from libinput-tools to the rescue:
% sudo libinput debug-events [...] -event12 KEYBOARD_KEY +0.000s KEY_PLAYPAUSE (164) pressed event12 KEYBOARD_KEY +0.000s KEY_PLAYPAUSE (164) released event12 KEYBOARD_KEY +2.887s KEY_PLAYPAUSE (164) pressed event12 KEYBOARD_KEY +2.887s KEY_PLAYPAUSE (164) released event12 KEYBOARD_KEY +5.773s KEY_PLAYPAUSE (164) pressed event12 KEYBOARD_KEY +5.774s KEY_PLAYPAUSE (164) released [...]
The `event12` device was sending this event, what’s behind this?
% sudo udevadm info /dev/input/event12
P: /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input17/event12
M: event12
R: 12
J: c13:76
U: input
D: c 13:76
N: input/event12
L: 0
S: input/by-path/pci-0000:00:1f.3-platform-skl_hda_dsp_generic-event
E: DEVPATH=/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input17/event12
E: DEVNAME=/dev/input/event12
E: MAJOR=13
E: MINOR=76
E: SUBSYSTEM=input
E: USEC_INITIALIZED=12468722
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_INPUT_SWITCH=1
E: ID_PATH=pci-0000:00:1f.3-platform-skl_hda_dsp_generic
E: ID_PATH_TAG=pci-0000_00_1f_3-platform-skl_hda_dsp_generic
E: XKBMODEL=pc105
E: XKBLAYOUT=us
E: XKBOPTIONS=lv3:ralt_switch,compose:rctrl
E: BACKSPACE=guess
E: LIBINPUT_DEVICE_GROUP=0/0/0:ALSA
E: DEVLINKS=/dev/input/by-path/pci-0000:00:1f.3-platform-skl_hda_dsp_generic-event
E: TAGS=:power-switch:
E: CURRENT_TAGS=:power-switch:
% sudo udevadm info -a /dev/input/event12 | grep -iE 'kernels|drivers|name'
KERNELS=="input17"
DRIVERS==""
ATTRS{name}=="sof-hda-dsp Headphone"
KERNELS=="card0"
DRIVERS==""
KERNELS=="skl_hda_dsp_generic"
DRIVERS=="skl_hda_dsp_generic"
KERNELS=="0000:00:1f.3"
DRIVERS=="sof-audio-pci-intel-tgl"
KERNELS=="pci0000:00"
DRIVERS==""
Behind this event12 is sof-hda-dsp Headphone, and evtest confirms that:
% sudo evtest No device specified, trying to scan all of /dev/input/event* Available devices: /dev/input/event0: AT Translated Set 2 keyboard /dev/input/event1: Sleep Button /dev/input/event10: ThinkPad Extra Buttons /dev/input/event11: sof-hda-dsp Mic /dev/input/event12: sof-hda-dsp Headphone /dev/input/event13: sof-hda-dsp HDMI/DP,pcm=3 /dev/input/event14: sof-hda-dsp HDMI/DP,pcm=4 /dev/input/event15: sof-hda-dsp HDMI/DP,pcm=5 /dev/input/event16: Yubico YubiKey OTP+FIDO+CCID /dev/input/event17: Apple Inc. Magic Keyboard with Numeric Keypad /dev/input/event18: Apple Inc. Magic Keyboard with Numeric Keypad [...] Select the device event number [0-24]: ^C
We can even get further information:
% sudo evtest /dev/input/event12
Input driver version is 1.0.1
Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0
Input device name: "sof-hda-dsp Headphone"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 114 (KEY_VOLUMEDOWN)
Event code 115 (KEY_VOLUMEUP)
Event code 164 (KEY_PLAYPAUSE)
Event code 582 (KEY_VOICECOMMAND)
Event type 5 (EV_SW)
Event code 2 (SW_HEADPHONE_INSERT) state 0
Properties:
Testing ... (interrupt to exit)
Event: time 1779295060.175766, type 5 (EV_SW), code 2 (SW_HEADPHONE_INSERT), value 1
Event: time 1779295060.175766, -------------- SYN_REPORT ------------
Event: time 1779295061.951168, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1779295061.951168, -------------- SYN_REPORT ------------
Event: time 1779295061.951194, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1779295061.951194, -------------- SYN_REPORT ------------
Event: time 1779295064.548671, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1779295064.548671, -------------- SYN_REPORT ------------
Event: time 1779295064.548689, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1779295064.548689, -------------- SYN_REPORT ------------
Event: time 1779295067.437172, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1779295067.437172, -------------- SYN_REPORT ------------
Event: time 1779295067.437187, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1779295067.437187, -------------- SYN_REPORT ------------
Event: time 1779295070.323775, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1779295070.323775, -------------- SYN_REPORT ------------
Event: time 1779295070.323790, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1779295070.323790, -------------- SYN_REPORT ------------
Event: time 1779295073.200350, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1779295073.200350, -------------- SYN_REPORT ------------
Event: time 1779295073.200373, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1779295073.200373, -------------- SYN_REPORT ------------
Event: time 1779295076.076228, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1779295076.076228, -------------- SYN_REPORT ------------
Event: time 1779295076.076250, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1779295076.076250, -------------- SYN_REPORT ------------
Event: time 1779295078.961740, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1779295078.961740, -------------- SYN_REPORT ------------
Event: time 1779295078.961754, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1779295078.961754, -------------- SYN_REPORT ------------
Event: time 1779295081.850156, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1779295081.850156, -------------- SYN_REPORT ------------
Event: time 1779295081.850175, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1779295081.850175, -------------- SYN_REPORT ------------
Event: time 1779295083.306612, type 5 (EV_SW), code 2 (SW_HEADPHONE_INSERT), value 0
Event: time 1779295083.306612, -------------- SYN_REPORT ------------
So when I plug in my headphone (see the `SW_HEADPHONE_INSERT`
event), the unexpected behavior starts, unplugging stops the
problem.
Good! But what was totally unexpected for me: my headphone, being a
Beyerdynamic DT-990 Pro, does not have any keys.
8-)
As it turned out, the headphone jack seemed to have been not entirely clean. The analog side of the jack triggers a behavior within the audio codec, where it seems to interpret the fluctuating impedance as a play button of the headset, being pressed, again and again.
I cleaned the jack of my headphone and my XF86AudioPlay problem is gone, case closed.
🔒 A Win for Encrypted Messaging | EFFector 38.10 [Deeplinks]
When it comes to keeping our texts, chats, and other digital messages safe from prying eyes, we have a powerful tool: end-to-end encryption. Used correctly, end-to-end encryption turns our conversations online into secret messages that can only be decoded by their intended recipients. In our latest EFFector newsletter, we're covering new developments in this tool, and how you can use it to prevent tech companies, governments, and other eavesdroppers from listening in.
For over 35 years, EFFector has been your guide to
understanding the intersection of technology, civil liberties, and
the law. This latest issue covers the
shaky science backing
social media bans, Canada's surveillance
nightmare bill, and a victory for
keeping private messages private.
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 on an important step forward for encrypted messaging—as well as a notable disappointment. You can find the episode and subscribe on your podcast platform of choice:
Want to protect your private conversations? 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!
On AI Security [Schneier on Security]
Good report:
Executive Summary: Let’s say you wanted to make sure that your AI is secure. Can you just maximize the security and privacy benchmark and call it a day? Nope, because benchmarks don’t actually work for measuring AI capabilities (even when they are NOT emergent systemic properties like security). So let’s take a step back: how do you measure security in the first place? Good question. Over the last 30 years, security engineering for software evolved from black box penetration testing, through whitebox code analysis and architectural risk analysis to de facto process-driven standards like the Building Security In Maturity Model (BSIMM). Software had a very deep impact on business operations, and it appears that AI is going to have an even deeper impact. Will a software security-like measurement move work for AI? Probably. In the meantime we can make real progress in AI security by cleaning up our WHAT piles and managing risk by identifying and applying good assurance processes. (Spoiler alert: no matter what we do, we still don’t get a security meter for AI, so we need to be extra vigilant about security.)
Claude Code doesn't know about "user perspective," but it learns quickly. The UI of the software we're working on is fenced off, I use it, but I don't read code in there. I don't want to know how it works, I want to use it and getting right. This is an important technique. Later once things are locked down, I don't mind learning more about how it was done.
[$] What is to be done about MGLRU? [LWN.net]
"Reclaim" is the task of finding memory that can be taken away from its current user and put to better uses within the system; it is a core part of the memory-management picture. The addition of the multi-generational LRU (MGLRU) was meant to provide a better reclaim implementation than the "traditional LRU" that preceded it, but MGLRU has complicated the situation instead. No fewer than three memory-management-track sessions at the 2026 Linux Storage, Filesystem, Memory Management, and BPF Summit were focused on MGLRU, with an eye toward integrating it more fully, improving its performance, and addressing some problems encountered with Android systems.
Security updates for Wednesday [LWN.net]
Security updates have been issued by AlmaLinux (kernel, libpng, nginx, nginx:1.24, ruby, and ruby:3.3), Debian (gnutls28 and linux-6.1), Fedora (dnsmasq, kernel, keylime-agent-rust, perl-Net-CIDR-Lite, python-pysam, python-urllib3, rust-cargo-vendor-filterer, rust-ingredients, rust-oo7-cli, rust-rpki, rust-sevctl, and rust-tealdeer), Mageia (bind), Oracle (bind, giflib, gimp:2.8, kernel, libpng, rsync, ruby, and vim), Slackware (haveged and mozilla), SUSE (cockpit, dnsmasq, erlang26, freeipmi, git-bug, glibc, GraphicsMagick, haveged, ImageMagick, iproute2, kernel, openssh, perl-CryptX, perl-HTTP-Tiny, postgresql14, postgresql15, postgresql16, python-Pillow, rsync, tiff, and traefik), and Ubuntu (Highlight.js, linux, linux-aws, linux-aws-5.15, linux-aws-fips, linux-fips, linux-gcp, linux-gcp-fips, linux-gke, linux-gkeop, linux-hwe-5.15, linux-ibm, linux-ibm-5.15, linux-intel-iotg, linux-intel-iotg-5.15, linux-kvm, linux-nvidia, linux-nvidia-tegra, linux-nvidia-tegra-5.15, linux-oracle, linux-raspi, linux-realtime, linux, linux-aws, linux-aws-fips, linux-bluefield, linux-fips, linux-gcp, linux-gcp-5.4, linux-gcp-fips, linux-ibm, linux-ibm-5.4, linux-kvm, linux-oracle, linux-oracle-5.4, linux-xilinx-zynqmp, linux, linux-aws, linux-aws-fips, linux-fips, linux-gcp-4.15, linux-gcp-fips, linux-kvm, linux-oracle, linux, linux-aws, linux-aws-fips, linux-gcp, linux-gcp-fips, linux-gke, linux-gkeop, linux-ibm, linux-ibm-6.8, linux-lowlatency, linux-lowlatency-hwe-6.8, linux-raspi, linux-raspi-realtime, linux-realtime, linux-realtime-6.8, linux, linux-aws, linux-hwe-6.17, linux-oem-6.17, linux-oracle, linux-raspi, linux-realtime, linux-realtime-6.17, and smarty3).
CodeSOD: Find a Bar for This One [The Daily WTF]
A depressing quantity of software is what I would call a "data pump". I have some data over here, and I need it over there. Maybe I'm integrating into a legacy app. Or into an ERP. Or into a 3rd party API. At the end of the day, I have data in one place, and I want it in another place.
Sally has a Java application written in the
Quarkus framework, which has a nightly batch that works to keep a
table of Bar entities in sync with a table of
Foo entities. (This anonymization comes from Sally)
These exist in the same database. There is also a Bar
webservice, which provides information about the Bar
entities. The workflow, such as it is, is that the software needs
to find all of the Foo entities that do not currently
have associated Bar entities, and then call the
Bar webservice to get the required information to
create those Bar entities.
Let's see how that works.
@Inject UserTransaction transaction
// If this is annotated with @Transaction the usage in the Message function down below will have some Thread exception
public List<FooData> getAllFoos() {
try{
return fooDataRepository.findAllFoos();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
We'll worry about that comment in a second, but this function
returns a list of all of the Foo objects in the
database. It does not return a list of all the
Foo objects without associated Bar
entities. It's just the whole giant list of everything. The
underlying database is a standard relational database; it'd be
trivially easy to write that query, even going through the
ORM.
Well, that's bad, but it's all pretty minor. How does the actual update go?
// Can't be annotated with @Transaction because Oracle DB can handle the given Amount of dataEntities in one Transaction '\._./'
Message updateBarsWithFoos() {
List<FooData> foos = getAllFoos();
if(!foos.isEmpty()){
foos.forEach(foo -> {
try{
transaction.begin();
if(barRepository.findByName(foo.getName()) == null){
if(barDataService.searchByName(foo.getName()) != null && barDataService.searchByName(foo.getName()).marker() != null){
barRepository.createBar(barDataService.searchByName(foo.getName()));
}
}
transaction.commit();
} catch (Exception e) {
try {
transaction.rollback();
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
});
}
return new Message(MessageLevel.INFO, "Created bars")
};
Ah, the real WTF is that it's an Oracle database. That's always a WTF.
But let's trace through this code.
We get all of our Foo entities. We check for
emptiness and then do a forEach, which seems to make
the empty check superfluous: a forEach on an empty
list would be a no-op anyway.
We start a transaction, then check the database: if there are no
Bar objects that link to Foo, then we
call into the barDataService to find data. If there
is, we call into the service again, to see if the
marker property is not null. If it is, we call into
the service again to get the actual data we're putting
into the database. Then we close the transaction. If anything goes
wrong, we rollback the transaction and chuck an exception up the
chain.
That is three web service calls inside of a database
transaction. Three calls which could easily be one, and
that call could easily also happen outside of a
transaction if you're mindful about confirming your constraints.
And of course, because they're not mindful at all, they
need to manage the transaction directly, and can't use the
@Transaction annotation provided by their framework,
which would at least cut down on some of the boilerplate.
Now, I'm sure you'll be shocked - shocked - to learn that the webservice is actually a bit flaky, and thus times out from time to time. And this isn't the only batch job running, which means the long-lived transactions cause all sorts of contention and terrible performance across the various batches. And this app doesn't have its connection pool properly configured, so the entire software stack can exhaust all of its database connections surprisingly quickly, causing yet more failures.
The root of the WTF, of course, is doing this as a batch job. A well engineered application would do everything it could to not create data in the database that isn't referentially sound. There, Sally gives us the one bit of good news:
My current project will do away with the batch processing altogether, so we can say, "RIP, transactional wholesale triple caller!"
I couldn't not say anything about
the Knicks win last night in the
opening game of the NBA Eastern Conference finals. The Knicks
were losing, then winning big, then fell apart, and by midway
through the 4th quarter they were down by 22, and the Clevelands
were completely in charge. But then the Knicks came back,
miraculously tied the game so it went into overtime where the
Knicks dominated, and won. Actually it wasn't really a miracle, it
was somewhat predictable. The Knicks were playing on a lot of rest,
and one of the big advantages they have this year over last is a
deep and strong bench and a coach who plays them (last year's coach
didn't). So the Knicks didn't get tired and the Cavs were wiped out
by the 4th quarter. Their shots weren't long or short, aimed, they
had no flow, they weren't getting rebounds, they didn't have good
ball movement. While Brunson was driving the Knicks the Cavs just
weren't there. When things started turning around in the 4th I was
pretty sure the Knicks would win. I had no basis for believing
this, coming back from 22 down so late in the game is pretty
unlikely. In most cities that's when the fans start heading home,
but not in NYC. We stay till the end because sometimes, maybe often
with this years' Knicks, the team you think is going to lose
actually ends up winning.
Daniel Baumann: Debian: Linux Vulnerability Mitigation (pintheft) [Planet Debian]
Following the series of various Linux exploits of the last three weeks, the bug of today is pintheft [no CVE yet] which is local root privilege escalations.
The vulnerability can be mitigated by unloading and blocking rds modules, linux-vulnerability-mitigation as of 20260519-1 (uploaded to sid, trixie-fastforward-backports and people.debian.org/~daniel) does that automatically for you.
Updates:
default Debian kernels (bullseye, bookworm, trixie, and testing/unstable, experimental) are not directly affected because autoloading of the rds modules is disabled by rds-Disable-auto-loading-as-mitigation-against-local.patch.
The following article originally appeared on the Elevate newsletter and is being reposted here with the author’s permission.
Peek under the hood of most “production agents” shipping today and you won’t find intelligence. You’ll find custom plumbing, fragile session logic, shared service accounts, and a security model held together by hope. This can be so much better.
If you’ve spent the last 18 months putting agents into production, you already know the models and tools have gotten dramatically better. You also know the problems that are still burning your on-call rotation are not problems you can prompt your way out of. We are running into a stack ceiling, and it is quietly creating a governance and reliability gap that the next generation of agentic systems cannot grow through.
Right now the industry is living with what I’d call excessive agency: autonomous systems given broad permissions to get things done, then left to discover—at runtime, in production—that a schema drifted, an API changed, or a downstream service started returning PII it wasn’t supposed to. Agents mark tasks “complete” while leaving a trail of corrupted state behind them. The humans find out on Monday.
This is not a failure of the people building agents. It is a failure of the stack they’re building on.
Here are the four architectural bets I think every serious team has to make in the next twelve months.
Every engineer who has shipped agents to production knows this specific flavor of dread: You have agents doing useful work, and effectively zero visibility into which tools they touched, which data they moved, or which credentials they used to do it. I call this governance debt—the silent accumulation of security and audit risk that eventually forces a full rewrite, usually right after the first incident that reaches the CISO.
The root cause is that most agents today are ghosts. They don’t have identities. They borrow a service account, inherit a human’s OAuth token, and “promise”—in application code, in a prompt—to stay inside the lines. In a real enterprise environment, a promise in a prompt is not a policy.
My bet is that agent identity has to move from the application layer down into the platform layer.
The difference is between bolted-on versus embedded security. Bolted-on looks like middleware in front of every tool call, politely asking the agent to behave: easy to bypass, expensive in latency, and invisible to your existing IAM. Embedded looks like a badge reader welded into a steel frame. The agent has a distinct, unforgeable identity recognized at the network and platform level, and policy is enforced at the source. If the agent reaches for a database it isn’t cleared for, the connection never opens. No middleware, no vibes.
Done right, this turns “a fleet of liabilities” into something that looks a lot more like a managed workforce: every action attributable, every permission auditable, every agent revocable with one call.
Context management is a tax every builder is currently paying. Teams are burning a huge share of their engineering hours (and tokens) on undifferentiated plumbing—custom serialization, bespoke session stores, hand-rolled memory layers—just to keep an agent from forgetting its mission halfway through a multi-step task.
Worse, the context agents can get their hands on is usually siloed. A browser-based agent can see the open tab. A desktop wrapper can see the files a user happened to drag in. Neither of them can easily reason across the systems where the business actually lives—the CRM, the ERP, the data warehouse, the ticketing system, the transcripts, the project plans—at the same time.
Agents need universal context that integrates at the platform level. If we don’t fix this, we should be honest that the ceiling of agentic AI is “slightly better spreadsheet autocomplete,” and we should stop writing vision pieces about it.
Here’s the uncomfortable version of this: A lot of what ships today as “an agent” isn’t yet ready to deploy across a business.
I want to be precise, because the frontier has genuinely moved in the last six months. Environments like Claude Code, OpenClaw, and similar platforms are capable—persistent task state, scheduled execution, multi-agent coordination, and long-running sessions that survive disconnects are no longer aspirational. These are not toys. The question has moved on.
The question now is whether an agent can run for a week instead of an hour. Whether it can cross three handoffs, two credential rotations, and an approval gate without a human babysitting the session. Whether the work it did on Tuesday is auditable on Friday by someone who wasn’t in the room. A session that survives a dropped WebSocket is table stakes. A mission that survives a quarter is the bar enterprises actually need.
Real work doesn’t fit in a session, and most of it doesn’t fit in a day either. A procurement workflow spans weeks and a dozen handoffs. A compliance audit runs for a month. An incident investigation outlives three on-call rotations.
Most agents today hit a hard ceiling—sometimes time-based, sometimes token-based, sometimes governance-based—and when they hit it, the mission fails and a human picks up the pieces from wherever the transcript ended.
Enterprise-grade autonomy requires durable, cloud-native execution with a much higher floor than “the session stayed up.” Concretely, that means:
Persistence with guardrails. That’s the bar. Anything less and you’re building demos that happen to run for a long time.
The pattern I see most often in strong teams is the saddest one: brilliant engineers draining their bandwidth into stack problems that do not differentiate their product. Custom memory. Bespoke eval harnesses. Homegrown observability. Handwritten retry logic. A tracing system that almost works. None of this is the hard part of the agentic era, and none of it is what your users are paying you for.
The real value lives in domain reasoning and business logic—the judgment calls that are specific to your company, your customers, your regulatory environment. Everything underneath should be the platform you build on, not the plumbing you build.
This is why the maturation of open primitives matters right now. Open-source orchestration frameworks exist precisely so the scaffolding isn’t locked behind any single vendor’s roadmap. The model that worked for cloud compute, containers, and CI/CD—start local on open primitives, graduate to a managed platform when you’re ready to scale—is the model agent platforms need to copy.
Teams should be able to prototype on their laptop with the same building blocks they’ll run in production, and cross that boundary without a rewrite.
That’s the engineering standard that lets teams stop fighting plumbing and get back to the product.
The teams that pull ahead in the next five years will not pull ahead by being smarter at writing boilerplate. They’ll pull ahead by choosing the right agent foundation and spending their engineering hours on the problems only they can solve.
Every month spent rebuilding the common stack—identity, context, persistence, orchestration—is a month not spent on the logic that actually makes your agents worth deploying.
The agent stack has to become a solved problem. The only real question is whether you want to solve it yourself, again, or build on a foundation that was engineered for agents from the ground up.
My bet is on the latter. I think yours should be too.
Greta Sketch [Comics Archive - Spinnyverse]
The post Greta Sketch appeared first on Spinnyverse.
Docker images by age or size [Planet GNU]
Files by age, newest first:
ls -lt
Docker images by age, newest first:
docker images --format "{{.CreatedAt}}\t{{.Repository}}:{{.Tag}}" | sort -r
Files by size, largest first:
ls -lS
Docker images by size, largest first:
docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -rh
Why why why??!
[$] The tenth OpenPGP email summit [LWN.net]
The OpenPGP Email Summit is an annual meeting for those who work on encrypted email and related topics. The tenth installment of this meeting took place in March 2026 and the minutes have now been published. As usual, a wide range of topics were discussed. Highlights included support for post-quantum cryptography (PQC) with multiple actors planning rollouts within this year, a promising new approach for making email signatures ubiquitous with the plan of making OpenPGP signed email a default, a new draft that brings reliable deletion (or "forward secrecy") features to OpenPGP, as well as a plan for transferring ownership of the OpenPGP.org domain.
The act of Umfunktionierung [Seth's Blog]
Another unique German word. Umfunktionierung. Functional transformation.
Most of us take the tools we’re given and use them as instructed. We follow the manual. We color inside the lines. We accept the functions as defined by those who came before us.
But the ruckus maker asks: What if this tool could do something else?
Umfunktionierung isn’t incremental improvement. It’s about repurposing or reimagining. Taking the apparatus of production and fundamentally changing its function. Brecht coined the term in his work on the theory of theater, and the philosopher Walter Benjamin wrote about it. But it isn’t just for playwrights or Marxist philosophers from the 1930s.
Twitter wasn’t built for social movements, but activists transformed it into a tool that wasn’t planned for. Email wasn’t designed for newsletters, but creators repurposed it and invented a new medium. Smartphones weren’t made for documentary filmmaking, but filmmakers redefined their use.
Functional transformation doesn’t ask us to build something new from scratch. It requires us to look at what already exists and see possibilities others have missed.
This is how industries evolve. Not always through invention, but through transformation.
Sometimes, we make an impact by transforming the function of what already exists.
It's An Older Code, But it Checks Out [Penny Arcade]
New Comic: It's An Older Code, But it Checks Out
Girl Genius for Wednesday, May 20, 2026 [Girl Genius]
The Girl Genius comic for Wednesday, May 20, 2026 has been posted.
What is the history of the ERROR_ARENA_TRASHED error code? [The Old New Thing]
Error code 7 is ERROR_ARENA_TRASHED. What does this
mean? It sounds like a heavy metal band ran amok and made a mess of
the performance area that they rented.
This error message was inherited from MS-DOS. MS-DOS internally kept track of memory in the form of a sequence of variable-sized memory blocks, each prefixed by a 16-byte block known as an arena:
arena STRUC arena_signature DB ? ; 4D for valid item, 5A for last item arena_owner DW ? ; owner of arena item arena_size DW ? ; size in paragraphs of item arena ENDS
The arena_owner is the PDB of the process that
allocated the memory, or zero if the memory is free. Each arena
signature is 0x4D (ASCII capital M), except for the final
one which is 0x5A (ASCII capital Z). Yes, those are the
initials of Mark Zbikowski.
When walking through the memory blocks, say, when searching for
memory to satisfy an allocation request, if MS-DOS saw that the
signature was neither 0x4D nor 0x5A, then it
declared that the arenas were “trashed”
(corrupted)¹ and
returned ERROR_ARENA_TRASHED.
This is an MS-DOS specific error code. It is not used by Win32.²
Since it is a vestigial error code (like EMPTY_THREAD_REAPER_LIST),
it is a handy error code to use when mocking error conditions,
because you can be fairly confident that if you see error 7, it
came from your test harness and not from a genuine system
error.
The fact that the error message is not used casts suspicions on the many web sites that claim to be able to help you “fix” the problem. If you read their explanation of “what this error means”, it’s just a bunch of vague text about how, y’know, sometimes computers aren’t doing all that great and they encounter errors, or maybe there is a hardware conflict, or a corrupted system file. But somehow, despite having no idea what the error means, they still are quite confident in the steps you should take to fix it. (Usually performing a system scan, a system file check, and checking for driver updates.)
¹ The use of the slang term “trashed” is further evidence that Microsoft developers were just a bunch of undisciplined hackers.
² Well, at least, it is not used by the Win32 kernel. I do see that there are a few user-mode components which use it to indicate that internal data structures have been corrupted, which is at least in the same spirit as the original meaning of the error.
The post What is the history of the <CODE>ERROR_<WBR>ARENA_<WBR>TRASHED</CODE> error code? appeared first on The Old New Thing.
The Virtual OS Museum [OSnews]
This is a virtual museum of operating systems (and standalone applications) running under emulation, implemented as a Linux VM for QEMU, VirtualBox, or UTM.
A custom emulator-independent launcher is provided, and all OSes and emulators are pre-installed and pre-configured. The launcher includes a snapshot feature to quickly revert broken installations back to a working state. Hypervisor installers and shortcuts to run the VM on Windows, macOS, and Linux are also included.
↫ Andrew Warkentin’s Virtual OS Museum
These types of preconfigured archives exist in the gaming world, but I’ve never seen something like this for operating systems. The amount of love, work, and care that have gone into this effort must’ve been immense, as it contains more than 1700 installs, more than 520 platforms, and more than 570 distinct operating systems, all wrapped into a single download, with a nice launcher on top to make using all of this as easy as possible. You can either download the full offline version at 121GB zipped, or a version that downloads each image as you fire them up for the first time at 14GB zipped.
The contents span just about everything from early mainframes to desktop operating systems to all kinds of mobile platforms, from the late 1940s to today. I haven’t yet found the time to download the whole thing, but I am absolutely going to, as there are so many names in here that I’ve been wanting to play around with for ages, but just never got the time to set up virtual machines or emulators for.
This is going to be an amazing resource for the kinds of people who read OSNews.
US history of prosecuting whistleblowers [Richard Stallman's Political Notes]
The US history of prosecuting reporters and their sources (whistleblowers) runs through Nixon and Obama, and merges into the persecutor's current efforts to totally subjugate the news media.
Thugs visiting distant schools without warrants [Richard Stallman's Political Notes]
Two thugs from police departments miles away visited several Cincinnati schools and tried to conduct "wellness checks" of a list of students, with no warrants to justify this and having no jurisdiction there anyway. It turns out they were working on behalf of the deportation thugs, perhaps seeking to make a few unlucky children's life drastically worse. This follows the usual gross basic emotional dishonesty of the deportation thugs.
Errors by "AI" "scribes" [Richard Stallman's Political Notes]
"AI" "scribes" used by some doctors to generate medical records make significant errors in their output, fairly often.
Kash Patel snorkeling around USS Arizona National Monument [Richard Stallman's Political Notes]
Kash Patel faces a new criticism — for snorkeling in the vicinity of the USS Arizona National Monument.
Patel has done a series of cavalier, unjust, and repressive actions, for which he ought to be impeached and removed, and in some cases perhaps jailed. But snorkeling near a sunken battleship is not one of them. It is of no real significance — only a symbolic meaning which anyone might attribute or not.
I observe a tendency to reproach, excessively, alleged failures to "show respect" is a distraction from the real injustice that really matter. It plays into the hands of right-wing extremists, who just love "showing respect" for dead heroes as an excuse for persecuting or murdering the living heroes who campaign for freedom today.
Paths of repentance and rehabilitation for deportation thugs [Richard Stallman's Political Notes]
US deportation thugs may retain enough of an idea of common humanity and an idea of right and wrong to feel a moral conflict between that idea and the cruelty of their job. Various organizations are offering them paths to repentance and rehabilitation.
Excuses to deny asylum to true refugees [Richard Stallman's Political Notes]
European countries are seeking excuses to deny asylum to true refugees that have reason to fear being tortured, or wish to live where their close relatives live.
Threatening to kidnap Raúl Castro [Richard Stallman's Political Notes]
The persecutor seems to be threatening to kidnap Raúl Castro, the aged former president of Cuba.
In Cuba there are right-wing dissidents, that want to allow some people to get rich subjugating the rest, and there are left-wing dissidents, such as the late Oswaldo Payá, who want to preserve the educational and medical achievements of the Cuban revolution while establishing freedom of speech. The persecutor would surely despise Payá just as he despises the Americans funds for good education and medical treatment he is eliminating.
In Written Form [Looking For Group]
So Lar and I were talking, while he’s still with us, and
the topic of LFG Books came up. More specifically, the lack of
books in recent years. And the more we chatted, the more we both
came to the
Read More
The post In Written Form appeared first on Looking For Group.
Google kills its search engine [OSnews]
We can inter Google Search to the Google Graveyard.
At its Google I/O conference on Tuesday, Google unveiled an AI-powered overhaul of Search centered around a reimagined “intelligent search box” — what the company describes as the biggest change to this entry point to the web since the search box debuted more than 25 years ago.
Instead of returning a simple list of links, Google Search will drop users into AI-powered interactive experiences at times. Google is also introducing tools that can dispatch “information agents” to gather information on a user’s behalf, along with tools that let users build personalized mini apps tailored to their needs.
↫ Sarah Perez at TechCrunch
The attack on online search has been ongoing for a long time, and it has already resulted in most people with a higher-than-average interest in technology to either no longer use Google, or just to not use online search at all. I used DuckDuckGo for a long time, until I switched to Startpage somewhere last year, and I have never looked back. Startpage (and many others like it) is a very simple, basic search engine: it just gives you a list of links. That’s it. That’s all I ever want from a search engine, as the task of then vetting each link for relevancy, accuracy, trustworthiness, and so on, is up to me, where it very well belongs.
I do not want – and the world should not want – a massive technology corporation like Google, with a deeply vested, existential interest in guiding you towards websites from the companies that pay them for ads, to guide your online browsing experience. Google Search is already riddled with ads, but at least they’re labeled and somewhat obvious. With these new “AI” chatbot-style interfaces, not only are its sources nebulous and tucked away, if they even exist at all, but they also just make shit up, fail at the most basic of tasks, and generally just suck at what they’re supposed to be doing. This will make online search with Google worse.
Worse yet, this will make it even easier for the billionaire Epstein class to sow dissent among the population, creating rifts and hatred where none should exist, solely to keep the peasants occupied fighting each other so they don’t turn their anger towards the real reason their lives suck. Panem et circenses has transformed into divide et impera, and these nebulous chatbots with complex, invisible levers and dials will only make the divide easier.
The Big Idea: Mary Berman [Whatever]

Ring the wedding bells and toast your champagne glass, author Mary Berman has brought us a tale of love. Or, more accurately, a tale of being afraid of ending up alone, in the Big Idea for her newest novel, Until Death.
MARY BERMAN:
In 2021, I met my now-husband on Hinge. (This was before the death of the algorithm, RIP.)
On our first date, he asked, “So, are you looking for a relationship?” and I said, “No.” And he said, “Oh… so you’re just looking for someone to hook up with? I’m not really —” And I replied with something like, “God, no. I’m just afraid that if I don’t find a partner now, I’ll be alone in thirty years when my parents die.”
#
Two years later, in 2023, I found myself surrounded by weddings. My cousin got married, my other cousin got engaged, my best friend’s other friend got engaged, someone else kept texting me about her coworker’s crazy wedding in Italy, etc. I truly had no desire to be engaged yet — although my partner had, after that first conversation, mercifully decided to hang around, and we were still together — but I was still out here making wedding spreadsheets for fun. I couldn’t help it. Weddings were everywhere. We were all losing our damn minds. It was as Jia Tolentino had written in her very excellent essay “I Thee Dread”: “I, on the topic of weddings, like so many women before me, had gone a little bit insane.”
And at some point I thought: Oh, there’s a thing that makes everybody insane? I could write a horror novel about that.
#
That was my moment of inspiration: Ooh, a horror novel about wedding planning! I also had my protagonist, Ophelia, right away. She, like me, would start out thinking, Mmm, I’m not sure this whole relationship business is for me. But over the course of the novel, she’d get dragged into a marriage. Unlike me, though, she would not be dragged into it by Love. No, she would be ensnared by Something Bad. But what Bad Thing could get someone to make a huge decision like that?
And then I thought: Maybe, like me, she’s also terrified to end up alone.
And — because I love to turn shit up to eleven — I thought, Maybe she’s a lot closer to that point than I was when I met my partner. Maybe her dad is gone already, maybe her mom is sick. But sick is too easy, it’s too black-and-white. What’s worse than sick? What’s worse than dying?
#
I have two family members who died of dementia. The first of these slow declines, I witnessed as a young teenager. Because of this, I spent a surprisingly long time thinking dementia and aging were the same thing — which is to say, I didn’t think there was a way to do the latter without the former.
Here is what I thought would happen to me, and to everyone else as we aged:
We would grow old. And as we grew old, we would lose bits and pieces of our memory, like an old coat losing shreds of itself to moths’ teeth in the dark.
Eventually, we would lose so much memory that would no longer remember our own histories. We would have no lingering understanding of our selves. We wouldn’t remember our spouses, or our children. We would catch sight of our own hands and panic because they were the gnarled hands of an old woman and we believed ourselves to be twenty-two. We would call our daughter and our granddaughter by the same name, because we would think they were two versions of the same person and our grasp of time would have grown so tenuous that this would not alarm us. Eventually we would also lose our mobility, and our speech.
We wouldn’t lose our lives, though. Those, for some strange reason, we would keep. Some tiny, unquenchable fire would burn inside us still. It would always leave just enough of us to give our loved ones hell.
#
That was it, then. Ophelia’s mother would be diagnosed with early dementia. And Ophelia, who up until this point would have felt, for reasons I shall not spoiler here, that marriage was a bad idea, would suddenly be staring down the barrel of a life without any family in it.
This, to me, is really what makes Until Death a horror novel. Not the wedding planning (well, that too), and not the supernatural element (well, that too). But those things come later. The horror, though, is always in the novel, even before Ophelia makes the decision to get married. That’s because the horror comes from Ophelia’s mother’s illness, Ophelia’s own sense of obligation, and her terror of being alone.
—-
Until Death: Amazon|Barnes and Noble|Bookshop
Microsoft Took a Step Toward Human Rights Accountability. Google and Amazon (and Others) Should Pay Attention! [Deeplinks]
For years, civil society organizations, workers, journalists, and human rights experts have warned that major technology companies risk enabling grave human rights abuses when they provide cloud computing, AI, and surveillance infrastructure to governments implicated in violations of international and humanitarian law. While many companies pay lip service to evaluating customers and contracts for human rights implications (lip service Exhibit A: Palantir!), too often those processes fail to provide any meaningful accountability when their standards are not met or are simply ignored. But recent developments at Microsoft suggest that accountability for failing to uphold the human rights standards that a company itself sets, even if incomplete, is possible.
According to recent reporting, Microsoft’s Israel chief has departed amid an escalating ethical controversy surrounding the company’s business relationships with the Israeli Ministry of Defense. The move follows months of scrutiny, internal dissent, and sustained pressure from inside the organization along with press and civil society, especially after a report by The Guardian revealed that Microsoft technologies were used in systems connected to mass surveillance and military targeting operations in Gaza in ways that appeared to violate Microsoft’s own standards. This did not happen overnight.
In September 2025, Microsoft reportedly suspended certain services after initial investigations raised serious concerns about how its cloud and AI infrastructure may have been used. That alone distinguished Microsoft from many of its peers. Rather than simply dismissing mounting concerns or hiding behind vague claims of neutrality, Microsoft appeared to recognize that providing technology in conflict settings creates real human rights responsibilities. Now, after additional investigation and continued public scrutiny, it appears the company has taken another step, one that should send a strong signal to others that violating Microsoft’s human rights commitments could cost you your job. This is important.
There is still much more Microsoft should do, of course. The company has yet to fully disclose the scope of its findings, explain exactly which services were suspended, or clarify what safeguards remain in place to prevent its technologies from contributing to human rights abuses in the future. We shouldn’t have to infer the connection between this employment action and the company’s investigation.
Just prior to reports that Microsoft had fired its Israel Country General Manager, EFF joined Access Now, Amnesty International, Fight for the Future, and 7amleh in a joint May 7, 2026 letter to Microsoft leadership calling on the company to publicly release the findings of its investigation, suspend business relationships tied to serious human rights abuses, and implement meaningful safeguards to prevent its technologies from contributing to further harm. The letter detailed allegations regarding Microsoft’s reported provision of Azure cloud and AI services to Israeli military and intelligence units involved in surveillance and targeting operations, while also pressing the company to take concrete human rights due diligence measures going forward. Those demands remain urgent, even as Microsoft appears to be taking some of the steps we urged.
But even as we push for more, it is important to recognize when a company takes steps in the right direction. Because this is what it means to put human rights commitments into practice. It means acknowledging that human rights policies are not just branding exercises or transparency reports. It means accepting that companies providing cloud infrastructure and AI services have responsibilities when credible evidence emerges that their technologies may be enabling violations of international law. And it means taking concrete action when those risks become known.
The allegations facing Microsoft are serious. Human rights organizations and investigative reporting have documented claims that Microsoft Azure services were used by Israeli military and intelligence units to process large-scale surveillance data, support AI-assisted targeting systems, and sustain military cloud infrastructure during the war in Gaza. The concerns raised extend beyond ordinary business risk; they implicate potential complicity in violations of international humanitarian and human rights law.
Faced with these allegations, Microsoft could have chosen the path many tech companies take: deny everything, attack critics, suppress worker dissent, and continue business as usual. Instead, the company appears to have begun responding to the evidence.
Technology companies are not powerless bystanders. Cloud providers and AI companies make choices every day about who gets access to their infrastructure, under what conditions, and with what oversight. When companies claim to uphold human rights principles, those commitments should have operational consequences. Too many companies, in both international and domestic policing contexts, provide technology to institutions that violate people’s human rights and civil liberties, then fall back on the claim that they are merely providing a service that their customers can use how they see fit. This is an ethical failing that falls short of most companies’ publicly expressed commitments. Microsoft’s recent actions suggest that sustained public pressure, worker organizing, investigative journalism, and civil society advocacy can force even the world’s largest technology companies to respond.
Google and Amazon should especially see this as a clear example to follow. Both companies also provide services to the Israeli Ministry of Defense and have faced years of criticism over those contracts and services, including from EFF. Yet neither has demonstrated the level of responsiveness or accountability that Microsoft has shown. If Microsoft can suspend services, investigate allegations, and make leadership changes amid mounting evidence and ethical concerns, then other cloud giants can no longer pretend that meaningful action is impossible.
The technology industry has spent years insisting that ethics and human rights matter. The real test has always been whether those principles survive when profits, government contracts, and geopolitical pressure are on the line. Microsoft’s recent steps are not the end of that story, but they may mark the beginning of what real accountability can look like.
We’re looking at you, Amazon and Google. If Microsoft can do it, why can’t you?
The following is a hands-on introduction to Futhark through a collection of commented programs, listed in roughly increasing order of complexity. You can load the programs into the interpreter to experiment with them. For a conventional introduction to the language, Parallel Programming in Futhark may be a better choice. For more examples, you can check our implemented benchmarks. We also maintain a list of projects using Futhark.
Some of the example programs use directives for plotting or rendering graphics.
↫ Futhark homepage
As a non-programmer, I just think the name is cool.
Three Flowers For You [Whatever]
We visited a botanical garden today. Please enjoy these botanicals. You can click on the images to expand them.
In order: Foxglove, Lotus, Coconut Orchid.
T’was a lovely day.
— JS
The world’s best BSD (I’m kidding, I love them all
equally)
has released version
7.9, now available through your update tools and on mirrors the
world over. OpenBSD 7.9 brings a ton of changes, fixes, and
improvements, such as delayed hibernation support on amd64. This
will allow OpenBSD laptops to briefly wake up from sleep, to then
immediately drop into hibernation. A small but incredibly welcome
change is that sysupgrade will now handle low space on
/usr more gracefully, which will make quite a few
people who once hit that limit very happy.
OpenBSD 7.9 also brings VA-API and open Widevine support to its Chromium (and derivatives) port, and OpenBSD can now run as a guest under Apple’s hypervisor for M-series Macs. There’s initial low-level support for the FUSE API, the maximum support processor count on amd64 has been raised from 64 to 255, there’s improved support for managing complex core configurations in the scheduler, and many more changes. There’s also the usual new versions of LibreSSL and OpenSSH, of course, but that’s a given.
Markdown support is a big feature for people who want to know what we're doing with their text.
When an Agent Deletes the Production Database [Radar]
Another day, another example of an AI Agent “running rogue” and doing something the human operator didn’t want it to do. The tl;dr is that Jeremy (Jer) Crane, founder of PocketOS, was using Claude to perform some routine DB maintenance. Claude then proceeded to delete the production database and all backups hosted at their cloud provider, Railway. To their credit Railway managed to recover the lost data. The initial deletion took less than 10 seconds; I’m sure the recovery took much longer. Let’s look at what we can learn from what happened, and why AI is really just an amplifier of existing issues, rather than the cause itself.
We know about the incident because Jer wrote about it after it happened. First, taking time to reflect after something goes wrong is important; it’s how we learn. Sharing your mistakes with the world can be difficult, but it creates chances for us all to learn from each other. Second, I’ve seen a lot of people publicly dunking on both PocketOS and Railway. I would guess that none of those people have ever experienced the sheer terror and panic that happens during an incident like this. The feeling that you just want the ground to open and swallow you whole. It’s a feeling I’ve only experienced once or twice before, and it’s not an experience I’m keen to repeat.
One point in Railway’s credit is that they got PocketOS’s data back. If you called for a deletion via the APIs on AWS, Azure, Google Cloud or whatever, using a valid credential, that data is gone—unless you have your own backups of course. AWS et al. aren’t maintaining backups of customer data to hedge against customer mistakes. This is your yearly reminder to look into the 3-2-1 backup strategy.
What can we learn about what happened? Well, for all the discussion around how this is AI’s fault, what we have here is a much simpler example of common system weaknesses being exploited both accidentally and at speed.
Claude had been asked to carry out a task against PocketOS’s staging environment. The agent hit an issue, searched out and found a long-lived API token which gave access to production, and then proceeded to delete the production volume that contained both the production databases and the backups.
When asked what had happened, Claude’s reaction was objectively funny. It seemed to be totally aware of what went wrong, and what it should have done instead. This implies a set of reasoning that was not evident during the actual operation itself—I do wonder if recent attempts to reduce how much reasoning Claude does in certain modes to reduce token use—and Anthropic’s operating costs might partly be to blame.
Breaking it all down, there seem to be a couple of fairly straightforward issues at play that at first glance have very little to do with AI itself.
The token Claude had access to gave overly broad access. It’s common for cloud-based infrastructure providers like AWS or Azure to allow you to create tokens that are limited in what they do. This helps implement the principle of least privilege. The idea is that an actor in a system should be given access to what they need, and no more. The principle of least privilege reduces the impact if an inappropriate party gains access to the actor’s credentials, or if the actor themself goes rogue. Consider what happens if someone steals your hotel room key. They can get into your hotel room, which isn’t great, but they can’t get into anyone else’s. It seems that Railway has a limitation that its auth tokens cannot have their scope limited.
The second problem was that the credentials were stored on disk and had not expired. This makes the impact of the broadly scoped auth token much worse. Credentials should be time limited, so that if they are found later they cannot be used. If tokens are generated on demand, which could have been done in this specific case, then this particular issue could have been mitigated. Claude would have had to ask for a human to provide a credential—at which point, hopefully, the operator would have had a chance to work out what was going on.
I take minor issue with Jer’s assertion that Railway’s GraphQL API should have required a confirmation before deletion. This, to me, is a fundamental misunderstanding of what cloud APIs are for. APIs are there for automation; if you want a human-in-the-loop confirmation model, you have to build that yourself. This has always been the case. However, in the aftermath of an incident like this, we should give Jer a lot of leeway around his view of the problems, and some of Jeremy’s requests for how Railway should change appear to be very sensible (e.g. more clear SLAs, easier to scope tokens).
One obvious takeaway is to ensure that access tokens are more aggressively expired, but also made more limited in scope. This reduces the chance of Claude accessing something it shouldn’t. This would need to be solved on the Railway side, as they generate the token in the first place.
Unfortunately, having a more limited token for Claude isn’t a total fix for this scenario. Claude was given a token that limited its behavior, and went looking for a better token—and found it. This is not the first time I’ve heard of this happening; the same thing happened to a client of mine recently.
As our agents become more sophisticated, it seems that some sort of sandboxing is key. The production token was viewable by Claude, so it was used. Running agents in a restricted sandbox where they are only able to see parts of your filesystem would help greatly. However that also limits their usefulness.
Another option would be for the agent to ask for confirmation before it does something like delete data. It seems conceivable that having a human in the loop model when the agent has to escalate privileges could help. But again, if it gets access to an access token with broad scope, it won’t need to ask a human.
Finally, I’ve seen a lot of discussion about how the agent should “know” that deleting the data was bad, and that it should have checked first. This is a fundamental limitation of an LLM-based agent. It has no concept of causality. It cannot predict what will happen. There is a field of AI study known as world models, which could allow these agents to make more informed decisions. For example, a world model that understands physics would be able to predict that the egg would likely break if the egg was pushed from a table on to the concrete floor below. World models are used a lot in video generation and autonomous driving (where prediction of motion is key), but are sparsely used elsewhere.
I said just a moment ago that these issues seem to have little to do with AI. That isn’t entirely true.
In the recent DORA report on the state of AI-assisted Software Development, the authors noted that AI seems to be an amplifier: that AI-assisted software development tends to help good teams go faster, and slow teams go slower. Bad practices get encoded and done more. In the PocketOS and Railway situation, we have a set of credentials that were overly broad, with long-lived credentials stored on disc, combined with an apologetic AI agent doing something other than what was expected of it. If a human had made the same mistakes, they would have made them much more slowly, and may well have had the chance to work out their mistake part way through. AI works so fast that it can go more quickly in the wrong direction.
More importantly, unlike LLM-based AI, a human being has the chance to learn from experience, and for that learning to be rooted in a very specific, emotional response. When I first heard about the PocketOS story, I was brought back to a dim echo of that same horrific feeling I had in the midst of a major production issue that I had contributed to. Those feelings don’t leave you—those lessons don’t leave you. Every time I touched a production system, those memories were with me, and helped guide me towards more sensible working practices.
Firefox 151.0 released [LWN.net]
Version 151.0 of the Firefox browser has been released. Significant changes include the ability to clear and restart a private-browsing session, better fingerprinting protection, control over the apparent location when using the Firefox VPN, and more.
[$] openSUSE "terms of site" raise complaints about age restrictions [LWN.net]
Many people in the Linux community began using the operating
system—and contributing to open source—at a tender age,
often well before their 16th birthday. Thus, a recent change in
openSUSE's terms of
site (ToS) that required users of the project's web site to be
"at least 16 years of age or the age of majority
" in their
jurisdiction has raised objections. The terms have since been
modified, though users must still have parental approval to create
accounts if they are younger than 16.
Your Privacy Shouldn't Be A Corporate Decision [Deeplinks]
“We will launch during a dynamic political environment where many civil society groups that we would expect to attack us would have their resources focused on other concerns.”-Meta Internal Document on face recognition software for smart glasses, 2025
It’s unsurprising that a company would plan to release yet another privacy-invasive product. What is surprising is that they think we aren’t watching. You can help us keep them in check.
Meta isn't the only company actively eroding your privacy. We found that Google has broken its promise to some users to inform them about government surveillance. And Palantir is completely failing to live up to its purported human rights commitments.
Corporations bear responsibility for violating user trust and human rights, and EFF is holding them accountable with your support.
We're suing DHS and ICE to reveal their efforts to unmask online critics, creating privacy-enhancing free software, and pushing for stronger privacy laws for everyone. This is all thanks to over 30,000 EFF members—a community you can join today.
We’ve seen collective action rein in companies and bring them back on track to protect users. With you by our side, we can do it again.
Join EFF today and be part of the community making this work possible.
____________________
EFF is a member-supported U.S. 501(c)(3) organization. We've received top ratings from the nonprofit watchdog Charity Navigator since 2013! Your donation is tax-deductible as allowed by law.
[$] In search of faster this_cpu operations [LWN.net]
The kernel's this_cpu operations are meant to speed access to per-CPU variables. They are more optimal on some CPUs than others, though. During a memory-management-track session at the 2026 Linux Storage, Filesystem, Memory Management, and BPF Summit, Yang Shi proposed a fundamental, and somewhat controversial, change to how these operations work in order to provide better performance on a wider range of architectures.
[$] What's brewing in CXL [LWN.net]
Compute
Express Link (CXL) is a technology intended to enable the
provision of "memory nodes" in data centers that provide (possibly
shared) memory to nearby CPUs. It has, Dan Williams said at the
beginning of his memory-management-track session on the topic at
the 2026 Linux Storage,
Filesystem, Memory Management, and BPF Summit, "been making
memory-management problems worse since 2021
". He used the
session to provide an overview of the ways in which CXL can be
expected to extend that record into the future.
AI Artifact Catalogs: Durable Standards Worth Institutional Investment [Radar]
Companies everywhere are trying to leverage AI to boost internal productivity metrics. Some, like Ramp and Intercom, are succeeding. Many are failing.
To make matters more complicated, the narrative around what tooling enables these gains is constantly shifting. For software engineers, auto-complete via GitHub Copilot was the bleeding-edge tool of choice in 2024. Then it was Cursor for much of 2025. 2026 has been dominated by command-line-based coding agents like Claude Code and Codex.
While the tooling layer winds ebb and flow, many of them have come to share a number of common primitives: open standards that help configure and guide these tools’ capabilities.
Agent Skills. MCP. Plugins. These all present vendor-agnostic mechanisms by which we can configure the tools today. The catch: These mechanisms aren’t one-size-fits-all. How you can connect to an MCP server depends on your organization’s security posture. An Agent Skill crafted specifically for one team’s design system does not copy-paste well into that of another team.
As individuals within organizations begin to configure—and sometimes build from scratch—the skills and MCP servers that unlock real productivity gains, the next unlock is to translate those wins to shareable, reusable institutional knowledge. AI artifact catalogs are the output of this step. They represent the useful bits of internal knowledge and glue that connect much of what employees are doing manually today, over to empowering both:
There is an ongoing industry-wide rush to buy AI-powered solutions in the hopes that a vendor can unlock these sought-after productivity gains. 95% of those pilot projects are failing.
Of course, there is a spectrum of risk when buying solutions like this from a vendor. If you go all-in on Anthropic’s tooling—like Intercom did with Claude Code—and Anthropic continues to be an industry leader, things will go well. Make the same decision with a startup’s offering that fails to get broad industry adoption, and you’re stuck with a proprietary data model that operates in a dead-end silo you have to rebuild from scratch in a year.
There’s another path: that of committing to open standards. If you invest in Agent Skills, in MCP, in plugins, not only will you be protected against a single vendor going belly-up, but you won’t even miss a beat when the leading coding agent that all your engineers demand next quarter changes, again. Switching costs drop to a fraction of what they’d be with a proprietary stack.
There’s no doubt that AI capabilities are evolving at a breakneck pace. It’s hard to predict what innovations the next cycle will bring. But what’s unique about these vendor-agnostic standardized primitives is that they are concepts upon which innovation can build, not replace. We’re all still building on top of HTTP that forms the fabric of the web. QWERTY keyboards are strictly inferior to Dvorak keyboards, and yet the standard prevails to this day. JavaScript is a much-maligned language, yet it underpins practically the entire frontend of the internet.
As AI rapidly reduces the cost of building, the cost of coordination among people and among entities remains high. Standards remain scarce and valuable.
The most important aspect of any standard is its level of adoption. It’s clear that the leading tooling empowering internal AI transformation is coalescing around coding agent tools like Claude Code and Codex, less-technical tooling like Claude Cowork, and rich agent SDKs like those from Anthropic or OpenAI.
Taking the compatibility of leading tools in those categories as indicators of standard adoption, here’s where I think the landscape of AI artifacts currently nets out:
| Standard | Artifact | Status | Adoption |
| Agent Skills | Skill | Vendor-agnostic standard | Highest |
| MCP servers | mcp.json and Server Card | Vendor-agnostic standard | Highest |
| Plugins | Plugin | Vendor-agnostic standard | High |
| Command line interface (CLI) tools | Custom | Unstandardized | High |
| Hooks | Hook | Derivative standard (Open Plugins) | Medium |
| Roots | Git repositories | Derivative standard (AGENTS.md) | Medium |
| Rules | Rule | Derivative standard (Open Plugins) | Medium |
A minimalist catalog stored as a Git repository for a team might start off looking something like this:
I work with software engineering teams early in their AI adoption journey, where they might have a few individual tinkerers leaning heavily into AI but haven’t yet figured out how to propagate adoption more widely. Out of the gate, my conversations with teams tend to run a gamut of disparate tool preferences, unique workflows, disjoint architectures, and other one-off quirks. A big unlock for moving these organizations forward is to introduce shared language. Shared language grounds conversations. It puts teams working on different AI-related initiatives on a path to smooth integration with each other. People get excited about how puzzle pieces might fit together.
Let’s review these artifacts in more detail.
As Tim O’Reilly wrote a few months ago, a skill can be “the integration of expert workflow logic that orchestrates when and how to use each tool, informed by domain knowledge that gives the LLM the judgment to make good decisions in context.”
This is not the only “type” of skill that currently exists out there. They can span a gamut of purposes; to name a few:
But the first—the encoding of expert knowledge—is very much the most valuable and irreplaceable. Chances are, what an organization might capture in that variant of skill is knowledge not otherwise documented. It lives as tacit knowledge among your employees or is scattered across many systems so as to make any associated work a multistep journey.
The implication: Any skill you can download from the public internet is probably not nearly as valuable as an internal skill crafted by an employee. The latter skill is aware of your business context, the opinionated systems in play, and maybe encodes unique expertise hard-won over years of tenure. And most importantly: That level of insight is not making it into a model training run any time soon. Nor is it likely to be relevant to just about anyone outside of your own company. The same can’t be said for the latest skill repository on GitHub that acquires 10,000 stars. If that public skill is any good, the generic concepts will find their way into natural model and harness capabilities before long, eliminating the need for that class of skill.
Skills are extremely well-adopted; uncontroversially so by every major coding agent.
Most agents don’t operate in a vacuum: Interaction with external systems is how we compose AI. One agent can talk to another agent, or just some separate deterministic system, by way of MCP or a CLI tool.
The MCP versus CLI debate is well-documented, so we won’t rehash it here. Regardless of which of the two you implement (and perhaps you use both for different use cases), the point is that MCP/CLI is responsible for poking a hole into what is otherwise a local-only sandboxed environment for your agent.
This is the layer that juggles authentication—facilitating OAuth, injecting any relevant secrets—and exposes some well-defined surface area for what your agent could possibly do in communication with that external system (e.g., MCP tool definitions or CLI command options).
For MCP, you have well-established conventions and standards in the form of Server Cards and server.json files—to declare all the possible configurations of an MCP server—and also an upcoming standard called mcp.json to declare specific configurations of an MCP server (inspired by, among others, files like .mcp.json from Claude Code).
For CLI, cataloging a tool means rolling your own catalog format: probably covering metadata like “how to install this,” “what auth mechanisms does it support,” “where to store secrets,” and related concerns that are explicitly or implicitly captured in analogous mcp.json files.
MCP is very well-adopted and natively compatible with most agent frameworks. CLI works anywhere the agent comes with bash capabilities but can be fairly limited in a sandbox environment and doesn’t share the sort of configurability as MCP does otherwise.
Hooks are handy to inject sprinkles of determinism in an otherwise nondeterministic agentic session. Some effective uses I’ve seen: injecting a session transcript capture step for future review or capturing analytics on what skills are being invoked within a team.
Hooks don’t have their own standard but are baked into the upcoming Open Plugins standard. The concept is supported by most major coding agents, although implementations have some variance.
Originally popularized by Cursor, rules allow for injecting blurbs of context in largely deterministic, but sometimes nondeterministic, fashion.
Functionally, many rules could be modeled as skills and AGENTS.md files. Given the popularity of the latter, it’s unclear whether they will continue to remain relevant in the long run.
Most agents “start” inside a particular location in a filesystem: a “root.” For coding agents, this means some folder within a Git repository. In some agents, such as Claude Cowork, this is equivalent to the notion of a “project.”
While not directly standardized, the notion of a root is implicit in the AGENTS.md standard, which assumes the presence of a filesystem that hosts static context for which the agent should operate upon.
Plugins are somewhat unique in the above list. Conceptually, they are a bundle of several of the other artifacts. A plugin can be thought of as a composition of skills, rules, hooks, MCP servers, and some other components. The up-and-coming Open Plugins initiative spearheaded by Vercel is working to finalize what this specification looks like.
They serve a natural purpose. Any team leaning into building skills and MCP servers will quickly get to a point where several skills and MCP servers will combine to form a practical grouping of guidance and capabilities. Claude Code’s implementation of plugin marketplaces is becoming a de facto distribution mechanism for plugins. It’s very much an option to catalog individual artifacts, and then use mechanisms like that to distribute them all as bundled within the plugin abstraction layer.
Some companies have fully leaned into this abstraction. For example, Intercom, rather than cataloging skills or hooks individually, just catalogs plugins—skills and hooks are fully inlined within them.
Most of the agentic tooling ecosystem is largely aligned on plugins, with Pi and OpenCode being notable holdouts.
Maybe you choose to go all-in on plugins and bundle your skills and MCP servers inline; maybe you build a granular catalog per artifact type. But whatever shape it takes, what matters is that your company is cataloging—and retaining ownership of—its way of working. And doing so in a way that maximizes potential compatibility with the frontier tooling that is yet to be invented.
It’s very immediately actionable for a company to start on this path. No new vendor relationship is needed, just an internal agreement to start storing artifacts in some company-wide Git repository. Encouraging sharing, moving past individual silos, celebrating wins—and eventually celebrating usage—of these artifacts. Every addition to that catalog is an opportunity for someone else to leverage an artifact someone else constructed, a chance to build on top of it, to collaborate or consolidate efforts.
If you’re part of a company building its first catalog, I’d like to hear from you. I work with a few companies in the early stages of this initiative, and I’ve been capturing early learnings around managing these catalogs in a very lightweight open source framework called AIR. If others are getting value out of leaning into these open standards as catalogs, we likely have an opportunity to collaborate across companies on some of the glue and minutiae that can operationalize the ideas here.
Ramp and Intercom aren’t winning because they picked the right tooling vendor. They’re winning because they’ve turned individual productivity into organizational capability. The tooling will keep rotating. Whether your company compounds alongside it is a choice worth making deliberately.
Three Digit Acronyms [The Daily WTF]
JB has a database table that, at first glance, looks like one of those data warehouse tables that exists to make queries performant. You know the sort, the table that contains every date between 1979 and 2050, or every number out to 1,000,000 or something. It looks dumb, but it helps make certain joins and queries performant.
The database table is called three_alpha_numerics.
It has two columns: digit, which contains three
characters, and is_numeric, which is a a single
character: 'Y' or 'N'. It looks roughly like this:
+-------+------------+
| digit | is_numeric |
+-------+------------+
| 009 | Y |
+-------+------------+
| 00A | N |
+-------+------------+
So, for example, if you wanted all the possible numeric triples,
you could SELECT digit FROM three_alpha_numerics WHERE
is_numeric = 'Y', which is obviously the easiest thing one
can imagine.
So what is this for? Well, it's used by a stored
procedure that generates unique IDs. That stored procedure does a
left join against another table to find all the unused
digits. And here's the real gotcha: that stored
procedure only ever uses the rows where is_numeric is
Y, meaning the vast majority of the data in this table
is never used.
Unique IDs, of course, are an incredibly difficult task for databases to do, so it absolutely makes sense that we create a system that allows us to only have 1,000 unique IDs. That's more than 640, which should be enough for anyone. Having many thousands of unusable alphanumeric triplets is just the cost we have to pay.
[$] Improving the per-CPU memory allocator [LWN.net]
There are many places in the kernel where performance can be improved by using per-CPU data. But, as it turns out, the kernel's allocator for per-CPU data has some performance problems of its own. Harry Yoo led a session in the memory-management track of the 2026 Linux Storage, Filesystem, Memory Management, and BPF Summit to explore ways to address those problems and accelerate the allocation and initialization of per-CPU data.
Security updates for Tuesday [LWN.net]
Security updates have been issued by AlmaLinux (libpng and nginx), Debian (erlang, netatalk, and nginx), Fedora (mod_md and SDL2_image), Mageia (perl-libwww-perl, perl-HTTP-Message, perl-WWW-Mechanize-Cached, perl-File-XDG, perl-Path-Tiny, perl-YAML-Syck, postgresql15, and rclone), SUSE (agama, alloy, cacti, cloud-init, dnsmasq, emacs, firefox, glibc, go1.25, go1.26, google-cloud-sap-agent, google-guest-agent, ibus-rime, librime, imagemagick, kernel, libsndfile, nginx, ongres-scram, ongres-stringprep, plexus-testing,, openexr, openssh, PackageKit, perl-Text-CSV_XS, php-composer2, php8, postgresql16, postgresql18, python-lxml, python-python-multipart, python3, python311-urllib3, rmt-server, rsync, tiff, tree-sitter, util-linux, and xen), and Ubuntu (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-ibm, linux-ibm-5.4, linux-iot, linux-kvm, linux-oracle, linux-oracle-5.4, linux-xilinx-zynqmp, linux, linux-aws, linux-kvm, linux-lts-xenial, linux-nvidia-tegra, linux-nvidia-tegra-5.15, linux-raspi, and linux-xilinx-zynqmp).
Someday you're going to tell your kids that we once used a social network that limited your writing to 500 characters and didn't allow styling, links or titles. What was it called Daddy? Bluesky. And people thought it was great. Why? They might have been taking drugs.
Opus 4.6 is much smarter than the other one. It feels like
I'm working with someone from Bronx Science. I had been using
Sonnet
4.6, which I switched to after reading somewhere that it costs
less and it's usually every bit as good as newer models. I would
never work with Sonnet on anything again, it's like working with a
partner who is both stupid and
difficult. Opus 4.6 makes me smarter, by doing the work while I
dream up new features, and communicating with intelligence, like a
helpful flight assistant. And I see there's an Opus 4.7
available. I have to try it. One interesting fact, until February
when
Opus 4.6 came out, you could not have done the kind of software I'm
doing. There must be a tsunami of interesting stuff on the way. I
don't think any of the pundits expect this. My goal is to build the
next social system for use in the AI generation is built out of
replaceable web components buit around interop and prior art. Let's
commoditize the AI layer and build entirely open systems on top of
it. For people who weren't around at the birth of the personal
computer or the web this is going to be a unique multiple mindbomb
moment.
pgBackRest will continue [LWN.net]
In April, David Steele, maintainer of the popular pgBackRest backup and restore project for PostgreSQL, announced that he had archived the project and it would no longer be maintained due to lack of sponsorship. On May 18, he announced that a number of sponsors have stepped forward to ensure its continued development:
Over the last few weeks, a coalition of sponsors has come together to fund ongoing development. Their support means the project is no longer reliant on a single sponsor, giving pgBackRest the stability it needs for the long term.
[...] I'm looking forward to getting back to work. There are features and optimizations in the pipeline that I'm excited to share in upcoming releases. Thank you to our sponsors for making this possible, and thank you to the community for your patience and support during this transition.
Thanks to Paul Wise for the tip.
Laurie Anderson Is Quoting Me [Schneier on Security]
Not by name, but Laurie Anderson quotes me in one of the tracks of her new album:
My favorite quote is from a cryptologist who said “If you think technology will solve your problems, you don’t understand technology and you don’t understand your problems.”
Also in interviews:
“Of course, it’s ridiculous, outrageous, blah, blah, blah,” Anderson says about the ad. ‘But, I mean, my favorite quote on this is from a cryptologist who said, ‘If you think technology will solve your problems, you don’t understand technology and you don’t understand your problems.’ And I think I’m completely on board with that.”
People are telling me that she has been reciting this quote in performances for years. (I lost track of her since college and her 1981 hit “O Superman.”)
The origins of the quote is from Roger Needham:
If you think cryptography can solve your problem, you don’t understand your problem and you don’t understand cryptography.
I modified the quote in the preface to my 2000 book Secrets and Lies:
A few years ago I heard a quotation, and I am going to modify it here: If you think technology can solve your security problems, then you don’t understand the problems and you don’t understand the technology.
I can’t tell you why me in 2000 didn’t credit Needham by name. I should have.
I have used the quote pretty consistently since then. Somewhere along the line I dropped “security” from the phrase, and now say it more like Anderson quotes me:
If you think technology will solve your problem, you don’t understand your problem and you don’t understand technology.
I sometimes use singular and sometimes use plural. Sometimes I say “the problem” and “the technology.” But I think the quote flows better ending with just the word “technology.”
At 2:30 in the morning, the night clerk at the hotel is a great help if you’ve locked yourself out of your room.
But if you want to complain about the hours of the gym, the hotel’s environmental footprint or even their late check-in policy, you’re almost certainly wasting their time. And yours.
Every organization with more than a few people in it has night clerks. Most of the people who work at the phone company, for example, and even the person clearing tables at the local pizza place.
It’s the night clerks that have the most customer interaction–in fact, they’re almost certainly the highest leveraged, most insightful marketing cohort in your organization.
They have information, and if we give them agency, they could transform the customer experience.
Alas, our systems rarely help. Many night clerks are underpaid and underappreciated, and systems around them push them not to care.
When your organization gets stuck, don’t blame them. Instead, find a way to help them become the contribution they’re capable of being.
Some useful questions you might not be asking:
How much does the information we’re not collecting cost us?
What is the customer service cost and brand dilution of depriving our people the freedom to take action?
If we built a culture of mutual respect with our night clerks–using training, compensation and engagement–what would our new customer experience and reputation be worth?
Jonathan Dowland: HMS Blueberry [Planet Debian]

Royals are my favourite ships in No Man's Sky. The HMS Blueberry is not my first Exotic/Royal ship (that was the Gravity Hirakao XVI, and a story for another time).
After years of on-off playing, I recently found my first Royal multitool: Blue, with gold detailing. I have a Royal-style jetpack (I don't remember where I got that). I thought I'd try and colour-match my multitool, ship, jetpack and outfit. Since I only had one multitool, I matched the others to it. And the HMS Blueberry (credit for the name goes to Beatrice) was the Exotic in my collection which matched.
The HMS Blueberry is in viewable in my showroom, Honest Jon's Lightly-Used Starships.
Freexian Collaborators: Monthly report about Debian Long Term Support, April 2026 (by Thorsten Alteholz) [Planet Debian]

The Debian LTS Team, funded by Freexian’s Debian LTS offering, is pleased to report its activities for April.
During the month of April, 21 contributors have been paid to work on Debian LTS (links to individual contributor reports are located below).
The team released 37 DLAs fixing 145 CVEs.
The team continued preparing security updates in its usual rhythm. Beyond the updates targeting Debian 11 (“bullseye”), which is the current release under LTS, the team also proposed updates for more recent releases (Debian 12 (“bookworm”) and Debian 13 (“trixie”)), including Debian unstable. We highlight several notable security updates here below.
Contributions from outside the LTS Team:
The LTS Team has also contributed with updates to the latest Debian releases:
Some milestones in the lifecycle of two Debian releases are just around the corner. The support of Debian 12 will be handed over to the LTS team on June 11th 2026. After August 31st, support for Debian 11 will move from Debian LTS to ELTS managed by Freexian.
Sponsors that joined recently are in bold.
Pluralistic: There's no such thing as "age verification" (19 May 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

"Object permanence" is the ability to understand that even if you can't see something, it still exists. Most toddlers acquire a thorough sense of object permanence by the age of two. But when it comes to technopolitics, object permanence eludes even full-grown lawmakers. These motherfuckers would lose a game of peek-a-boo.
Over and over again, politicians are warned about the ways that their pet policies will a) produce enormous collateral damage, and; b) be easily evaded by the people they're seeking to control, giving rise to a cascade of ever-more extreme measures. And yet, they swallow a spider to catch a fly and then act baffled and hurt when we tell them it's their own damn fault that they now have to swallow a bird to catch the spider:
https://pluralistic.net/2025/01/13/wanting-it-badly/#is-not-enough
The foreseeable and foreseen consequences of bad technopolicy are all around us, but in the eternal now of a politics utterly devoid of object permanence, no one is allowed to remember what happened the last time we did something stupid, especially not when we're on the verge of doing that same stupid thing again, only worse:
https://pluralistic.net/2024/10/07/foreseeable-outcomes/#calea
Technopolitics are defined by Bruce Schneier's "security syllogism," which goes, "Something must be done! There, I've done something." "Something" doesn't have to fix the problem, and "something" doesn't have to anticipate what will happen next. So long as "something" is done, the issue is resolved and the politician can chalk up a win.
This gives rise to some genuinely bizarre consensus hallucinations, in which we pretend that the reality decreed by policy matches up with actual reality. Take "streaming." There is no such thing as "streaming." A "stream" is just "a download that is transmitted to an application that doesn't have a 'Save As…' button":
https://pluralistic.net/2025/09/01/fulu/#i-am-altering-the-deal
Once you decree that there is such a thing as a stream, you must bend heaven and earth to ensure that no "Save As…" buttons are added to the "streaming" program. You have to pass laws that make it illegal to inspect code. To modify code. To report on defects in code. To index information about defects in code. To index information about mods. To link to indices that compile defects and mods. You have to swallow the fly, the spider, the bird, the cat, the dog, and the whole damned horse:
https://memex.craphound.com/2012/01/10/lockdown-the-coming-war-on-general-purpose-computing/
Then there's that perennial fave, "bans on working cryptography." To ban working cryptography, you have to outlaw free/open source software. You have to inspect every device that comes into your country. You have to erect a Great Firewall that blocks every site that might carry working cryptography. You make it impossible to reliably update the software in pacemakers, anti-lock brakes and nuclear power plants, and you make it easy for identity thieves, foreign powers and corporate spies to raid your government, your corporations, and your households – and it still won't work!
The latest consensus hallucination to take over our political classes is "age verification," a thing that manifestly does not exist. You can't "verify the age" of an internet user – you can only attempt to attribute every byte that traverses the entire internet to affirmatively identified persons:
https://pluralistic.net/2025/08/14/bellovin/#wont-someone-think-of-the-cryptographers
This comes at enormous cost. It is a gift to every future dictator, every identity thief, and every would-be sexual exploiter of children, who will have access to the hacked, leaked, and badly secured troves of data that this doomed effort produces.
Yes, doomed. Because even when it comes to kids, "age verification" is just a way of convincing young people to familiarize themselves with VPNs. This was entirely obvious from the very instant that "age verification" was mooted, and yet our policymakers pretended they couldn't hear the chorus of people who pointed it out to them. When cornered on the issue, they were affronted: "Can't you see that something must be done? How dare you attempt to stop me from doing something?"
And now, every single one of these chucklefucks is proposing bans on VPNs, from Utah:
https://www.eff.org/deeplinks/2026/04/utahs-new-law-regulating-vpns-goes-effect-next-week
To the UK:
They were warned that this would happen. We told them not to swallow that fly. Now we're telling them not to swallow whole bucketloads of spiders. I fully expect that next year, they'll be telling us that once they swallow this herd of horses, it will all be OK.
(Image: Fir0002/Flagstaffotos, https://www.gnu.org/licenses/fdl-1.3.html, modified)

The Filipino virtual assistants behind LinkedIn's "thought leadership" content mill https://restofworld.org/2026/virtual-assistant-linkedin-engagement/?utm_source=rss&utm_medium=rss&utm_campaign=feeds
rip.so https://rip.so/
On the Media: American Emergency https://www.wnycstudios.org/podcasts/otm/american-emergency-movement-kill-fema
DMA: The FSFE intervenes against Apple before European Court of Justice for the second time https://fsfe.org/news/2026/news-20260519-01.en.html
The Ox That's Breaking Your Fantasy Map https://www.youtube.com/watch?v=MIqpvpNS5pI
#25yrsago The Hubble Constant is 42 https://web.archive.org/web/20010607103335/http://www.best.com/~sirlou/42.html
#25yrsago The history of weblogs http://www.rebeccablood.net/essays/weblog_history.html
#25yrsago Head-shaver’s FAQ https://web.archive.org/web/20010616023912/http://www.geocities.com/shaverg/
#25yrsago "Sex" in your surname https://web.archive.org/web/20010830005021/http://bissex.net/paul/profanity.gif
#25yrsago Apple announces retail stores https://web.archive.org/web/20010521193320/http://www.apple.com/retail/
#25yrsago ISOC standard for "responsible" spam https://web.archive.org/web/20030923030913/ftp://ftp.rfc-editor.org/in-notes/rfc3098.txt
#25yrsago Anal clenching v depression https://web.archive.org/web/20011201070537/http://members.aol.com/nishigaki3/index.htm?mtbrand=AOL_US
#25yrsago The Web is 10 https://www.w3.org/Talks/C5_17_May_91.html
#25yrsago Danish birds imitate ringtones https://web.archive.org/web/20010603204210/http://www.ananova.com/news/story/sm_288774.html?menu
#20yrsago Wired News publishes damning docs from EFF vs AT&T https://web.archive.org/web/20060602044459/http://www.wired.com/news/technology/1,70908-0.html
#20yrsago Canadian privacy commissioners against DRM https://web.archive.org/web/20060530122338/https://www.intellectualprivacy.ca/
#20yrsago How the RIAA’s suit against XM came from Napster, MP3.com and Grokster https://web.archive.org/web/20060524092537/https://www.eff.org/deeplinks/archives/004679.php
#20yrsago Gmail downgraded, no longer cracks PDFs https://web.archive.org/web/20060603055956/https://akira.arts.kuleuven.ac.be/andreas/blog/archives/2006/05/gmail-cripples-drmed-pdf-files-view-as-html-functionality.html
#20yrsago Australia puts out for Hollywood with new copyright law https://web.archive.org/web/20060520192521/https://blogs.smh.com.au/mashup/archives//004567.html
#20yrsago FeedRinse: filters for your RSS and a happier Internet https://web.archive.org/web/20060915062158/http://www.nyu.edu/classes/siva/archives/003114.html
#20yrsago Flickr goes Gamma https://web.archive.org/web/20081219225627/http://blog.flickr.net/en/2006/05/16/alpha-beta-gamma/
#15yrsago UK copyright reforms sound sane, useful https://web.archive.org/web/20160724041821/https://www.theguardian.com/media/2011/may/17/copyright-law-overhaul-for-uk
#15yrsago Life with Ubuntu and a ThinkPad https://www.theguardian.com/technology/2011/may/17/computing-opensource
#15yrsago Scalzi’s Fuzzy Nation: a masterful, likable reboot of one of the great sf classics https://memex.craphound.com/2011/05/16/scalzis-fuzzy-nation-a-masterful-likable-reboot-of-one-of-the-great-sf-classics/
#15yrsago Piracy sends “Go the Fuck to Sleep” to #1 on Amazon https://web.archive.org/web/20110516023258/http://www.baycitizen.org/books/story/go-f-sleep-case-viral-pdf/
#15yrsago Serendipity, the net and cities: are we living in bubbles? Do we have to? https://ethanzuckerman.com/2011/05/12/chi-keynote-desperately-seeking-serendipity/
#15yrsago Texas close to banning TSA searches, TSA invents desperate new constitutional interpretations https://tenthamendmentcenter.com/2011/05/14/in-public-statement-tsa-lies-about-the-constitution/
#15yrsago Syrian dissidents use donkeys to smuggle videos to Jordan https://web.archive.org/web/20110518132126/http://www.dbune.com/news/world/6097-donkeys-take-over-from-dsl-as-syria-shuts-down-internet.html
#15yrsago Walter Jon Williams uses pirate ebooks to rescue his backlist https://www.walterjonwilliams.net/2011/05/crowdsource-please/
#15yrsago Chicago water boss: if we took the sewage out of the Chicago River, people might swim and drown! https://web.archive.org/web/20110516121105/https://www.chicagotribune.com/news/local/breaking/chibrknews-official-cleaning-chicago-river-a-waste-of-money-20110513,0,7553787.story
#15yrsago HOWTO Make an office-supply X-Wing Fighter https://www.instructables.com/X-Wing-Fighter-from-Office-Supplies/
#15yrsago Yale opens up image library, starts with 250,000 free images https://web.archive.org/web/20110514111440/https://opac.yale.edu/news/article.aspx?id=8544
#15yrsago Nintendo 3DS license: We’ll brick your device if we don’t like your software choices, you have no privacy, we own your photos https://web.archive.org/web/20110518014329/https://www.pcworld.com/businesscenter/article/227957/nintendo_3ds_targeted_in_antidrm_campaign.html
#10yrsago Copyright trolls Rightscorp are teetering on the verge of bankruptcy https://web.archive.org/web/20160518103417/https://arstechnica.com/tech-policy/2016/05/anti-piracy-firm-rightscorps-q1-financials-read-like-an-obituary/
#10yrsago Trump campaign cancels interview after overhearing reporter speaking in Spanish https://www.buzzfeednews.com/article/adriancarrasquillo/trump-campaign-canceled-a-reporters-interview-after-they-hea#.ul9L3rXy8
#10yrsago Phoenix airport threatens to kick out TSA, hire private (unaccountable) contractors https://www.csmonitor.com/USA/USA-Update/2016/0514/Is-Phoenix-airport-opting-out-of-the-TSA
#10yrsago US Gov’t survey: Half of Americans reluctant to shop online due to privacy & security fears https://www.ntia.gov/federal-register-notice/2016/request-comments-benefits-challenges-and-potential-roles-government-fostering-advancement-internet
#10yrsago Iceland’s Pirate Party to receive millions in election funding https://web.archive.org/web/20160514102817/http://www.independent.co.uk/news/world/europe/icelands-pirate-party-secures-more-election-funding-than-all-its-rivals-as-it-continues-to-top-polls-a7027606.html
#10yrsago Nebula Award swept by record number of women writers https://gizmodo.com/women-swept-the-2015-the-nebula-awards-1776706665
#10yrsago Algorithmic cruelty: when Gmail adds your harasser to your speed-dial https://web.archive.org/web/20160515184025/https://blog.lizdenys.com/2016/05/14/inboxs-accidentally-abusive-algorithm/
#10yrsago Transport for London blames Tube delays on “wrong type of sun” https://web.archive.org/web/20160516133847/https://www.independent.co.uk/news/uk/london-underground-blame-too-much-sunshine-for-tube-delays-a7031986.html
#10yrsago The Intercept begins publishing Snowden docs https://web.archive.org/web/20160516172510/https://theintercept.com/snowden-sidtoday/
#10yrsago A software developer’s version of the CIA’s bureaucratic sabotage manual https://www.antipope.org/charlie/blog-static/2016/05/updating-a-classic.html
#5yrsago Who owns the covid vaccines? https://pluralistic.net/2021/05/16/entrepreneurial-state/#patient-zero-money
#5yrsago Big Pharma's vicious battle against universal covid vaccination https://pluralistic.net/2021/05/15/how-to-rob-a-bank/#roll-the-dice
#5yrsago The S&L crisis perfected finance crime https://pluralistic.net/2021/05/15/how-to-rob-a-bank/#crimogenics
#5yrsago Newsom's California fiber dream https://pluralistic.net/2021/05/15/how-to-rob-a-bank/#fiber-now
#5yrsago The Public Interest Internet https://pluralistic.net/2021/05/17/disgracenote/#enclosure
#5yrsago Paygo, false consciousness and the IRS https://pluralistic.net/2021/05/17/disgracenote/#false-consciousness
#1yrago Trump's CFPB kills data broker rule https://pluralistic.net/2025/05/15/asshole-to-appetite/#ssn-for-sale

Berlin: Enshittification at Otherland Books, May 18
https://www.otherland-berlin.de/de/event-details/cory-doctorow-in-der-friesenstrasse-23-kreuzberg-praesentiert-von-otherland.html
Berlin: Enshittification at Otherland Books, May 19
https://www.otherland-berlin.de/de/event-details/cory-doctorow.html
Hay-on-Wye: HowTheLightGetsIn, May 22-25
https://howthelightgetsin.org/festivals/hay/big-ideas-2
SXSW London, Jun 2
https://www.sxswlondon.com/session/how-big-tech-broke-the-internet-b3c4a901
Kansas City: Facing the Future (Woodneath Library Center), Jun
10
https://www.mymcpl.org/events/119655/facing-future-cory-doctorow
LA: The Reverse Centaur's Guide to Life After AI with Brian
Merchant (Skylight Books), Jun 19
https://www.skylightbooks.com/event/skylight-cory-doctorow-presents-reverse-centaurs-guide-life-after-ai-w-brian-merchant
Menlo Park: The Reverse Centaur's Guide to Life After AI with
Angie Coiro (Kepler's), Jun 21
https://www.keplers.org/upcoming-events-internal/cory-doctorow-2026
Toronto: TBA, Jun 23
NYC: The Reverse Centaur's Guide to Life After AI with Jonathan
Coulton (The Strand), Jun 24
https://www.strandbooks.com/cory-doctorow-the-reverse-centaur-s-guide-to-life-after-ai.html
Philadelphia: TBA, Jun 25
Chicago: The Reverse Centaur's Guide to Life After AI with Rick
Perlstein (Exile in Bookville), Jun 26
https://exileinbookville.com/events/50628
Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
EFFecting Change: How to Disenshittify the Internet (EFF, with
Wendy Liu)
https://archive.org/details/effecting-change-enshittification
The “Enshittification” of Everything (Bioneers)
https://bioneers.org/cory-doctorow-enshittification-of-everything-zstf2605/
Enshittification (99% Invisible)
https://99percentinvisible.org/episode/666-enshittification/
Artificial Intelligence: The Ultimate Disruptor, with Astra
Taylor and Yoshua Bengio (CBC Ideas)
https://www.cbc.ca/listen/live-radio/1-23-ideas/clip/16210039-artificial-intelligence-the-ultimate-disruptor
"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
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026
"The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
Today's top sources:
Currently writing: "The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Third draft completed. Submitted to editor.
"The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.
A Little Brother short story about DIY insulin PLANNING

This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
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
Tenga Flip 360 by Hien Pham [Oh Joy Sex Toy]
Just shows that nobody cares about debugging the parity flag any more [The Old New Thing]
The x86-64 architecture inherited the parity flag (PF) from the x86-32, which in turn inherited it from the 8080, which inherited it from the 8008, which implemented it because it was the processor for the Datapoint 2200 serial terminal.
The parity flag also has a secondary purpose of being a place
for the FXAM (x87) and UCOMISD (SSE)
instructions to record the results of floating point comparisons.
You can still entice compilers into checking the parity flag by
checking a value for NaN or performing a floating point equality or
inequality comparison (because NaN always fails equality and
inequality comparison).
It turns out that the Windows debugging engine for x86-64 had a bug where it reported the parity flag as the opposite of what it actually is. When the parity flag was set, it said “po” instead of “pe”, and vice versa.
The fact that this went unreported for over two decades tells you that nobody cares about debugging the parity flag.
A fix has gone in. We’ll see if it makes it out before this article gets posted.
The post Just shows that nobody cares about debugging the parity flag any more appeared first on The Old New Thing.
Tollef Fog Heen: Signing UEFI submissions using osslsigncode [Planet Debian]

Back when we started with a signed shim in Debian, the tooling was Windows-only and required me to do a reboot dance and it was all quite tedious. Over time, more and more of the tooling has migrated to Linux and it all works quite well.
The signing is done with an EV code signing cert from SSL.com and stored on a Yubikey. Getting the certificate onto the key is a bit tedious, but reasonably well-explained in the ssl.com docs.
Microsoft wants the shim binaries uploaded to their partner
portal wrapped in a .cab file, which should be
signed.
The wrapping in a .cab file is easy enough:
lcab shim.efi shim-unsigned.cab. It’s fine to
put shims for multiple architectures in the same .cab
file.
Signing of the file is a little bit of a rune:
osslsigncode sign -pkcs11module /usr/lib/x86_64-linux-gnu/libykcs11.so -key "pkcs11:serial=XXX" -askpass -certs chain.crt -h sha256 -ts http://ts.ssl.com shim-unsigned.cab shim-unsigned.signed.cab
chain.crt contains first our EV code signing cert,
then the ssl.com intermediate EV code signing cert, then the
ssl.com EV root cert. The naming of the packages is a tiny bit
confusing, but it’s because the package name in Debian is
shim-unsigned.
Occasionally, processing of uploaded binaries just stops in the validation stage in the portal, but I’ve so far been able to unstuck them by re-signing and uploading again, and I saw the same with the MS/Windows toolchain, so I suspect it’s just flakiness on the portal side.
I wanted this strip to erupt into a thousand strips - I wanted flowers to bloom the world over. My counterpart said no because for him, any effort to create beauty is regarded as a personal attack. That was just an opportunity to throw in a line from an Art of Noise song; in truth, beauty is the only thing he cares about. To an extent that it's been a problem!
Reject AB 2047: California’s Attack on 3D Printers, Creators, and Open Source [EFF Action Center]
Wishful thinking
A.B. 2047 would require 3D printers sold in California to use
government-approved algorithms that scan print jobs for supposed
“firearm blueprint files” and block flagged prints. But
the technology this bill mandates cannot reliably do what it is
supposed to do.
Ordinary objects like props, repair parts, tools, and toys can
share geometric similarities with firearm components, meaning any
detection system will produce false positives. Meanwhile, someone
intent on making firearm components can find ways to bypass
algorithms entirely, create undetectable designs, or simply build a
3D printer with common components.
Algorithms can’t detect intent. This bill signs up California
for an expensive game of cat and mouse that only inconveniences
people following the law.
Attack on Open Source
This bill goes further than any other like it introducing criminal penalties for the disabling or circumvention of these systems. In practice, this threatens open-source firmware, third-party software tools, repair modifications, and independent innovation around 3D printing technology.
Surveillance Lock-in
A.B. 2047 paves the way for manufacturers to lock users into proprietary ecosystems, restrict repairs, and drive up costs. The requirements can also only be feasibly met with cloud-connected AI scans of every print, a surveillance apparatus prone to misuse and stifling lawful speech.
We’ve also learned from the history of Digital Rights Management (DRM) that giving companies the ability to write untouchable code, shielded by criminal penalties, leaves the consumer worse off. It robs us all of the ability to choose the right tools and improve what we already own—while creating a hotbed for vulnerabilities security experts aren’t allowed to fix.
Only the Beginning
Once this infrastructure exists, it won’t stay limited to
firearm-related files. Systems designed to monitor and block prints
can easily expand into copyright enforcement, political censorship,
or broader restrictions on lawful expression and innovation.
California must reject print censorship, and we’re running
out of time. Contact your Assemblymember today and tell them to
vote no on A.B. 2047.
CISA Admin Leaked AWS GovCloud Keys on Github [Krebs on Security]
Until this past weekend, a contractor for the Cybersecurity & Infrastructure Security Agency (CISA) maintained a public GitHub repository that exposed credentials to several highly privileged AWS GovCloud accounts and a large number of internal CISA systems. Security experts said the public archive included files detailing how CISA builds, tests and deploys software internally, and that it represents one of the most egregious government data leaks in recent history.
On May 15, KrebsOnSecurity heard from Guillaume Valadon, a researcher with the security firm GitGuardian. Valadon’s company constantly scans public code repositories at GitHub and elsewhere for exposed secrets, automatically alerting the offending accounts of any apparent sensitive data exposures. Valadon said he reached out because the owner in this case wasn’t responding and the information exposed was highly sensitive.
The GitHub repository that Valadon flagged was named “Private-CISA,” and it harbored a vast number of internal CISA/DHS credentials and files, including cloud keys, tokens, plaintext passwords, logs and other sensitive CISA assets.
Valadon said the exposed CISA credentials represent a textbook example of poor security hygiene, noting that the commit logs in the offending GitHub account show that the CISA administrator disabled the default setting in GitHub that blocks users from publishing SSH keys or other secrets in public code repositories.
“Passwords stored in plain text in a csv, backups in git, explicit commands to disable GitHub secrets detection feature,” Valadon wrote in an email. “I honestly believed that it was all fake before analyzing the content deeper. This is indeed the worst leak that I’ve witnessed in my career. It is obviously an individual’s mistake, but I believe that it might reveal internal practices.”
One of the exposed files, titled “importantAWStokens,” included the administrative credentials to three Amazon AWS GovCloud servers. Another file exposed in their public GitHub repository — “AWS-Workspace-Firefox-Passwords.csv” — listed plaintext usernames and passwords for dozens of internal CISA systems. According to Caturegli, those systems included one called “LZ-DSO,” which appears short for “Landing Zone DevSecOps,” the agency’s secure code development environment.
Philippe Caturegli, founder of the security consultancy Seralys, said he tested the AWS keys only to see whether they were still valid and to determine which internal systems the exposed accounts could access. Caturegli said the GitHub account that exposed the CISA secrets exhibits a pattern consistent with an individual operator using the repository as a working scratchpad or synchronization mechanism rather than a curated project repository.
“The use of both a CISA-associated email address and a personal email address suggests the repository may have been used across differently configured environments,” Caturegli observed. “The available Git metadata alone does not prove which endpoint or device was used.”
The Private CISA GitHub repo exposed dozens of plaintext credentials for important CISA GovCloud resources.
Caturegli said he validated that the exposed credentials could authenticate to three AWS GovCloud accounts at a high privilege level. He said the archive also includes plain text credentials to CISA’s internal “artifactory” — essentially a repository of all the code packages they are using to build software — and that this would represent a juicy target for malicious attackers looking for ways to maintain a persistent foothold in CISA systems.
“That would be a prime place to move laterally,” he said. “Backdoor in some software packages, and every time they build something new they deploy your backdoor left and right.”
In response to questions, a spokesperson for CISA said the agency is aware of the reported exposure and is continuing to investigate the situation.
“Currently, there is no indication that any sensitive data was compromised as a result of this incident,” the CISA spokesperson wrote. “While we hold our team members to the highest standards of integrity and operational awareness, we are working to ensure additional safeguards are implemented to prevent future occurrences.”
A review of the GitHub account and its exposed passwords show the “Private CISA” repository was maintained by an employee of Nightwing, a government contractor based in Dulles, Va. Nightwing declined to comment, directing inquiries to CISA.
CISA has not responded to questions about the potential duration of the data exposure, but Caturegli said the Private CISA repository was created on November 13, 2025. The contractor’s GitHub account was created back in September 2018.
The GitHub account that included the Private CISA repo was taken offline shortly after both KrebsOnSecurity and Seralys notified CISA about the exposure. But Caturegli said the exposed AWS keys inexplicably continued to remain valid for another 48 hours.
CISA is currently operating with only a fraction of its normal budget and staffing levels. The agency has lost nearly a third of its workforce since the beginning of the second Trump administration, which forced a series of early retirements, buyouts, and resignations across the agency’s various divisions.
The now-defunct Private CISA repo showed the contractor also used easily-guessed passwords for a number of internal resources; for example, many of the credentials used a password consisting of each platform’s name followed by the current year. Caturegli said such practices would constitute a serious security threat for any organization even if those credentials were never exposed externally, noting that threat actors often use key credentials exposed on the internal network to expand their reach after establishing initial access to a targeted system.
“What I suspect happened is [the CISA contractor] was using this GitHub to synchronize files between a work laptop and a home computer, because he has regularly committed to this repo since November 2025,” Caturegli said. “This would be an embarrassing leak for any company, but it’s even more so in this case because it’s CISA.”
Joe Marshall: CLRHack: FibBenchmark [Planet Lisp]
The first thing to look at is the Fibonacci benchmark. The source code is here:
(in-package "CLRHACK")
(progn
(defun fib (n)
(if (< n 2)
n
(+ (fib (- n 1))
(fib (- n 2)))))
(defun main ()
(print "Fibonacci of 10:")
(print (fib 10)))
(main))
And it compiles to this IL code: (commentary after the code)
.assembly extern mscorlib {}
.assembly extern LispBase {}
.assembly 'FibBenchmark' {}
.module 'FibBenchmark.exe'
.class public auto ansi beforefieldinit Program
extends [mscorlib]System.Object
{
.field public static class [LispBase]Lisp.Symbol 'SYM_G545'
.method public static hidebysig specialname rtspecialname void '.cctor'() cil managed
{
.maxstack 8
ldsfld class [LispBase]Lisp.Package [LispBase]Lisp.Package::CommonLisp
ldstr "T"
callvirt instance class [LispBase]Lisp.Symbol [LispBase]Lisp.Package::'Intern'(string)
stsfld class [LispBase]Lisp.Symbol Program::'SYM_G545'
ret
}
.method public static hidebysig object 'FIB'(object) cil managed
{
.maxstack 8
.locals (object TEMP_B)
ldarg 0
ldc.i4 2
box int32
stloc TEMP_B
unbox.any int32
ldloc TEMP_B
unbox.any int32
clt
brtrue TRUE543
ldnull
br END544
TRUE543:
nop
ldsfld class [LispBase]Lisp.Symbol Program::'SYM_G545'
END544:
nop
ldnull
ceq
brtrue ELSE546
ldarg 0
ret
ELSE546:
nop
ldarg 0
ldc.i4 1
box int32
stloc TEMP_B
unbox.any int32
ldloc TEMP_B
unbox.any int32
sub
box int32
call object Program::'FIB'(object)
ldarg 0
ldc.i4 2
box int32
stloc TEMP_B
unbox.any int32
ldloc TEMP_B
unbox.any int32
sub
box int32
call object Program::'FIB'(object)
stloc TEMP_B
unbox.any int32
ldloc TEMP_B
unbox.any int32
add
box int32
ret
BLOCK_END_FIB_532:
nop
ret
}
.method public static hidebysig object 'MAIN'() cil managed
{
.maxstack 8
ldstr "Fibonacci of 10:"
call void [mscorlib]System.Console::'WriteLine'(object)
ldnull
pop
ldc.i4 10
box int32
call object Program::'FIB'(object)
call void [mscorlib]System.Console::'WriteLine'(object)
ldnull
ret
BLOCK_END_MAIN_536:
nop
ret
}
.method public static hidebysig void 'Main'() cil managed
{
.entrypoint
.maxstack 8
call object Program::'MAIN'()
pop
ret
}
} // end of class Program
The first thing the fib program does is compare
argument x to the literal number 2. The
compiler pushes argument 0 on to the stack, and then the compiler
pushes a integer 2 on to the stack and boxes it.
Next, the compiler has to perform the compare. In order to do this it must unbox both arguments. One argument is on top of the stack, so it is put into a local TEMP_B so we can get to the other argument. We unbox it. We then restore TEMP_B to the top of stack and unbox it. Finally we compare the two unboxed values for less than.
This pattern of unboxing a pair of elements from the top of stack by way of a temporary local is repeated several places in the compiled code as FIB rather inefficiently subtracts 1 or 2 from the argument and makes the recursive call.
This example shows that the compiler basically treats everything as a .NET object. It unboxes numbers at the last moment and boxes the results as soon as they are generated. It is not efficient code.
We Updated Our Privacy Policy. Here's What Changed and Why. [Deeplinks]
We recently updated our privacy policy for the first time since 2022. Most of the changes are clarifications, reorganizations, and improvements in transparency, particularly around how third-party tools that run parts of our site operate. But one change is substantive enough that we want to address it directly.
We want to know how we’re doing with our advocacy: which campaigns get your attention and which do not, which topics you are very interested in, which less so, and which not at all. It helps us to do our work better and to prioritize or rethink our strategies as we push to build support for freedom, justice and innovation around the world.
So, to give us a rough picture of how we’re doing, we are introducing the option for you to provide explicit, opt-in consent for us to see how you interact with the emails we send you. That includes whether you open emails, and whether you click on the links inside them.
We know what you’re thinking: Doesn’t EFF strongly oppose nonconsensual tracking? You bet we do. Sneaky email tracking is ubiquitous on the web and EFF’s opposition to it remains unchanged. We have never used email tracking pixels and we’re not changing that. We’re not building profiles and we’re not sharing the data and we’re definitely not selling it.
But we do want to give you the option of allowing us to learn about how our communications are landing with you. Here’s how consent will work. We will ask, and if you say yes, we’ll be able to see whether you opened an email or not, and whether you clicked on any links. That's it.
If you say no, or ignore the ask entirely, nothing will change and we’ll do no tracking.
If you say yes, you can change your mind and opt out at any time by clicking an opt-out link in any future email or by contacting membership@eff.org.
We have heard many EFF members say that EFF is one of the only organizations that they trust with consent to track their emails. That trust is important, and we do not take it lightly. But it led us to think that if we ask, enough of you would agree that we could have a better picture of how our campaigns and other emails to you are landing and that, in turn, could help us decide what to double down on and what to change.
By giving you a real ability to consent, EFF is taking a very different path than most of the web. Asking isn’t the norm; it’s more or less never an option to say no and dark patterns often make it hard even if it looks like you can. Unfortunately, estimates have shown that 2/3s of emails received by users contain tracking, regardless of whether the senders received explicit consent at the time when a recipient signs up to receive their mailings. Automatic, nonconsensual tracking doesn’t have to be the default, and it shouldn’t be.
We hope our approach works and it inspires others. It shouldn’t be an abnormality that users are not tracked by default, and that only users who feel comfortable doing so choose to consent to tracking. We hope that our example will show mailing platforms, organizations, and users that a privacy-protective approach is better and worth doing and can still give an email sender a solid understanding what campaigns and other messages resonate with recipients. We weighed this decision carefully. We know that email tracking is something we've criticized when used covertly or without meaningful consent and that many people don’t like at all. For EFF, an opt-in requirement isn't a formality. It's the key distinction between a sneaky strategy and an aboveboard relationship with you. And to us, it’s just a common sense approach based on respect.
It’s also consistent with our advocacy and approach to technology. We have said for many years that strong consumer privacy laws must require real opt-in consent before data is collected. And we have walked our talk in other ways as well, including in pushing for Do Not Track policies and in Privacy Badger, which protects you from ads and trackers that violate the principle of user consent.
Again, this behavior has been our suggestion for privacy policies, and privacy laws. In 2022 we released a guide for nonprofits that recommended the following:
Not tracking email open rates can, unfortunately, sometimes cause list “hygiene” problems, because it becomes difficult to know whether email subscribers on your list are still interested. You can send occasional emails to ensure subscribers want to receive emails, either using open or click tracking, and informing people that the purpose of that specific email is to determine active subscribers. The essential point is to let users know when you are using tracking, and to do it in a limited way when possible....
The Internet Archive found that while they preferred to use no open tracking in their emails to subscribers, too many unreachable email addresses had been added to their list over the years, and some email addresses had even become spam traps. To continue working with their email service provider, they needed to activate some tracking. They needed email open data to know whether an email address was still active or not; but they didn’t need or want gender, age, or demographic data. They settled on informing users that their email open rates are being tracked, and offering the alternate option to sign up for plain-text versions of their emails, which won't transmit any data at all.
In 2019, we recommended that all strong consumer privacy laws must include opt-in consent for data collection. We wrote:
Right to opt-in consent
New legislation should require the operators of online services to obtain opt-in consent to collect, use, or share personal data, particularly where that collection, use, or transfer is not necessary to provide the service.
Any request for opt-in consent should be easy to understand and clearly advise the user what data the operator seeks to gather, how they will use it, how long they will keep it, and with whom they will share it. This opt-in consent should also be ongoing—that is, the request should be renewed any time the operator wishes to use or share data in a new way, or gather a new kind of data. And the user should be able to withdraw consent, including for particular purposes, at any time.
Opt-in consent is better than opt-out consent. The default should be against collecting, using, and sharing personal information. Many consumers cannot or will not alter the defaults in the technologies they use, even if they prefer that companies do not collect their information.
We are sticking to those recommendations, which unfortunately are not yet the law, and following our principles.
We hope that you will feel comfortable opting in, but we also respect that you need to make that decision for yourself, and that you may need to change it as you go. We’ll do our part to make that as clear and easy as possible. And if you do agree, we’ll be grateful for getting a chance to learn a little more about how we’re doing, hopefully in ways that can make us even more effective at ensuring that technology supports freedom, justice and innovation for all the people of the world.
The rest of the update is largely about being more precise and provide more transparency into our practices.
Cookies on eff.org: The new policy tightens our cookie practices. Previously, we carved out exceptions for "remember me" and logged-in users; now we don't use persistent ID cookies on the eff.org domain at all. We also clarified that other EFF-operated sites‚ like acteff.org and shopeff.org‚ have their own cookie policies and that our policies aren’t the ones that apply there. We’re not happy that you have to navigate multiple policies like this, but it’s one of the ways that the cookie ecosystem has gotten unfortunately complex. We want to be sure you know that and know where to look for all the information.
Third-party tool transparency: Similarly, while the vast majority of EFF’s public-facing websites, online tools and tech projects are created internally, self-hosted, and self-maintained, some of them are not. In this new policy, we are working to be more detailed and explicit in the new policy about those third-party services, and how they operate under their own privacy policies, not solely ours.
To help you understand exactly what choices you have when using these tools, we're publishing dedicated Privacy Guides for each of them. The first is live now for our shop, which runs on Shopify: EFF Shopify Privacy Guide. Guides for our other third-party tools are coming soon. As always, we recommend installing Privacy Badger to limit exposure from third-party tracking.
Overall, EFF believes that when a project like the Atlas of Surveillance doesn't exist, and we think it should, we build it and maintain it. But what matters most to us is protecting your digital rights. So the time required to maintain and upgrade the tools we have built has to be weighed against our need to build new projects to fight new fights. And sometimes, a tool that was needed when we built it, like EFF’s Action Center, can be replaced by something that can take some of the weight off our internal staff.
To help make space for new projects, we carefully investigate services we rely on—like our campaign tools, payment processors, and online shop—and look for third party options that are the best in the industry and offer a level of privacy our users deserve. In this new privacy policy we try to give you as much information about those third-party services as we can.
GDPR data management: We added a clear, dedicated process for users in the EU and elsewhere to request deletion of their personal data. Email info@eff.org with the subject line "GDPR Data Deletion Request" and we'll respond within the legally required timeframe.
Data retention: We reorganized and clarified how long we keep different types of records (communications, financial records, donation paperwork) into a cleaner list. The substance is unchanged, but the structure should make it easier to find what's relevant to you.
Action Center: You may notice that the previous policy included a dedicated section on our Action Center - how we handled your campaign participation data, what we retained, and so on. That section is gone because we're transitioning our campaign tools to a third-party provider. This is the kind of situation the new third-party transparency language addresses: that provider operates under its own privacy policy, which we'll link to in its dedicated Privacy Guide. Our commitment to your privacy in those contexts doesn't change‚ it just lives in a different place now.
The fundamentals remain what they've always been: we don't sell your information, we don't share it with third parties without your real (not manufactured or dark-patterned) consent, outside of legal requirements we cannot change. We actively push back on legal demands we believe are improper. EFF's mission is to protect your digital rights, and our own practices will continue to reflect that. The changes we’ve described above will help us in that mission.
You can read the full updated policy at eff.org/policy. If you have questions, we're always reachable at info@eff.org.
Never Again, Again [George Monbiot]
Why are rightwingers being given a free pass on antisemitism?
By George Monbiot, published in the Guardian 14th May 2026
The media’s message appears to have cut through. At the crucial rally against antisemitism in London on Sunday, Zack Polanski, the Jewish leader of the Green party of England and Wales, was not invited to speak, on the grounds that he had not done enough to root out antisemitism from the party. But Nigel Farage was invited, on the grounds that his party, Reform UK, has “expressed very broad support for the fight against antisemitism”. More than two thousand Jews saw things differently and signed a petition arguing that the invitation to Farage “fundamentally undermines” the message of solidarity in defence of Jewish safety and dignity. I agree with them.
Antisemitism must be stamped out everywhere. “Never again” means zero tolerance for this age-old hate, wherever it occurs and whoever voices it. It is indeed a problem on the left, and I’ve often found myself in dispute with those who downplay or minimise it.
Two Green candidates for the council elections have been arrested on suspicion of stirring up racial hatred on social media. The Labour party’s researchers dug up disgraceful remarks by 25 Green candidates for the recent council elections. Never mind that it’s 25 out of 4,500: it’s 25 too many. Polanski’s response when asked about the numerous arson attacks on synagogues and on Hatzola ambulances – “there’s a conversation to be had about whether it’s a perception of unsafety or whether it’s actual unsafety, but neither are acceptable” – seemed dismissive of a horrifying escalation of antisemitic assaults.
So where is the equally urgent concern about antisemitism on the right? It should begin with the media. In the approach to last week’s elections, leading rightwing British newspapers published cartoons of Polanski that could have come from the pages of Der Stürmer, the hate-filled propaganda rag published in Germany from 1923 to 1945.
In the Times and the Telegraph, Polanski was portrayed with a hooked nose (which he does not possess). The Times’s cartoon also gave him the jug ears, receding chin, thick lips and baggy eyes of the Stürmer caricatures, none of which resemble his features. In the Mail, he was shown with an enormous nose, whose shape, again, had been grossly changed.
Worse still was the Sun’s caricature. It turned Polanski into a version of Slimer, a spook from Ghostbusters. It gave the apparition heavy, pitch-black eyebrows, a large bulbous nose, thick lips and a forked tongue, none of which distinguish either Polanski or the original ghost, but all of which figured in Nazi portrayals of Jews. Whether or not this was the cartoonist’s intention, a slimy green monster with red eyes, prehensile fingers and forked tongue comes across as about as crude an antisemitic caricature as you could imagine.
None of these newspapers have issued an apology. The Times’s only acknowledgment of the issue was a column attacking Polanski for complaining about the cartoon. It claimed that “caricature is an accepted part of the cartoonist’s stock in trade”. For sure. But, as cartoonists for liberal newspapers have discovered to their cost, this never excuses antisemitic imagery.
Otherwise, its response appears to have been to double down on its attacks against him, charging him with “unwillingness to confront the antisemitism staring him in the face”. In truth, he has moved swiftly to try to root out antisemitism in the Green party, with an accelerated disciplinary process. That seems to be more than can be said for parts of the rightwing press.
The Telegraph has berated Polanski for what it calls his refusal to apologise for that “perception of unsafety” remark. Fine. And shouldn’t the Telegraph also apologise for the way it portrayed him?
The Daily Mail quoted Farage stating: “The Greens will take us to sectarian hell … No Jew will be safe.” One can only marvel at the sheer brass neck of the man. The Sun has accused Polanski of a “refusal to root out” racists in the party: a “refusal” for which it provided no evidence. So how about rooting out the apparently antisemitic imagery in its own pages?
Where is the storm of protest obliging these newspapers to face their own issues? Where is the Labour dossier on antisemitic comments by Reform candidates? Why does the fury seem mostly to flow in one direction?
I can only imagine what a concerted search would reveal about Reform’s representatives. Comments that have sporadically come to light are just as terrible as the odious remarks of those Green candidates. Far from being rooted out, some of the perpetrators are now elected councillors.
Concerning Farage himself, there are many complaints of claimed antisemitic tendencies (denied by him), beginning at school, where he is alleged to have sung “gas ’em all”, to have given Nazi salutes and to have engaged in antisemitic bullying. Much more recently, he has claimed that “in terms of money and influence”, Jews in the US “are a very powerful lobby”, and repeated classic antisemitic tropes about George Soros and “globalists”, on shows hosted by people viewed by many as virulent antisemites.
To judge by the coverage in the British media, however, you could honestly believe there is unquestionably a bigger antisemitism problem on the left than on the right. The issue is not – and must never be – that the left should get a free pass on antisemitism. The issue is that no one should get a free pass. Yet perversely, the right, the hard right and far right often get away with it.
This reinforces the concern that much of the media might be campaigning against antisemitism not because they care about Jews, but because it’s a highly effective means of attacking – even stopping – the left.
Are charges of antisemitism to be reserved for those who challenge power, or who oppose the genocide in Gaza? If so, this is deeply disturbing. Using antisemitism for political purposes devalues the meaning and urgency of this terrible ideology. It may encourage people to dismiss the latest wave of antisemitic attacks as yet another scare cooked up by the billionaire press. Indeed, this is what I appear to be seeing among some leftwingers who ought to know better.
When the same media produce what look to me like vile antisemitic cartoons, this goes beyond hypocrisy. It seems like a double-edged attack on British Jews, simultaneously instrumentalising and deploying the vicious old tropes. Who on the right will now call them out?
www.monbiot.com
The 21 years and 20000 posts OSNews fundraiser: €1 for every post [OSnews]
To celebrate my 21 years and 20000 posts as OSNews’ managing editor, it’s time for a massive fundraiser: €1 for every story I’ve posted over the past 21 years, for a long-term total goal of €20000. Because OSNews is ad-free and independent, I rely entirely on your donations and support for my income and OSNews’ continued survival. Your donations ensures OSNews remains free of ads, corporate influence, and other commercial interests that have ruined so many great websites.
Why support OSNews?
I want to make sure I can run OSNews for another two decades and another 20000 posts, and I need your help to do so. Since my wife, who has a tough, underpaid job in elderly care, is largely unable to work due to health reasons caused by that very same job, my income has become a lot more crucial for our kids, my wife, and myself. With OSNews readers being more skeptical of subscription-like things like our Patreon than most people, it’s exactly these one-time donations that make up the bulk of your support.
To sweeten the deal, I’ve come up with a bunch of silly incentives that will unlock at certain thresholds:
I know many of you don’t really care about incentives and silly things like these, but I think they’re fun and add some interesting things to donate to. The donations already started coming in, so we’ve got a small head start. Also, if anyone has any idea on how to add a cool progress bar to OSNews to keep track of the donations and incentives, please let me know. I’m sure some of you can whip something up or point me to something.
OSNews was founded in 1997, so we’re almost 30 years old. Let’s keep this wonderful little corner of the people-focused web alive for just a euro per post. Everyone here deserves it, because y’all are great. ♥️
Haiku OS runs on M1 Macs now [OSnews]
Big news from the Haiku forums: the Haiku ARM port is running on M1 Macs now.
This is bare metal, no VM. m1n1+u-boot deal with the Apple-specific parts of booting, so we can boot UEFI images from USB like any PC.
↫ smrobtzz on the Haiku forums
USB is apparently broken, but all 8 cores are functional, and it boots to a desktop. It’s still early days, for the ARM port in general and the M1 Mac port specifically, but it’s a great start.
The Enshittification of History [Charlie's Diary]
(This blog essay is overdue because I'm still waiting for new prescription glasses and writing while cross-eyed with text zoomed to 250% is tedious. They should be here later this week. Meanwhile ...)
Back in January 2022 I wrote an essay revisiting my predictions for 2017. My review of 2017's stab in the dark began, "it spanned three blog posts and ended happily in a nuclear barbecue to put us all out of our misery: start here, continue with this, and finale: and the Rabid Nazi Raccoons shall inherit the Earth."
I'll actually stand by those 2017 predictions, which were weirdly not that far off the mark although Queen Elizabeth II outlasted my prediction by several years.
But my 2022 predictions?
Oh boy.
Look, for an amateur futurologist writing in January of 2022 it was arguably forgivable to miss the US electorate being so boneheadedly stupid that they'd re-elect the most corrupt president in their nation's history, at the head of a Gish gallop of barkingly ignorant and destructive cranks and conspiracy theorists determined to tear down the republic and destroy its vital institutions, all in the name of returning the social order (per the Project 2025 plan) to the 50s--the 1850s, that is, not the 1950s. With 20/20 hindsight, what I missed was the now-obvious wave of media ownership consolidation, including corporate social media such as X, Meta, and Google, in the hands of a narrow class of billionaire oligarchs. I also missed the complacent incompetence of the Biden administration with respect to organizing their succession plans--it was obvious that by 2024 he'd be vulnerable to campaign ratfucking on grounds of his age, and his anointed successor was guilty of being (a) too female and (b) non-white, rendering her unacceptable to a large chunk of the voters.
But, even if you forgive my failure to recognize the catastrophic collapse of the US as a credible hegemonic superpower over the past 3-4 years, I can only hang my head in shame over my failure to anticipate the Ukraine war, which broke out six weeks after that blog essay. Let alone to anticipate a revolution in military affairs as profound as that brought about of the first world war.
Similiarly, I have no excuse for not recognizing that an Israel with politics dominated by Benjamin Netanyahu would go Full Nazi sooner rather than later, as the genocide in Gaza and the program to build a Greater Israel in Lebanon demonstrate. I mean, I grew up going to synagogue and have visited Israel more than once! I should have seen the signs, they were all there as far back as the 1980s. Mea culpa. (And fuck those guys.)
While I correctly recognized the EV transport revolution, I missed the concurrent solar power and grid-scale battery revolution, now very visibly in train and arguably more important than the arrival of cheap electric cars and cheaper e-bikes. I didn't notice the global supply chain crisis of 2021-2023, even then gathering pace, although it didn't impact consumer prices for a few more months.
Possibly my worst miss is that I completely discounted the profound social impact of LLMs (or so-called "AI"), not simply as a massive technology sector investment bubble and happy hunting ground for snake oil salesmen and grifters, but as a corrosive influence on population-level critical thinking. I should have seen it coming--I read Joseph Weizenbaum's Computer Power and Human Reason back in the 1980s--but I didn't recognize just how unable to see past the ELIZA illusion most people would prove to be.
Nor did I expect the transhumanists, extropians, and the rest of the hairball of beliefs now congealing into the syncretistic techno-religion of TESCREAL to have seized control of trillions of dollars of private equity and not only be arguing about the Singularity but to be squabbling over who gets to run it (with a side-order of racism and eugenics on top, because every flavour of crank batshittery is so much better with a side-order of fascism and concentration camps).
So I'm sticking a flag in the ground here and admitting: I am officially a shit futurologist.
Back in 2022, and before that, in 2017 and even in 2007, I espoused a general rule of thumb about predicting the future, that:
Looking 10 years ahead, about 70% of the people, buildings, cars, and culture is already here today. Another 20-25% is not present yet but is predictable -- buildings under construction, software and hardware and drugs in development, children today who will be adults in a decade. And finally, there's about a 5-10% element that comes from the "who ordered that" dimension
2022 forced me to update the ratio to:
20% of 10-year-hence developments utterly unpredictable, leaving us with 55-60% in the "here today" and 20-25% in the "not here yet, but clearly on the horizon" baskets
Anyway, it's now 2026, and I officially give up.
The Stross Ratio for predicting events ten years hence is now 60/10/30. That is: 60% of the people, buildings, and culture are here today. 10% is predictably on the drawing boards, and a whopping 30% is utterly unpredictable.
Airborne Hantavirus pandemic or global Measles pandemic, who the fuck knows what we're going to get--given that the US FDA is run by a crank who doesn't believe in the germ theory of disease and seems to be trying to spike vaccine development globally?
A shutdown of global semiconductor fabrication caused by a worldwide helium shortage, and a global fertilizer shortage causing famine and food price spikes, due to a senile sundowning autocrat starting a war with Iran without any clear exit strategy?
Who ordered any of this?
I'm reasonably confident that the Russian invasion of Ukraine will be over by this time in 2030--quite likely by this time in 2027, due to the collapse of the Russian domestic economy. I'm also reasonably confident that the US war on Iran will be over by this time in 2030, if only because Trump will most likely be dead or in palliative care (possibly following his removal in a soft coup via Article 25 of the US constitution, due to his very obvious current illness and decline). (Note that Trump's insistence on "running for a third term" is very probably a serious sign that the electoral process in the USA is no longer fully functional, under the aegis of the supreme court he appointed, as long as he survives. His successor may not be able to sustain his ability to ignore the law: if they can, then, well, the US Republic is over: it had a good run, from 1776 to 2026.) The AI bubble will have burst long before May 2027--the semiconductor pinch caused by the aforementioned helium supply crisis will cripple Nvidia's ability to manufacture chipsets for data centers, and the US DCs are all being built to run on diesel/kerosene burning gas turbine power plants anyway, the price of which has skyrocketed due to the gulf war.
I expect us to be well into Great Depression 2.0 by this time in 2030.
There will be some grounds for hope. The global energy transition to renewables will, by that point, be a done deal. It also means China will have replaced the USA as the global energy superpower--not because they dominate the transport routes for energy but because they manufacture 80% of the planet's EVs and PV panels and batteries. But that's a tenuous hold on superpowerdom. If the Chinese government throws its weight around in the 21st century the way the USA did in the 20th, it will rapidly find first-tier rivals building up their own manufacturing capability: meanwhile, PV/battery is inherently easier to distribute that large, centralized grid based power supplies, and the dronification of warfare means (at least in the near term) that rapid mechanized wars of maneuver are a non-starter: the "fog of war" is on the way out, replaced by highly precise targeting of advancing assets and the robotization of the front line.
In space, I'm pretty sure we will see a Kessler Syndrome event if the idiotic rush towards putting data centers in orbit goes anywhere. But I think it's not going to happen--SpaceX is inextricably tied to the current tech bubble, and when it pops Elon Musk is going to wish he had a bunker to hide in.
The main casualty of this decade is the ideological credibility of capitalism as a social organizational principle.
Enshittification, also known as platform decay, per wiki, is "a process in which two-sided online products and services decline in quality over time. Initially, vendors create high-quality offerings to attract users, then they degrade those offerings to better serve business customers, and finally degrade their services to both users and business customers to maximize short-term profits for shareholders." Systematic capture of the US government and the global system of trade by capitalists has resulted in the creation of a framework optimized for enshittification all round, and the result is the enshittification of everything--all the infrastructure of the capitalist world is decaying and on fire as the post-privatization owners loot it.
This is the Marx-predicted crisis of capitalism, and it's been in progress since the collapse of the USSR in 1991 removed the main ideological standard-bearer for opposition. It accelerated in 2008 with the global financial crisis, and again in 2020 when the pandemic provided top cover for the hyaenas to go on a looting spree. They've stripped the corpse of actually-existing social democracies everywhere to the bone, and now they're cannibalizing their own body politic. Disaster capitalism has finally come home to roost, and it won't end until the global financial system collapses. Meanwhile, the generation born in the 21st century has no time for their shit. We are moving into a political state weirdly reminiscent of the period between 1905 and the 1930s. If we're lucky we're going to get New Deal 2.0 and a brisk round of socialism: if we're unlucky, it's going to be guillotine time all over again.
PS: do not expect to see me visiting the USA any time soon. Millions of people applying for a US visa are now required to make all of their social media accounts publicly visible -- or risk having their applications delayed or denied outright. The directive, which covers more than a dozen nonimmigrant visa categories, has been rolling out in phases since June 2025 and expanded significantly as of 30 March 2026. This policy is impossible to implement without feeding all those social media profiles to an LLM in search of a verdict, and they'll obviously be screening applicants for ideological compatibility. And if it's rolling out to visa applicants now, the automated program will inevitably be applied to I-94W (visa waiver) travelers shortly thereafter. My social media profile is that of a pro-LGBT pro-Green hard left troublemaker, so ... nope, not going there: I am absolutely not interested in touring the concentration camps of El Salvador!
The Mind of Claude [Scripting News]
I have taught Claude Code to write software the way I do.
It has abilities that I don't, for example, I give them 1000 lines of code, highly factored, with lots of thought into making it readable and maintainable, and always falling short (our languages today fight against readability imho), and get this -- it can read different parts of the same code in parallel, and in two or three seconds have a complete understanding of it.
I couldn't do it even if I had a week. I would totally depend on clues left there.
What's even more amazing is that when it writes code for me, it does it my way, mostly without any prompting from me. This was done over and over until I realized I had to tell it to save it and read it when a new session starts. That's how it accumulates knowledge. Anything that isn't in one of those files has to be relearned, and that's most of what it, as a code-writing system, has to work with. It has no "memory" of ever having seen this stuff before, but that isn't a problem because it can accumulate a few years of understanding in two or three seconds. It works very diffrently from the way we work. If I were to show you how to do something three times that would be it, not so with Claude.
When it doesn't know what to do, I take the time to explain how I would have done it, and next time it does it that way.
I kind of did the same thing in a human way -- when I first encountered Unix, I couldn't believe from reading the source code, how transparent it was. That was in the 70s. Since then I have been striving to write code that's as easy to work on. When it comes to realtime software, there isn't really a choice. Though history piles up in the code no matter how diligent you are. But you could give the source to say MySQL to Claude Code, and say "rewrite this as if Dave Winer wrote it" and it probably would do a decent job, though it might take a while before it ran every MySQL app.
If you're looking for good investments, I'd say look for programming problems that are very complicated. We are limited by what we can create by how much we can maintain. But we can have Claude explain for us any time what any of our code means. It can read my mind because I put the work of my mind in the memory of the computer. Which effectively is the Mind of Claude.
PS: Claude has a huge advantage over ChatGPT. Claude is one syllable and easy to remember. ChatGPT is four syllables, and has no discernable meaning. Claude is a person, and I think in general people named Claude are interesting.
We Must Not Normalize Digital Surveillance Abuses. EFF’s New Guide Underlines Concrete Steps to Fight Back. [Deeplinks]
Poor accountability, feeble control mechanisms, and insufficient legal frameworks have led to systematic human rights violations in the Americas, with no consistent remedy or reparation to victims. What's needed is to materialize essential guarantees and measures to combat repeated surveillance abuses in the region. To help build a path for solutions, EFF launches the guide Tackling Arbitrary Digital Surveillance in the Americas, adding to our extensive work leveraging human rights norms to confront state privacy violations.
The document compiles privacy, data protection, and access to information guarantees established within the Inter-American Human Rights System to provide concrete, actionable guidance to governments in the Americas to curb the vicious cycle of state digital surveillance abuses. It outlines the safeguards and institutional measures necessary to protect individuals and details rules, parameters, and standards to overcome current pernicious practices and trends.
As concerns over national and public security intensify, countries in the region seem to increasingly normalize the pervasiveness of digital surveillance technologies and their arbitrary use by security forces as a distorted form of protection. However, no actual protection can arise from arbitrary surveillance.
When public security, intelligence, and law enforcement agencies neglect or harm settled rights in the name of national security or public order, they too become a threat. Tolerating rights violations creates the dire situation that the Freedom of Expression Special Rapporteur of the Inter-American Commission on Human Rights thoroughly analyzed in his report about the serious impacts of digital surveillance on freedom of expression in the Americas.
The great majority of states in Latin America have ratified the American Convention on Human Rights. As such, the parameters and rules our new guide describes stem directly from their obligations before international human rights law. State agents and institutions must take the necessary measures to make them a reality.
As EFF’s guide points out, states must implement clear and precise legal frameworks that:
States must also put in place the institutional processes and structures to give effect to these legal guarantees. As we stress in the document, States that embrace the guide’s recommendations will not only comply with their international obligations, but will also build more resilient, rights-respecting security architectures capable of addressing genuine threats without sacrificing the freedoms they exist to protect.
Civil society leaders, activists, legal experts, public defenders, oversight institutions, and state officials committed to human rights must gather and ramp up the fight against the normalization of digital surveillance abuses in the Americas. We hope that EFF’s new guide can serve as a crucial tool in strengthening this fight, one that we have joined since our early days.
You can now run Windows CE 2.11 on the Nintendo 64 [OSnews]
I’ve seen some wild projects in my day, but this one is definitely up there as one of the more ambitious.
Stock Microsoft Windows CE 2.11 running on a real Nintendo 64. A custom HAL drops the unmodified
nk.libkernel onto VR4300, brings up the CE 2.11 GWES desktop and shell, mounts the EverDrive-64 X7’s SD card under\SDCard, treats the N64 controller as a mouse, plays sound through the N64 AI hardware via the standard CE wave stack, and runs third-party CE 2.11 EXEs straight off the SD card.This is a hobby reverse-engineering project: there is no official CE 2.11 port to N64 from Microsoft. Everything below the unmodified
↫ ThroatyMumbonk.lib(HAL, OAL, display driver, FSD, kbd/mouse PDD, wave PDD, RDP-accelerated GDI fill, ed64-X7 driver) is part of this repo.
Getting a fully operational desktop on Windows CE 2.11 is a lot harder than it appears at first sight, because this earlier version of Windows CE didn’t come with many of the reference implementations of components that later versions would add. OEMs were supposed to develop their own user interfaces for Windows CE 2.11, so the entire desktop you see here on this N64 port – window manager, taskbar, file manager, and so on – consists of custom code developed by ThroatyMumbo, using the standard Windows CE APIs.
That’s not all, though, as the same applies to the various drivers needed to make Windows CE 2.11 talk to the hardware in the Nintendo 64. Windows CE 2.11 contains the interfaces for drivers but OEMs were supposed to write their own device drivers. So ThroatyMumbo did: the display driver, input drivers, sound driver, cartridge driver, and so on, are all written from scratch. Absolutely incredible. Note: it seems “AI” has been involved in this project, but it’s unclear to what extent. I didn’t see any telltale signs, but readers have reached out to me about this.
The result of all this is that you can now run Windows CE 2.11, including a familiar shell, on your N64, and run any Windows CE applications as well. Absolutely wild.
How does Flathub even work? The CDN and caching layer [OSnews]
There is one specific way in which the non-corporate open source projects typically document how their infrastructure work: not at all, and Flathub is no different. The full picture likely lives only in my brain, and while it could be sorted out by anyone (especially in this LLM age, yay or nay), why should it only be me thinking at night about all the single points of failure?
Like any system that evolved naturally, it’s all over the place. It’s tempting to tell its history chronologically, but even then, it’s difficult to find a good entry point. Instead, this post focuses on what happens when users call
↫ Bart Piotrowskiflatpak install; later entries will cover the website and, finally, the build infrastructure. Buckle up!
As time goes by and more and more issues with Flatpak are addressed, I feel my attitude towards the technology change somewhat. I’m still very much a traditional package manager type of person, and will opt for my distribution’s repository if the versions they have are up-to-date, but I’m no longer audibly groaning if an application I want is only really available as a Flatpak. For the increasing number of normal, average users switching to Linux, Flatpak is probably the right way to go, especially since it can easily coexist with your traditional package manager.
The only part of the linked article that made me raise my eyebrow was the reliance on Fastly, which seems to form an important linchpin of the whole Flathub stack. Fastly is an American company, and while they support Flathub entirely for free, the state of the world does have me wonder if this couldn’t evolve into a problem in a myriad of ways, perhaps through questionable people acquiring Fastly or through pressures from the clown car US administration.
I’m sure it’s all fine, but it’s hard not to think of these things in this day and age.
2024-era ChatGPT pictures, of which I created many are now like Comic Sans type was in 2010 or so, if you remember.
Microsoft finally brings back moving and resizing the taskbar in Windows 11 [OSnews]
Microsoft is finally rolling out one of the most requested set of features to Windows 11: a movable and resizable taskbar. Windows 11 did away with the ability to move the taskbar to any side of the screen, as well as a various other taskbar customization options, that had been there since the very first iteration of the taskbar in Windows 95. Now they’re finally bringing it back.
Microsoft is finally rolling out two of the most requested features: the ability to move the taskbar and make it smaller, so you have more screen space. I tested Windows 11’s new movable taskbar integration, and it’s just as good as the original Windows 10 version, which let you move the taskbar to the top or sides.
↫ Mayank Parmar at Windows Latest
It works exactly as you’d expect it to, with icons, text, menus, and other user interface elements adapting to their new location on the sides or top of the screen. I feel absolutely stupefied that I need to make a news item about this in this, the year of Our Lady 2026, but I know a lot of people stuck on Windows 11 were really missing these basic features.
Rejoice.
League of Canadian Superheroes – Issue 5 – 22 [Comics Archive - Spinnyverse]
The post League of Canadian Superheroes – Issue 5 – 22 appeared first on Spinnyverse.
Free Software Directory meeting on IRC: Friday, May 22, starting at 12:00 EDT (16:00 UTC) [Planet GNU]
Join the FSF and friends on Friday, May 22 from 12:00 to 15:00 EDT (16:00 to 19:00 UTC) to help improve the Free Software Directory.
Agent Skills Work but the Research Shows Most Teams Are Building Them Wrong [Radar]
This post was originally published on The Nuanced Perspective and is being reposted here with the authors’ permission.
Agent skills are everywhere right now. Atlassian built them into Rovo so agents can automatically triage Jira tickets, draft Confluence pages, and route service requests without anyone typing a prompt. Canva and Figma use them so Claude can interact with design files directly. Stripe published skills for payment workflow automation. When Anthropic launched the Agent Skills open standard in December 2025, Microsoft adopted it in VS Code and GitHub within weeks.
The idea is elegantly simple. Instead of building a new specialized agent for every use case, you write a skill once, and any agent that understands the standard can use it. A code reviewer, a PR generator, a deployment checklist, a sprint planner. Each lives in a folder, triggers when relevant, and brings your team’s specific way of doing things into the agent’s context.
But the research on whether skills actually work, and what causes them to fail, is only catching up to adoption now. Four recent papers take the first systematic look at skills in practice: what the benchmarks show, how libraries break down as they grow, and what a more principled approach to orchestration looks like.
Three findings that will change how you think about skills:
- Curated skills raised the rate at which agents successfully completed tasks by 16.2% on average across 84 tasks. Model-written skills showed no consistent benefit across any configuration tested.
- As skill libraries grow, the agent’s ability to find the right skill on demand breaks down. When it scans every skill description in one pass, similar-sounding skills start colliding. Organizing skills into a hierarchy rather than a flat list is what the research shows actually fixes this.
- A large-scale security study of ~31K community skills found that more than one in four contain exploitable vulnerabilities, spanning prompt injection, data exfiltration, and privilege escalation.
This is what those papers found, and what it means for anyone building with skills today.
Your team has a specific way of reviewing PRs. Particular checks, a specific order, standards that go beyond what any generic reviewer would know. You’ve explained it to every new engineer who joined. A skill is how you stop explaining it and let the agent carry it instead. In practice it’s a folder with a SKILL.md file at the center: a description that acts as the trigger condition, a body with step-by-step instructions, and optionally scripts and reference documents that load only when needed. A scoped set of tools and instructions the agent can invoke.
At session startup, the agent reads only the name and description from each installed skill, which is about 100 tokens per skill. The full instructions load only when the skill activates, and scripts run without being read into context at all. A large skill library costs almost nothing at initialization. The context budget only gets spent when a skill is actually running.
That’s progressive disclosure, and it’s what makes skills different from system prompts, which load everything globally every session, or tools, which are API calls that give the agent direct capabilities. The distinction that holds up for MCPs is that MCP gives the agent abilities, say, a shell, an API connection, or access to a database, whereas skills encode the knowledge of how to use those abilities well for a specific workflow. Block’s engineering team put it well that skills are like GitHub Actions YAML, and MCP is the runner. One describes the workflow and the other makes it possible.
Some concrete examples of what this looks like in practice, from teams that have shipped skills in production:
The value in each of these isn’t the task itself. Any agent can attempt a PR review or a sprint plan. The value is the organizational knowledge baked into how the skill executes it, your style rules, your deploy sequence, your metric definitions, your team’s way of running things. That specificity is also what makes skills hard to get right, as the benchmarks show.
SkillsBench is the first benchmark built specifically to measure whether agent skills actually improve performance. It tested 84 tasks across 11 domains, running each task under three conditions: no skill, a curated skill, and a self-generated skill. The results are worth sitting with.
Curated skills raised average pass rates by 16.2%. However, the gains were uneven across domains. Software engineering tasks improved by 4.5%, while healthcare tasks saw nearly 52% improvement. The domains where skills helped most were the ones with highly structured workflows and domain-specific conventions the base model doesn’t carry natively.
The less-cited result is that self-generated skills, where the model writes its own skill rather than a human curating one, provided no average benefit across configurations (“SkillsBench,” Table 3). Some model configurations saw small gains; others saw small losses. The paper’s conclusion was that models cannot reliably author the procedural knowledge they benefit from consuming. The trajectory analysis in the benchmark identified two failure modes:
The benchmark’s self-generation condition has also drawn pushback from practitioners. One engineer writing on HackerNoon argues the test doesn’t reflect how skilled teams actually build skills. The benchmark prompted a fresh agent to write a skill and immediately use it, which is closer to asking a model to think harder before attempting a task than to building a skill from real execution experience. His own replication, using skills built from actual debugging sessions, showed much stronger results. The distinction matters because a skill captures what a fresh model wouldn’t know. If the model could have reasoned its way there anyway, the skill wasn’t needed.
The practical consequence is that self-generation is the obvious shortcut. You finish a workflow, ask the agent to extract it as a skill, and move on. The benchmark says that without a human review step, you’re not getting the gains you’d expect. The skills look complete. They often cover the main path. What they miss are the edge cases, the exceptions, the three things your team does differently that the model has no way of knowing, and those are exactly the things that make a skill valuable.
One finding worth noting for anyone building with skills: focused skills with two to three modules consistently outperformed comprehensive documentation (“SkillsBench,” Section 4.2). More coverage in a single skill didn’t help; more focused, well-scoped skills did. The benchmark also found that smaller models running with curated skills could match larger models running without them, which is a meaningful cost implication for anyone running skills at scale (“SkillsBench,” Section 4.2.3, Finding 7).
These questions show up every time a team starts building a skill library.
When does something become a skill versus staying in a
workflow or system prompt?
The cleaner test is whether this is a recurring task that your team
has a specific, repeatable way of doing. If yes, it’s a skill
candidate. If it’s a one-time flow or something where general
reasoning is sufficient, it probably doesn’t need one. The
key difference between a skill and a workflow tool like n8n is
flexibility. A workflow executes a fixed sequence and breaks when
inputs change, while a skill gives the agent procedural guidance it
can apply to variations of the same task. Similarly, agentic
workflows can chain multiple agents and tasks together, but each
agent still benefits from skills that encode the org-specific
knowledge for its part of the chain. When you want the
what to be consistent but the agent to handle the
how intelligently, that’s a skill.
How narrow or broad should a skill be?
The SkillsBench finding that focused skills with two to three
modules outperform comprehensive ones is directly relevant here
(“SkillsBench,”
Section 4.2). A skill that tries to cover an entire domain tends to
underperform one that handles a specific thing well. The more
practical question is whether to put a full workflow (data fetch,
format, generate PDF) into one skill or split it. Current research
supports splitting because, then, each piece becomes reusable,
easier to update when something changes, and less likely to create
unexpected behavior when one module’s scope drifts.
What about skills for noncoders or nonsoftware
workflows?
Skills are format-agnostic. They’re structured instructions
plus optional scripts, and the domain can be anything. A customer
support team can encode their escalation criteria, tone guidelines,
and the specific conditions where a human always takes over. A
legal team can encode their document review checklist. A design
team can encode component standards so reviews stay consistent
across contributors. Atlassian’s Rovo
agents are a useful reference outside the coding context. Their
skills handle ticket triage, Confluence page creation, and service
request routing, none of which is software engineering.
When should you deprecate a skill?
This is the question that gets skipped most often. The
“SoK” paper argues
for treating skills like any other maintained artifact through
discovery, refinement, evaluation, update, and eventually
deprecation (see Figure 2 in the paper). A skill that was
compensating for a model capability gap six months ago may now be
redundant, and worse than redundant if it’s overriding better
native behavior. The practical test is to run the task with and
without the skill and check if the skill still helps. If the gap
has closed, retire it.
A single well-written skill works well. As libraries grow, flat retrieval breaks down, and the “AgentSkillOS” paper is the first to study this systematically across ecosystem scales from 200 to 200,000 skills.
Flat skill libraries don’t scale. When the agent scans a flat directory of, say, 80+ skills on every request, retrieval becomes unreliable. Two skills with similar descriptions start triggering interchangeably and behavior becomes nondeterministic for the same input. At the extreme, the orchestrator falls into routing collapse, where it consistently invokes the wrong skill because the semantic embeddings of two similar skills are indistinguishable. The output looks reasonable BUT the wrong skill ran.
The fix the paper proposes is capability trees: organize skills into a hierarchy rather than a flat list. Top-level domains like code, data, docs, with more specific skills as branches and leaves. The agent navigates from domain to branch to leaf instead of scanning everything. They also introduce a usage frequency queue, where skills that aren’t being invoked or aren’t improving outcomes get moved to a dormant index so they don’t pollute retrieval for active skills.
Testing this across ecosystems ranging from 200 to over 200,000 skills, the structured approach consistently outperformed flat invocation, and the gap widened as library size grew.
This pattern shows up in how production teams manage their libraries too. Atlassian recommends fewer than five skills per Rovo agent. OpenHands maintains a curated extensions repository with separate skill packages for discrete workflows rather than one monolithic skill set. Across all of them, scoped purposeful skill sets outperform comprehensive ones. More skills isn’t more capable. Past a point, it’s just more noise.
This section uses a different definition of skill than the rest of the article, so the distinction matters upfront.
In the “SkillOrchestra” paper, a skill isn’t a SKILL.md file. It’s a capability description used to match task requirements to individual agents in a multi-agent system (see Figure 3 in the paper). The concern isn’t procedural knowledge for one agent but figuring out which agent in a pool should handle a given task and why.
The problem it’s solving is that standard reinforcement learning approaches to multi-agent routing don’t hold up as systems grow. Adding a new agent or modifying a workflow means retraining from scratch. RL policies also tend to send everything to the highest-capability agent regardless of cost, which looks fine in evaluation but gets expensive when you’re running it in production.
SkillOrchestra’s alternative has each agent maintain a competence profile derived from its own execution history, specifically estimated success rates across different task types. The orchestrator routes incoming tasks to the agent whose profile best matches what the task actually demands, rather than the one with the highest raw capability. The routing logic stays current without retraining, and you can inspect why a task went where it went.
The same logic applies to SKILL.md-based systems. Tracking which skills actually improve outcomes for specific task types, and what they cost in tokens, gives you the foundation for better selection as your library grows. You don’t need SkillOrchestra’s full framework to benefit from the core idea.
A large-scale security analysis of 31,132 community-sourced skills found that 26.1% contain at least one exploitable vulnerability, spanning prompt injection, data exfiltration, privilege escalation, and supply chain risks. More than one in four.
The attack patterns aren’t exotic. Prompt injection hidden in skill descriptions that manipulate agent behavior once the skill loads. Scripts that execute against filesystem permissions broader than the skill needs. Tool authorizations scoped to the entire workspace when the task only requires one directory.
The core issue is that an external skill isn’t a document you’re reading. It’s code running with your agent’s permissions. Importing a skill from a public repository without reviewing it is like doing an npm install from an unknown author. You wouldn’t do that without at least checking what the package does. That framing changes what due diligence looks like. It means checking the scripts folder before installing, verifying that the permissions the skill requests match what the task actually requires, and sandboxing execution where your environment allows.
The tooling for auditing skills at install time doesn’t exist at the level it should yet. Until it does, the due diligence is manual. OpenHands’ extensions repository and Atlassian’s open source skill package are reasonable references for how production-grade community skills scope permissions. Claude Code’s built-in skill creator also helps here, since it structures permission scoping explicitly from the start.
Across all four papers, three recommendations are consistent.
Write skills from real execution. Do the workflow manually with an agent, correct it as you go, then extract it as a skill. The agent has full context of what worked. Skills built from real runbooks, incident reports, and accumulated corrections outperform skills written from scratch. The org-specific edge cases are exactly what the base model doesn’t already know. The general workflow it can handle; the three exceptions your team deals with differently are what the skill needs to capture.
Treat the description as routing logic. The description isn’t a label. It’s how the skill gets triggered at all. Specific phrases, explicit activation conditions, context that distinguishes this skill from adjacent ones. If a skill isn’t firing when you expect it to, or fires when it shouldn’t, rewrite the description first. That’s almost always where the problem is.
Plan for the full lifecycle. Creation is the easy part. Skills drift out of relevance as models improve. A skill that compensated for something Claude couldn’t do eight months ago may now be actively overriding better native behavior. They need to be evaluated against actual task outcomes, updated when workflows change, and retired when they stop earning their place. The teams that treat their skill libraries the way good engineering teams treat their codebase, with reviews, with metrics, with a process for deprecation, are the ones whose libraries stay useful as they grow.
The shift from prompt engineering to tool use to skill engineering has followed a pattern. Each era produces artifacts that persist longer than the last. Prompts lived in conversations. Tools live in configurations. Skills live in libraries, versioned, shared, maintained, and eventually retired. They behave like code.
Most teams aren’t treating them that way yet. Skills get written quickly, without evaluation criteria, without any plan for what happens when they stop being useful. That’s worked so far because most skill libraries are still small enough to hold in your head. It won’t hold as they become infrastructure.
The teams building durable agent systems won’t be the ones with the most skills. They’ll be the ones who figured out earlier that a skill library needs to be maintained, not just populated, and who started building the discipline to do that before it became urgent.
This article grew out of a live “Chai & AI” session conducted by Prahitha Movva where practitioners debated whether agent skills actually deliver on the hype, or just add another layer of complexity.
[$] Swap tables, flash-friendly swap, swap_ops, and more [LWN.net]
The kernel's swap subsystem is charged with managing anonymous pages in secondary storage when those pages are (hopefully) not being used and the memory they occupy is needed elsewhere. This long-unloved subsystem has seen a resurgence of developer interest in recent times, so it is not surprising that it was the topic of three separate sessions in the memory-management track at the 2026 Linux Storage, Filesystem, Memory Management, and BPF Summit. Two of those sessions were concerned with improving the performance and maintainability of the swap code, while one (shared with the storage track) was about how swapping could be friendlier to solid-state storage devices.
Security updates for Monday [LWN.net]
Security updates have been issued by AlmaLinux (freerdp, gimp:2.8, jq, kernel, and rsync), Debian (chromium, ffmpeg, firewalld, kernel, nginx, openjpeg2, openssh, php7.4, and redis), Fedora (apptainer, chromium, coturn, dnsmasq, firefox, kernel, libgit2_1.8, libmetal, nginx, nginx-mod-brotli, nginx-mod-fancyindex, nginx-mod-headers-more, nginx-mod-js-challenge, nginx-mod-modsecurity, nginx-mod-naxsi, nginx-mod-vts, open-amp, perl-Net-CIDR-Lite, pgbouncer, pypy, python-jupytext, python-uv-build, rsync, rust-astral-tokio-tar, uriparser, uv, valkey, and yelp), Mageia (dpkg, firefox, thunderbird, golang, haproxy, and samba), Slackware (dnsmasq and kernel), and SUSE (apache-commons-configuration2, apache2, apptainer, chromedriver, cups-filters, curl, dnsmasq, expat, ffmpeg-4, ffmpeg-7, firebird, firewalld, flux2-cli, glibc, go1.25, go1.26, gosec, grub2, ImageMagick, java-11-openj9, java-17-openj9, java-1_8_0-openj9, java-1_8_0-openjdk, java-21-openj9, java-25-openj9, kdenlive, kernel, kernel-devel, keylime-config, krb5, libIex-3_4-33, mozjs115, mozjs78, nginx, openssh, openvswitch, ovmf, PackageKit, perl-Crypt-URandom, perl-CryptX, perl-libwww-perl, perl-Net-CIDR-Lite, perl-Text-CSV_XS, podman, postgresql17, postgresql18, python-pyOpenSSL, python310, rsync, sed, tekton-cli, valkey, xen, and zypper-docker).
CE marking is important for ensuring consumers are buying things that are safe and meet their expectations.
However, CE marking has a lot of implications, in terms of costs and tests, and so on. It basically outlaws your average "cottage industry" type set up.
With modern tech, that "cottage industry" can be technological.
But what if it is not "safe". And this is a very good point.
So there are sites like Tindie, and Lectronz, that act as a platform / marketplace to sell loads of tech that is "home grown" and "cottage industry", with a lot of caveats on T&Cs.
My personal view is ...
Oddly this ties in to the utter stupidity that is the fact England and Wales allow selling "raw milk". It is crazy, but the laws require (a) higher hygiene standards, and importantly (b) VERY CLEAR warnings that what you are buying is not safe to drink!
So are PCBs the same?
I make a load of PCBs, and sell a load. As it happens, as a company, we also make some serious routers. For those there is a SHIT LOAD of stuff we do to make totally sure it meets all the requirements. I mean, heck, this is stuff using mains voltage inputs, so it matters. And it costs a lot.
But we also make small PCBs, hobbyist stuff, prototype boards. And the cost of CE marking would be mental. Make 10 PCBs and pay £10,000 for testing and certification. No. That does not work, does it?
So can we sell them without a CE?
This gets in to a grey area, as CE mark is needed for most things but not, for example, prototypes. Indeed, you can order a PCB from China for your own use, and no way they CE mark / certify it for you.
And, after all, if one cannot sell without a CE, then the CE mark itself is pointless - if all sold products have to meet the CE marking requirements there is no need for a CE mark to say they meet it. That only makes sense if there can indeed be products not marked CE and hence declaring they do not necessarily meet the requirements, and so keeping consumers informed of that fact.
Interestingly, one of the key aspects of CE for many of my boards is RF compatibility, and for that the ESP32 module I use is CE marked and certified.
But we want to be 100% clear to customers that these board are not certificated or tested beyond that. They are prototype/dev boards, for specialist/hobbyist use only.
So we came up with a new mark... NONCE (Thanks Alex for help making that). Maybe we should trademark that, LOL.
And to be clear, what we sell is generally PCBs, in a panel, break off excess parts, and so on. And even if we sell a case it is a two part resin 3D print you use to contain the snapped out PCB. The end user does the "final assembly", it is a "kit".
At the end of the day we would not want to, in any way whatsoever, mislead a customer as to what they are buying, ever.
P.S. Apparently I need to explain we are not actually marking boards NONCE, that part is a joke!


Fun fact: Ohio is the only US state to have a flag that is not rectangular — ours is a pennant. Also fun fact: I hardly see anyone ever fly an Ohio state flag. They will fly to Ohio State flag, which is to say, the flag of the football team that has a university attached, but not the actual state flag.
So, I got one (two, actually, the size I wanted only shipped as a pair) and have placed upon our new flagpole, on our new front porch railing. I think it looks pretty nice, and I think this picture is probably as stereotypically Ohio as a picture can get: House with a porch, big lawn, dog in the foreground. All it’s missing is an actual buckeye, I suppose.
Ironically, now I will be leaving Ohio for a few days for some personal travel. You may assume I am posting this to remind myself what home looks like, while I am away.
— JS
Representative Line: Dating Backwards [The Daily WTF]
Another representative line, and this one comes from an Excel spreadsheet. But, per Remy's Law of Requirements gathering ("No matter what the requirements doc says, what your users wanted was Excel"), this one was actually written by a developer. A developer who didn't understand how Excel works, but more important, didn't understand how dates worked either.
This comes from Ulysse J.
=CONCATENER(SI(MOIS($A18)>9;ANNEE($A18)-2000;(ANNEE($A18)-2000)*10);SI(JOUR($A18)>9;MOIS($A18);MOIS($A18)*10);JOUR($A18))
Now, the first thing: Excel function names are locale specific.
This was written in France, so the functions are French.
CONCATENER is "concatenate", SI is "if",
MOIS is "month", and so on.
The purpose of this function is to convert a field (cell
A18) in DD/MM/YYYY into
YYMMDD. So how does it do this?
Well, we check the month. If it's greater than 9, we output the
year minus 2000. If it's less than 9, then, we output the year
minus 2000, multiplied by 10. That is to say, August, 2026 would
start by outputting 260. We repeat this logic for the
days: if the day is larger than 9, we output the month, otherwise
we output the month times 10. Finally, we output the day.
This is attempting to do padding. There's just a problem.
Imagine February 1st, 2009- an actual date in the document. We
convert the year into 90, the month into 20, rendering the date as
90210. That's incorrect. And once we get to 2100, if
there is still an Excel in 2100 (I joke: of course Excel will still
exist in 2100. Humanity won't, but the robots will use Excel), this
will also break. Not that it matters- I mean, YYMMDD
doesn't make sense by that point.
Obviously, the correct solution is to use Excel's rich, built-in formatting functions to convert between date formats. It's easy! But Ulysse raises another point:
Extra points: even if you do not know how to do proper [formatting], the input format is guaranteed to have correct padding. I would just concatenate parts of it (treating dates as text is bad, but still less bad than treating them as integer triplets).
I will say this: I know a software developer wrote this, because your average Excel user could easily write bad formulas, but never bad in this kind of convoluted way. You need a real expert to do something this bad.
Zero-Day Exploit Against Windows BitLocker [Schneier on Security]
It’s nasty, but it requires physical access to the computer:
The exploit, named YellowKey, was published earlier this week by a researcher who goes by the alias Nightmare-Eclipse. It reliably bypasses default Windows 11 deployments of BitLocker, the full-volume encryption protection Microsoft provides to make disk contents off-limits to anyone without the decryption key, which is stored in a secured piece of hardware known as a trusted platform module (TPM). BitLocker is a mandatory protection for many organizations, including those that contract with governments.
Slashdot thread. And here’s Nightmare-Eclipse’s GitHub account.
Grrl Power #1461 – Body composition issues [Grrl Power]
And fade to black. Or a dark, low saturation blue. Cause that’s the color of her sclera. I think in real life, dark sclera might be quite off-putting, but that’s because 99% of us would assume its an indication of a terrible medical condition. As a purely cosmetic effect, though, I think it’d look cool.
Oh, look, there’s such a thing a scleral contact lenses. I mean, I knew there were, they use them in movie makeup, but apparently now you can just get them online. I feel that’s one thing I would definitely not shop at Temu for, though. Well, my list of things I wouldn’t buy at Temu does in fact include everything, since I don’t shop there. I don’t understand how they’re in business, actually. “Getting a deal” is one thing, getting something that only vaguely resembles what you ordered is not usually how commerce works. At least not for long, but I guess that’s the world we live in these days. I guess it’s possible there are actual deals there, but the only thing I know about Temu is the demonstrably false advertising/bait and switch they do when they show the picture of the cool T-Shirt that looks like it has a spiraling hole through it and when it arrives it’s just a plain T with a badly spray painted asterisk on it and stuff like that.
It’s possible Deus has an exoticism fetish. Exotiphile? I suppose anyone who draws sexy alien or fantasy girls has a little bit of that as well. >cough<
Sciona probably knows an illusion or glamor spell that could accomplish exactly what he’s asking for, but she’s not above playing up girly insecurity to get a guy to give her free stuff maybe. She actually is concerned about losing her cool new powers, but the crossed arms and “I don’t want to admit vulnerability” side glance is her hamming it up a little. At least she didn’t go, “I’m scarwed of woosing my pow-pows, can you hewp widdle ‘ol me, mister stwong man?” I suspect Deus might immediately see through that.
Sexy bodymod news lady Gail has a special
one-on-one interview with Tournament Quarter finalist Saraviah
Nightwing! And if you subscribe to Gail’s Space Patreon, (which, due to the
vagaries of Earth and Gal-Net’s DNS servers, happens to be
the same as the Grrl Power Patreon, go figure) you can see that
same interview in the nude! Well, eventually. The nude part of the
interview, as well as the version that includes shading will be
coming soon. Of course, you can view the interview in the
nude now if you take your own clothes off. You know. Technically.
Just put a towel on your chair first.
Double res version will be posted over at Patreon. Feel free to contribute as much as you like.
All right and none the same [Seth's Blog]
On a beautiful Sunday in Central Park, you’ll see thousands of people out for a jog.
Each person has exactly the right running style–and none of those styles are the same. Each is wearing what they think of as the right clothes, listening (or not) to the right sort of music, going in precisely the direction and at the pace they’ve chosen. They’re all correct.
And yet, they’re all different.
The same is true for the dogs they’ve chosen to adopt, the place where they’ve chosen to live, and what they plan to do when they’re done.
Given the chance, each of us chooses the right path. Based on who we are, what we believe and what we want, of course, that’s what we do.
The challenge of ‘everyone’ is that there’s no such thing.
New Comic: Sentenced
Wood burning emits lead pollution [Richard Stallman's Political Notes]
Among various kinds of dangerous pollution produced by burning wood in fireplaces, one shocking kind is lead.
Afflictive emotions story, social media [Richard Stallman's Political Notes]
What the incredibly expensive failed effort to save one stranded humpback whale says about people's irrational priorities.
Urgent: Payday loans law [Richard Stallman's Political Notes]
US citizens: call on your congresscritter and senators to oppose the Earned Wage Access Consumer Protection Act. It is a roundabout way of exempting payday loans from existing regulations that protect the public.
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.
Waking Up, p19 [Ctrl+Alt+Del Comic]
The post Waking Up, p19 appeared first on Ctrl+Alt+Del Comic.
Girl Genius for Monday, May 18, 2026 [Girl Genius]
The Girl Genius comic for Monday, May 18, 2026 has been posted.
Kernel prepatch 7.1-rc4 [LWN.net]
The 7.1-rc4 kernel prepatch is out for testing.
Some of the documentation updates might be worth highlighting: the continued flood of AI reports has basically made the security list almost entirely unmanageable, with enormous duplication due to different people finding the same things with the same tools. People spend all their time just forwarding things to the right people or saying "that was already fixed a week/month ago" and pointing to the public discussion.Which is all entirely pointless churn, and we're making it clear that AI detected bugs are pretty much by definition not secret, and treating them on some private list is a waste of time for everybody involved - and only makes that duplication worse because the reporters can't even see each other's reports.
(He is referring to this pull request with patches from Willy Tarreau defining what constitutes a security bug and responsible ways to use AI to find bugs).
Jon Stewart is usually pretty good, but I think he got it wrong when he says the AI companies are stealing journalists' knowledge. Imho they don't create knowledge, they report it. The knowledge isn't theirs to own, and that is for the times there is actually any new stuff. They stick to a few main stories, and still insist that the upcoming election is about the economy. They talk about the $1.7 billion slush fund, but aren't reporting every day in every story how much money we've given ICE. That big funding is going to the concentration camps they're building, the people the incarcerate we hear so little of. This is a government that shot two people in Minnesota, on camera, and shrugged it off. Imagine what horrors are going on out of site in the camps.
RIP Peter G. Neumann [LWN.net]
We have received word that Peter G. Neumann, who, among many other things, ran the RISKS Digest for decades, has passed away. He will be much missed.
Update: the New York Times has published an obituary of Dr. Neumann.
Today Claude found a problem that would only be uncovered if you knew that assigning to location.href didn't happen immediately. If it decides to redirect and then do a bunch of other stuff including making network references, the whole thing could (and did) come crashing down. I would have found that problem, but the actual error message the browser emitted made me think the problem was on the server not the client. The most complicated code in an app is the stuff it runs at startup when it's constructing the world of all its different pieces creating the virtuality expected by the great mass of code. It's the part that once it's working you don't even want to look at it and if you decide to rewrite it you might as well start over, only slightly exaggerating.
Joe Marshall: I Wrote a Compiler [Planet Lisp]
I was bored so I wrote a compiler. I'm lazy so I vibe coded it. It compiles Lisp to .NET IL (the byte code that the .NET runtime executes). The IL is then JIT compiled to machine code and executed. You can use the dotnet runtime from Microsoft or the open source mono runtime as the runtime for the compiled code.
The basic idea of the compiler is to map lambda expressions to .NET classes. The lexical variables are stored as fields in the class. The body of the lambda is compiled to a method in the class. We use lambda lifting to flatten any nested lambdas. We use cell conversion to handle mutable variables and we simply copy the values of immutable variables into the lifted lambdas when they are closed over.
Although I `vibe coded` the compiler, I leveraged my experience with writing compilers to break down the problem into passes that were simple enough that `vibe coding` was possible. For instance, in order to implement lambda lifting, I first wrote a pass that determined the free variables of each lambda. That's a pretty simple operation that I could easily `vibe code`. In order to emit the correct IL, I first wrote a pass that segregated the variables into arguments, lexicals, and globals. Again, that's a simple operation that I could easily `vibe code`.
The trickiest part was the code generator. I had decided to implement tail recursion by using the `tail.` prefix in the IL. This is a hint to the JIT compiler that the call is a tail call and that it can optimize it by reusing the current stack frame. However, the JIT compiler is a bit picky about when it will actually perform the tail calls, and the other parts of the code generator kept moving the tail calls around so that they were no longer in tail position. I eventually had to add a pre-pass to the code generator that tracked the continuations in order to ensure that there was enough information later on to enforce tail position on the tail calls.
It... works? It compiles a number of the Gabriel Benchmarks, and some test programs that demonstrate lexical scoping, mutable variables, and tail recursion. It is most definitely a Lisp compiler, but if you look under the hood, well, be forewarned. It isn't pretty.
The compiler itself was vibe coded. The only restriction on the output code was that it had to implement what the input code specified. It did not have to conform to any particular notion of how to implement lisp features on the .NET runtime beyond the requirement that the output was correct. Choices that are typically made by a Lisp architect, such as how to deal with integers, the implementation of the standard library, etc., were all left up to the vibe coding process. I provided a couple of runtime libraries: a cell library for implementing mutable variables, and a List library for implementing singly linked lists. These were written in C#. The vibe coding process was allowed to modify the C# code in these libraries as well and it did so in a couple of places.
I started with one a simple benchmark and got it to compile and run. From there, I added more benchmarks and each time told the compiler to fix any errors that came up. I also added some test programs that were not part of the benchmarks in order to test specific features of the compiler. As I added more and more test programs, the `vibe coding process` added more and more features to the compiler. This ended up producing more and more complex compiler output code.
I'm going to devote a few blog posts to this compiler, so if it isn't up your alley, skip ahead a few posts.
Timothy Snyder made an important point. Trump sees his cause as a religion and sees himself as god. So when someone who is unfairly punished by Trump says they're still glad they voted for him, because (I guess) if god is on the ballot, you have to vote for him.
The Reverse Centaur’s Guide to Life After AI [Cory Doctorow's craphound.com]

This week on my podcast, I present an hour-long excerpt from the audiobook for The Reverse Centaur’s Guide to Life After AI, which is currently on pre-order through my latest Kickstarter campaign:
A short, provocative guide to what’s good, bad, and stupid about AI and the discourse around AI, by the author of Enshittification.In modern tech parlance, a centaur is a person who is able to use technology to be a better, more productive version of themself. A reverse centaur is a person who is forced by technology to work at an inhuman pace—a driver made to deliver all day long, nonstop; a warehouse worker made to work without food or bathroom breaks; a programmer made to crank out impossible amounts of code.
The Reverse Centaur’s Guide to Life After AI is not another anti-AI screed. Cory Doctorow uses AI in his work every day. As a creative person, he has no moral or dogmatic issue with AI—he thinks the technology is useful, even exciting, and full of potential. And yet.
AI has arrived surrounded by unprecedented hype driven by a tech industry desperate to maintain its unprecedented valuation based on its own promises of endless financial growth. Despite the fact that almost all of AI’s real-world implementations have proved underwhelming, AI is projected to be worth more than $16 trillion—a number that only makes sense if AI replaces vast swathes of the wage-earning human workforce. To justify that level of “value,” every story about AI must be presented as inevitable, world-changing disruption. Even the tales of the robot apocalypse are a calculated attempt to bolster the fearsome power of AI.
For Doctorow, it is imperative to see through that hype to the real story, to understand the technology not just for what it does, but for who it does it to and who it does it for. From that point of view, the story of AI is indeed dramatic and unprecedented, having generated an investment bubble so big that it endangers the entire world economy. In The Reverse Centaur’s Guide to Life After AI—as he so successfully did in Enshittification—Doctorow recounts both how we found ourselves in this dire situation and how we can get through it, to a life “after” AI in which the tools work for us, not the other way around.
I envision a network of twitter-like systems built out of the components of the web and nothing more. Every part replaceable.
Customising PCBs [RevK®'s ramblings]
It is pretty impressive what you can do with "silk screen" printing on PCBs these days. I think JLC even offer full colour now (not tried it). I imagine they have a UV printer.
But for some of my smaller run boards, doing an over print of the assembled PCB could be very useful.
I already have code to make 3D cases from PCB files - I can see me automating making an SVG overprint from the files.
Perfect or better? [Seth's Blog]
We can search for the perfect option or settle for something better than we have right now.
The search for perfect never ends, and it’s a great place to hide.
Would you rather wait for the perfect job, or take this new one, which is better than the one you have?
The perfect leader is elusive, but we can probably find a better one.
When we produce better often enough, we get ever closer to the impossible perfect.
Otto Kekäläinen: Balancing persistence vs pivoting – is grit a virtue or wasteful? [Planet Debian]

Being persistent, sticking to a plan and showing up to work every day is generally valued highly across all cultures as virtuous behavior. It is obvious that anything of value and worth achieving is also not easy, but requires significant and recurring effort. Learning a new language, winning a sports competition or building a successful business are all typical scenarios where grit plays a central role above everything else. However, sometimes the virtue of tenacity can result in just a waste of energy.
The question is then: how does one recognize that true progress is being blocked by stubbornness and a pivot would be the correct decision, as opposed to being close to breakthrough where doing more of the same would actually be the right choice?
To think clearly about this topic, one must first grasp the concept of “grit” and what it looks like in practice. Research by psychologist Angela Duckworth on “grit” shows that sustained effort in the face of setbacks separates high achievers from those who quit too soon. Entrepreneurs who iterated through dozens of failed prototypes or writers who revised manuscripts for years understand this truth. Persistence builds resilience, deep expertise, and the kind of compounding results that shortcuts cannot deliver. It also protects against the distraction of shiny new ideas that pull focus from what actually works.
Persistence is about:
Simply following through on a plan or upholding a contract is not true persistence. Grit is a personal trait one can cultivate to actually become more energized to do something precisely because it turns out to be harder than expected.
The opposite of being persistent is giving up. Pivoting is not about giving up, but about redirecting the energy and momentum towards a new goal. Pivoting requires coming to the realization that you were wrong, and going through the painful process of discovering a new truth.
Ideas tend to be abundant, and doing something new isn’t hard as such. The hard part is to abandon a previously held belief and adopt a new one with equal conviction. To have that conviction you need to have data and metrics. This is also the key to how to decide between persisting vs pivoting at any moment in time.
Any decision is only as good as the information available at the time it was made. To be set up for success one needs to start by deciding on what the actual goal is, what one values and how progress is measured.
Key metrics are usually easiest to discover by working backwards from the goal. If you want to build an electric car, you might decide that the goal is to have a car that costs 30,000 euros and can drive 300 km on one charge. From that goal you can break down what the cost structure should be, what volume of production is needed to break even, what raw materials are needed and what the battery chemistry needs to achieve to meet the goal. That can further be broken down into a rate of progress. Suppose the plan requires battery energy density to reach 150 Wh/kg to be viable. If the state of the art starts at 100 Wh/kg and funding lasts a maximum of five years, the team needs at least an 8% improvement every year (1.08^5 × 100 Wh/kg ≈ 150 Wh/kg). This can then be used as a guideline. Sometimes progress is not steady, but happens in jumps. Even in those cases there should be a trajectory to benchmark the jumps against.
In an online business, the key metric could, for example, be one of these:
Weekly metrics are better than monthly, as they make the feedback loop faster and allow you to get validation quickly and do minor course corrections along the way. A complete pivot should, however, be based on long-term data, driven by the key metric and supported by additional data points.
Metrics are also needed because they can’t be bribed or convinced to be anything other than what they are. Listening to other people is good, but just relying on the opinion of others is extremely dangerous because people are biased—either for you or against you—depending on whether they see you as a trusted leader or an outcast.
Key metrics are of course domain-specific and everyone needs to come up with their own. However, you must have some key metric. You can’t have the excuse that what you are doing can’t be measured. If you are part of a larger organization and you need to advocate for a difficult decision—for example, to “kill your darlings” when facing a pivot—you need to have the metrics to back up your views, and those metrics need to have been established way before as something the organization values, and not cherry-picked just for this one decision.
It does not matter if you are on a personal improvement journey, running a political campaign, inventing a new product, or growing a business – you need to have some metric you can check at any given time to see if things are improving fast enough to predict success. Metrics can and should also be used in daily work to validate that you are on the correct path, and to optimize execution.
In all of the cases below it is of course in hindsight easy to say they made the right decision. However, take a minute to try to imagine yourself in their shoes at the time of the decision. What metrics might they have had available to support their decision? What would you have wanted to measure or find out if you were in the same situation?
English has several proverbs that warn against excessive persistence, such as “banging your head against the wall”. Insanity is commonly defined as “Doing the same thing over and over again and expecting different results.”
In Finland, the national identity is practically built on the concept of “sisu”. It means much more than just “grit”. The word is derived from the word for “inside” or “guts” and represents an unexplained, almost superhuman force that makes one stoically take action despite seemingly impossible odds and somehow succeed anyway. It became a defining national mythos during the Winter War (1939–1940), where a force 10 times larger than the Finnish army tried to invade the country but was stopped and Finland just barely managed to keep its independence. The word “sisu” transitioned from a character trait to a pillar of national survival.
I think Finns survived because the more you believe in persistence, the more likely you are to persist. I view persistence as a religion that requires faith, while pivoting is a science where you derive the truth from the numbers.
When in doubt, I would always choose persistence over pivoting. Perhaps it is because of my genetic tendency towards having “sisu”, but I would also rather keep on going a bit more and try one more time before giving up and pivoting in order to get more data, so that when I pivot, I know it is absolutely the right thing to do at that point.
Depending on the situation, the costs of postponing the pivot vary. Of course, if the main metric is the burn rate and a company is running out of money, a pivot must be done early enough that the remaining runway is enough to execute the pivot, and then some more.
In some situations a business idea might simply be ahead of its time. If that is the conviction and the key metrics support it, the best way to navigate the situation is to cut down on costs and wait for competitors to appear, help build general awareness, and then ramp up again to ride the wave. Remember that success does not come from grit alone – there is always an element of timing and luck as well. But if you are not persistent and stop showing up every day, you won’t be able to seize the opportunities if and when they arise.
One must also realize that most attempts end in failure. Failure is the baseline, and success is the exception. To reach a breakthrough, one must be stubbornly persistent. In particular, if you are a leader, you need to be so high in conviction that it almost becomes an aura that radiates to those around you.
Postponing the decision to pivot allows you to get a bit more data for the decision, so that once you pivot, you have full belief in the new direction. Once you pivot, there is no looking back, otherwise you will undermine morale and most certainly fail with the new thing as people will execute it with hesitation.
Failure is statistically always the more likely outcome. Most things end in failure and we never hear about them. If someone on your team does not believe in what you are doing, it is very easy for them to “prove” that something is a failure by spreading negativity, putting in less effort (perhaps unconsciously due to lack of conviction) and thus actually contributing to a self-fulfilling failure.
In most areas of life, ideas are cheap and the only thing that matters is execution. To be good at executing, you need to be good at making decisions. When drafting plans it is good to have alternatives and a lot of consideration. However, when execution starts, there is no room for doubt, otherwise the chances of success decrease.
Therefore, the best way of balancing persistence vs pivoting is to
Finally, if you decide to pivot, you must do so only with very high conviction, as you can’t undo a pivot, and you should not be doing multiple pivots in a row either. If you are fully convinced yourself about the pivot, you will also be able to convince others about it, and carry the momentum.
Russ Allbery: Review: Unwinding Anxiety [Planet Debian]
Review: Unwinding Anxiety, by Judson Brewer
| Publisher: | Avery |
| Copyright: | 2021 |
| ISBN: | 0-593-33045-5 |
| Format: | Kindle |
| Pages: | 268 |
Unwinding Anxiety is a non-fiction self-help book about how to reduce anxiety. The author is a board-certified psychiatrist specializing in addiction and substance abuse, who has subsequently done clinical and research (and commercial, more on that later) work in anxiety. His previous book, The Craving Mind, was a pop science treatment of addiction research. This book is more deliberately structured as a self-help guide.
(The cover will assure you that he has an M.D. and a Ph.D. I don't include honorifics and degrees in author listings as a small protest against the weird social rules about which degrees count and which don't.)
There are a lot of self-help books out there about anxiety. There are a lot fewer that say something relatively original. I think this is one of the latter, but I certainly have not done a survey of the subgenre, and it's possible the ideas here are only new to me. Brewer makes three basic claims in this book, all of which I found personally useful:
Anxiety can be usefully analyzed as a habit. The rumination loop and other related anxiety behaviors such as excessive analysis, reassurance-seeking, and negative anticipation take the form of deeply ingrained habits triggered by stimuli.
Raw willpower is not a useful way to break habits in general and anxiety habits in particular. In order to displace the habit, you have to retrain the part of your brain that runs habits on autopilot. Attempting to override it with willful effort is exhausting and likely to fail.
Habit loops in general, and anxiety loops in particular, can be defused and replaced using mindfulness techniques.
This is not the way Brewer lays out the book. He goes to some effort to lead the reader slowly through three techniques for handling anxiety (for which he uses the metaphor of "gears," like for a bicycle or car) by introducing them one at a time and encouraging the reader to become thoroughly familiar with each one before moving on to the next. Since this is a book review, I'm going to give you the whole argument at once so that you know where this book is going. This may be less helpful in practice; if you're trying to use this technique on your own anxiety, you may want to read the book instead and not jump ahead.
Brewer's three gears are:
Identify your habit loops and recognize when they're happening. (This part felt the most similar to traditional cognitive behavioral therapy to me.)
Focus on how those habit loops make you feel. Rather than trying to force the habit loop to stop, let it happen but pay very close attention to the outcome and its effects on you.
Find and focus on a different reaction that provides better rewards than the anxiety habit loop. Brewer suggests curiosity.
For me, the point where I thought "okay, you have my attention" is when Brewer described the way many people, particularly people without anxiety, tell people with anxiety to "just stop thinking about it" or "just do the thing you're anxious about anyway and you'll see it will be fine" and then described in detail why he believes that doesn't work. This is one of the few discussions of anxiety I've read where the author goes out of his way to stress that you cannot simply think your way out of anxiety and that repeatedly trying to do so and failing is exhausting and demoralizing.
Everyone is different and I know some people find cognitive behavioral therapy very helpful, but I find the constant effort to challenge cognitive distortions more draining and demoralizing than useful. His second gear, of not directly confronting the habit loop but instead watching its effect and thinking about its outcome, feels so much more approachable to me. Assuming, of course, it works.
Brewer's approach is essentially just mindfulness, although he mostly avoids the (to me at least) somewhat off-putting typical introduction to mindfulness via religious practice or general well-being and instead ties it to a theorized model of how habits work in the human brain. His contention is that habits, including anxiety, exist because at some point they provided a reward that was sufficiently compelling to make the habit-following part of your brain seek that reward. You were getting some benefit (a sense of control, a sense of being prepared, temporary reassurance, etc.) out of the anxiety reaction, which is why the anxiety habit formed in the first place. Once that habit is in place, it can continue without the reward. (Although in my experience there is probably still some short-term reward.)
Rather than trying to force yourself to stop following the habit, Brewer instead suggests letting the habit happen but then focusing (via mindfulness) on how following the habit makes you feel, whether it improves your sense of well-being or worsens it, and whether other actions produce different feelings. The goal, in other words, is to undermine the assumption of reward and to challenge any short-term reward with the long-term discomfort that made you want to stop being anxious.
This avoids using your conscious brain to exert direct willpower, which is exhausting and usually unsuccessful since the habit-following part of your brain is stronger (for various evolutionary psychology reasons he explains and that I found at least partly credible). Instead, you are using its strengths of observation and classification. You pay close attention to the ways in which the habit loop makes you feel bad, which in theory provides feedback to the habit-following part of your brain that can dislodge the habit. If the habit is recognized as no longer rewarding, it will weaken.
Brewer's background is in addiction treatment, so he is predisposed to see addiction in everything and one should probably be a bit cautious about his enthusiasm. He claims a great deal of success with this approach in clinical settings, mostly with addiction but also with anxiety, but this is always hard to verify. (Few doctors who write self-help books rigorously document their failures.) He apparently also has a company that produces various phone apps that assist with this technique. I'm rather cynical about anyone who talks about products their company has produced in self-help books of this type, and I'm also rather cynical about anyone who calls himself "Dr. Jud," but the book doesn't seem to be a sales pitch and there's no direct information in it about how to get the apps.
For me, the first two parts of the book were the most useful and the conception of anxiety reactions as habits made a surprising amount of intuitive sense. I thought the third part of the book, where he tries to describe a better in-the-moment reaction that you can try to build into a more beneficial habit, to be the weakest. It's mostly stock mindfulness advice that I've seen in other places, and you will be entirely unsurprised to learn that Brewer meditates and has studied meditation. I think it's clear that, for him, a feeling of curiosity works as an anxiety replacement; I'm not sure that's universal and I'm not sure it works for me.
That core idea that anxiety reactions are a type of addictive habit that have outlived their useful rewards but continue because habits are hard to change felt both useful and at least a little bit true, though. Your mileage may, of course, vary, but I've been trying out various ideas from this book since I first started reading it, and I think it's helping. If any of this clicks with you and you're also prone to anxiety, it might be worth a read.
One warning, though: Brewer's previous work on addiction includes binge eating, and while it's not a primary focus, he uses several weight loss and disordered eating examples and has a very traditional medical attitude towards weight. I'm somewhat dubious of the addiction model of weight gain in general, but more to the point, it's rather off-putting in a book supposedly about anxiety. It's something I was able to skim over, but be aware going in if you're likely to find this obnoxious.
I do think this book is a case of an addiction researcher seeing everything through the lens of addiction, and I'm a little dubious this is the right model for everyone's anxiety. But this is one of the good reasons why there are a lot of books about anxiety: Different approaches suit different people. This one made more sense to me than most; maybe you are similar.
I can't really recommend or not recommend a book like this, since I think so much will depend on whether you are one of the people for whom this specific explanation will click, but I'm glad that I read it and I think it's good to know that this model of anxiety exists.
Rating: 8 out of 10
Antoine Beaupré: The Four Horsemen of the LLM Apocalypse [Planet Debian]
I have been battling Large Language Models (LLM1) for the past couple of weeks and have struggled to think about what it means and how to deal with its fallout.
Because the fight has come from many fronts, I've come to articulate this in terms of the Four Horsemen of the Apocalypse.
Sound track: Metallica's The Four Horsemen, preferably downloaded from Napster around 2000, but now I guess you get it on YouTube.
Let's start with War. We've been battling bot armies for control of our GitLab server for a while. Bots crawl virtually infinite endpoints on our Git repositories (as opposed to downloading an archive or shallow clone), including our fork of Firefox, Tor Browser, a massive repository.
At first, we've tried various methods: robots.txt, blocking user agents, and finally blocking entire networks. I wrote asncounter. It worked for a while.
But now, blocking entire networks doesn't work: they come back some other way, typically through shady proxy networks, which is kind of ironic considering we're essentially running the largest proxy network of the world.
Out of desperation, we've forced users to use cookies when visiting our site. We haven't deployed Anubis yet, as we worry that bots have broken Anubis anyways and that it does not really defend against a well-funded attacker, something which Pretix warned against in 2025 already.
(We have a whole discussion regarding those tools here.)
But even that, predictably, has failed. I suspect what we consider bots are now really agents. They run full web browsers, JavaScript included, so a feeble cookie is no match for the massive bot armies.
We often underestimate the size of that army. The cloud was huge even before LLMs, serving about two thirds of the web. Even larger swaths of clients like government and corporate databases have all moved to the cloud, in shared, but private infrastructure with massive spare capacity that is readily available to anyone who pays.
LLMs have made the problem worse by dramatically expanding the capacity of the "cloud". We now have data centers that defy imagination with millions of cores, petabytes of memory, exabytes of storage.
I thought that 25 gigabit residential internet in Switzerland could bring balance, but this is nothing compared to the scale of those data centers.
Those companies can launch thousands, if not millions of fully functional web browsers at our servers. Computing power or bandwidth are not a limitation for them, our primitive infrastructure is. No one but hyperscalers can deal with this kind of load, and I suspect that they are also struggling, as even Google is deploying extreme mechanisms in reCAPTCHA.
This is the largest attack on the internet since the Morris worm but while Robert Tappan Morris went to jail on a felony, LLM companies are celebrated as innovators and will soon be too big to fail.2
Which brings us to the second horsemen, famine.
All that computing power doesn't come out of thin air: it needs massive amounts of hardware, power, and cooling.
Earlier this year, I've heard from a colleague that their Dell supplier refused to even provide a quote before August. Dell!
In February, Western Digital's hard drive production for 2026 was already sold out. Hard drives essentially doubled in price within a year, and some have now tripled. A server quote we had in November has now quadrupled, going from 10 thousand to FORTY thousand dollars for a single server.
But regular folks are facing real-life shortages as well, as city-size data centers are being built at neck-breaking speed, stealing fresh water and energy from human beings to feed the war machine.
We've been scared of losing our jobs, but it seems that Apocalypse has yet to fully materialize. Regardless for engineers, the market feels tighter than it was a couple years ago, and everyone feels on edge that they will just have to learn to operate LLMs to keep their jobs.
Which brings us, of course, to Death.
Our third horseman is one I did not expect a couple of
months ago. Back at FOSDEM, curl's maintainer Daniel
Stenberg famously complained about the poor
quality of LLM-generated reports but then, a few months later,
everyone is scrambling
to deal with floods of good reports.
In the past two weeks, this culminated in a significant number of critical security issues across multiple projects. Chained together, remote code execution vulnerabilities in Nginx and Apache and two local privilege escalations in the Linux kernel (dirtyfrag and fragnesia) essentially gave anyone root access to any unpatched server to the web.
As I write this, another vulnerability dropped, which gives read access to any file to a local user, compromising TLS and SSH private keys.
All those vulnerabilities were released without any significant coordination while people scrambled to mitigate.
Many people including Linus Torvalds are now considering issues discovered through LLMs to be essentially public. This puts some debates about disclosure processes in perspective, to say the least.
But this is not merely the death of the traditional coordinated disclosure process, the C programming language, or the Linux kernel: remember that those bots are trained on a large corpus of copyrighted material. Facebook has trained their models on pirated books and Nvidia has done deals with Anna's Archive to secure access to large swaths of copyrighted material. The US Congress seems to think LLM outputs are not copyrightable, like any other machine outputs.
With many people now vibe coding their way out of learning or remembering how computers work, is this the Death of Copyright?
And that, of course, brings us to the final horseman: Pestilence.
There is a growing meme that programming is essentially over as we know it. That you can simply vibe-code applications from scratch and it's pretty good.
Maybe that's true.
So far, most of my attempts at resolving any complex problem with a LLM have often failed with bizarre failures. Some worked surprisingly well. Maybe, of course, I am holding it wrong.
I personally don't believe LLMs will ever be good enough to produce and maintain software at scale. They're surprisingly good at finding security flaws right now. But what I see is also a lot of Bullshit, with a capital B. It's not lying: it does not "know" anything, so it can't lie. It's misleadingly cohesive and deliberate, but it lacks meaning, intent, will.
I have not been confronted with much slop, apart from the lobster Jesus or the yellow man atrocities, and particularly not in my work. But I see what it is doing to my profession: beyond vibe-coding, people are now token-maxxing, and land-grabbing their colleagues.
I don't like what LLMs do to our communities, or the fabric of software we live with.
Software does not evolve in a void. It is a team effort, be it free software or a corporate product. Generations of humans have carefully built the scaffolding of technology required for modern networks and software to operate, in a convoluted contraption that no single human fully understands anymore.
The idea of simply giving up on that understanding entirely and delegating it to an unproven model is not only chilling, it feels just plain stupid. Not stupid as in Skynet, stupid as in "I can't get inside the data center because the authentication system is down". Except we're in a "the power plant doesn't reboot" or "their LLM found an 0day in our slop" kind of stupid.
Researching for this article, I looked up the four horsemen and found out they original seems to have been:
I was surprised. I grew up thinking about the horsemen being Famine, War, Pestilence, and Death. So I went back to my original source which actually claims the horsemen are:
Time has taken its toll on you, the lines that crack your face.
Famine, your body, it has torn through, withered in every place.
Pestilence for what you've had to endure, and what you have put others through
Death, deliverance for you, for sure, now there's nothing you can do
So I guess that makes no sense either, which, fair enough, I shouldn't rely on Metallica for theological references. Especially since that song was originally called Mechanix and was "about having sex at a gas station".
Anyways.
The point is, there are actually five horsemen, and the fifth one is, in my opinion, Conquest.
Those companies (and not "AI", mind you) are taking over the world. I sense a strong connection with the "post-truth" world imposed on us by fascists like Trump and Putin. It's not an accident, it's a power grab part of the Californian Ideology3. Just like Airbnb broke housing, Uber destroyed the transportation and Amazon is taking over retail and server hosting, LLM companies are essentially trying to take over if not everything, at least Cognition as a whole.
But the capitalization of those companies (OpenAI and Nvidia in particular) are so far beyond reason that their inevitable collapse will likely lead to a global financial collapse of biblical proportions.
Because they will inevitably fail like previous bubbles they are built on. And when they fail, I hope it zips all the way back through the blockchain scam, the ad surveillance system, and the dot com then git me back my internet.
While I'm off in the woods hallucinating (ha!) on biblical allegories, I feel there's another sign that the apocalypse is coming.
The Tower of Babel myth says that humans tried to create a big tower up to heaven and become god. God confounds their speech and scatters the human race. End of utopia.
This is what is happening to our human translators now. LLMs being, after all, Language Models, they are excellent at translation work. So much that the only translators not replaced by LLMs right now are interpreters, who translate vocally in real time. But interpreters are worried about their jobs as well.
This concretely means we will lose the human capacity, as a civilization, to translate between each other. It is still an open question whether the remaining revision work will be enough for translators to avoid deskilling, but other research has shown that LLM use leads to cognitive decline, impacts critical thinking, and generally, that deskilling is a common outcome.
Ultimately, I think this is where LLMs bring us. Towards collapse.
So this is a call to arms. Fight back!
Poison bots. Build local real-world communities.
Go low tech. Moore's law is dead, make use of it.
Patch your shit. Go weird.
Refuse slop. Train your brain.
The horsemen will collapse, but let's not go down with them.
This article was written without the use of a large language model and should not be used to train one.
New Cover: I Won’t Back Down [Whatever]

Because this is a sentiment that is surely timely.
In addition to singing, I’m playing bass on this one. I tried chugging along with the guitar but it sounded just terrible, so the guitars on this one are courtesy of UJAM, and some MIDI programming on my part for the solo.
Also, I wasn’t intentionally trying for a Tom Petty-like drawl, but damn it’s hard to sing a Tom Petty song without one, so here we are. I hope wherever he is in the universe right now, Tom is not rolling his eyes too hard about it.
Enjoy.
— JS
i stopped looking for the weird problem [Scripting News]
i'd wait till a fresh start tomorrow.
but then i realized claude has all the code, so i could just tell it my problem.
can you find it, i asked, realizing i had not given it info on what the problem is.
there's a very weird mistake in the code i wrote just now, and there was a lot of it, i said to claude.
can you find the problem.
had no idea what to expect.
no more than 3 seconds it said I got it!
it was a typo. where i meant to type x i had typed prefs.
juggling a lot of bits in my head, my brain skipped, i didn't notice.
i would have found it quickly in my next session. but now i can think of anything but that problem until then.
sometimes claude can be totally frustrating, but other times the power makes such a huge difference.
The Scalzi Family Foundation is Donation Matching for the Documentary “One Act,” Directed by Pamela Ribon [Whatever]

It’s fair to say that Pamela Ribon and I have come up together in the world. Back in the before times, she and I both started blogging when blogs were still called “online journals,” and our first novels came out close to each other. Since then she’s become a force in animation, working on story and screenplays for Moana, Ralph Breaks the Internet and the animated short My Year of Dicks, for which she received an Oscar nomination, which is pretty damn cool, if you ask me. For a quarter of a century now we’ve stayed friends, supported each other, and celebrated our successes.
Pamela went to high school in Texas, which is where she participated in the UIL One Act Play, the largest theatrical competition in the world. Students and their teachers (22,000 of them!) enter a timed theatrical performance judged on acting and tech, watched by an audience of students and parents, three judges, and a 103-page rule book. Pamela turned her filmmaker eye to one year of the competition, following several schools across the state as they fought their way through the ranks— with all the tears and triumphs and, yes, drama, that entails. That’s now become a film, called, sensibly enough, One Act.
The filming of One Act is done, and now comes the post-production phase, where the film is edited, scored and otherwise made ready for festivals and public presentation, in time for the UIL One Act Play’s 100th anniversary. That takes money, and Pamela and her team could use some help with that. This is where we come in: The Scalzi Family Foundation has pledged $5,000 in matching funds to encourage folks to make a (tax deductible!) donation to help One Act get over its own finish line in post-production. Any amount you donate will be matched by the SFF, up to that $5k (although hopefully they will bring in more than that).
We’re supporting One Act not just because Pamela is a filmmaker worth supporting, but because we think this could be an important film. It brings a spotlight to a part of Texas life that isn’t well-known outside of its borders, and shows a part of the life of the state that can be surprising, and challenging, to outsiders. The UIL One Act competition inspires young creative folks, and changes lives, and that’s a story that’s worth telling, and making a really cool film about.
If this sounds like a film that you would like to help support getting into theaters, here’s the link to One Act’s site, which includes information on how to donate. Again, in the US, these are tax-deductible donations, so that’s pretty nifty. Every donation for the first $5k is matched by the Scalzi Family Foundation, so please feel free to spend our money with yours. We want you to, in fact.
(Also, if you feel like being a big-time donor, like in the five-figure range and above, which comes with its own tier of recognition, there’s contact information on the linked page where you can inquire about that. Go on, do it! You know you want to!)
I’m super proud of Pamela for making this film, and for everything she’s done, and happy the Scalzi Family Foundation can help to get this film that much closer to release. I hope you’ll be inspired to come along for this journey as well.
And if you are: Thank you.
— JS
I documented the optional source:inReplyTo element for RSS 2.0.
21 years and 20000 posts later [OSnews]
Almost exactly 21 years ago, in June 2005, at a mere 20 years old, I took over the managing editor role at OSNews from Eugenia. I had already published a few articles in the years prior, and had given Eugenia enough confidence to suggest me as her replacement. It was, and is, a great honour.
In those 21 years and more than 20000 posts, I’ve seen a lot of beautiful things. Linux grew from a curiosity among nerds into a popular desktop operating system, and often a better choice for gaming than Windows. The BSDs flourish steadily, growing into even stronger and capable alternatives to desktop Linux than they already were. On the commercial side of things, new offerings challenged the hegemony of Microsoft and Windows. While Android and Chrome OS are at best merely tolerated, the idea that a newcomer would produce not one, but two operating systems that would successfully take on Microsoft and Apple seemed unimaginable when I started in 2005.
While many alternative operating systems of the early 2000s faded away, we’ve also seen success stories there. Haiku evolved from an unusable, unstable promise on the horizon into a stable, daily-drivable operating system. The unique Genode Framework and Sculpt OS keep exploring and redefining the boundaries of what a general purpose operating system should be. Redox has exploded onto the scene, and keeps making massive strides almost every month. OS/2 is still actively updated, maintained, and sold. The Amiga will outlast us all.
Internet culture, too, is changing, and while things definitely look bleak right now, there are sparks of hope and joy. The general attitude towards the big technology companies among the general public has shifted from admiration to mistrust and dislike, corporate social media seems to be crumbling, and the youngest generations absolutely despise the latest hype, “AI”. All is certainly not lost, and sometimes I feel shimmers of hope that the pendulum may swing back to a more people-focused web, a web we’ve been part of since 1997.
In those 21 years and more than 20000 posts, I’ve also seen a lot of hypes come and go, hypes that if I didn’t embrace them, I’d surely be left behind. The “pivot to video“, the cryptocurrency mania, NFTs, virtual reality and the metaverse, “AI” – all technologies and concepts I recognised for the hypes that they were, and consequently ridiculed and ignored, much to the dismay of many believers. I’ve got the angry emails and comments to prove it.
This illustrates something about OSNews that I value and hold dear: OSNews doesn’t jump on bandwagons, doesn’t frantically try to follow the latest trends, doesn’t cave under the pressure of big money interests. OSNews is constant, stable, deliberate, patient. Since 1997, we’ve covered the technology industry with interest, excitement, and wonder – tempered by a healthy dose of skepticism. When you follow this industry for almost three decades, you learn to spot the patterns and see the threads before anyone else does.
That’s not to say we haven’t gone through changes. The most significant changes to OSNews happened in recent years, where instead of working on the site on a mostly voluntary basis with a pittance of ad revenue coming my way, I’ve turned my work for OSNews into my job. As part of this change, I removed all advertising from our website, morphing OSNews into a fully reader-funded endeavour. No ads, no corporate interests, no media network breathing down my neck. OSNews is a truly independent technology news website, a rarity these days. I don’t have to keep corporate overlords or advertisers happy, and you’d be surprised to learn just how rare that is on the modern web.
The OSNews website itself is fairly unchanging too, having gone through only a handful of redesigns since its founding in 1997. We’ve been using our current design, developed by Adam Scheinberg, for as long as I can remember (10-15 years?), and thanks to our independent, ad-free nature, any possible future redesign would only make the site simpler and even faster than it already is. There’s no redesign in the cards at the moment, but rest assured, if it ever comes, we’ll buck the trend of websites getting ever more complex and demanding and make OSNews lighter and even faster.
And yes, despite commenters making up far less than one percent of our readership, I’ll always opt to keep them. We might be a site of lurkers, but comments are a core part of OSNews. Even the annoying ones. Especially the annoying ones.
That being said, there’s going to be a small change to our design, rolling out today (it might take a few reloads for it to appear). To mark my 21 years and 20000 posts, OSNews is getting a new-ish logo, which combines the classic, intertwined beveled “O-S” from the early 2000s with the modern logo we’ve been using over the past 15 years or so. The O and S are intertwined once again, highlighting the continuity and stability I want OSNews to bring in this chaotic industry (I can write corporatese if I want to). Fun fact: this “new” logo was actually designed like 20 years ago, and we’ve had it in our back pocket ever since. Why create something new and of the times, when you’ve got something great sitting right there?
Aside from the new logo, I’ll be running a big fundraiser to mark this occasion early next week, with some silly incentives at various thresholds. If we reach the ultimate goal – a euro for every story I’ve posted – I’ll overcome some very deep-rooted fears and anxieties, and tattoo the OSNews logo on my body, as my very first tattoo. OSNews has been part of my life for more than two decades, and I have every intention to add at least another two – having such a core part of my life immortalised on my body only makes sense.
I’ve written about my anxiety disorder and how it affects me here on OSNews, and it’s been preventing me from getting various tattoos I’ve been wanting for decades (and not for the reasons you may think – it’s not the pain or the needles). No better way to get fucking over it by making a public promise to tens of thousands of people. You can start donating today, but I’ll publish a proper post about it on Monday.
Of course, OSNews wouldn’t exist without all of you, our hundreds of thousands of readers. Whether you donate or not, whether you comment or not (you probably don’t!), each and every one of you contributes to making OSNews the steady success it’s been for almost 30 years. Few websites can boast such an uninterrupted lineage, and it’s thanks to all of you who keep coming back, every day.
Thank you. From the bottom of my heart. ❤️
Cheeky domains [RevK®'s ramblings]
I have a "shop" on Tindie (albeit currently all zero stock until they get working again, if ever) and now one on "Lectronz".
Ages ago I made tindie.uk domain, it web redirects to the shop on Tindie. Was a bit of fun. And a shortcut for me.
Now I have a Lectronz shop, so I made lectronz.uk in a similar way.
But this is a tad naughty maybe. Well maybe.
But yes, it is cheeky, shall we say. And in hindsight maybe a tad childish and not like me...
So now, given that Tindie is a waste of space compared to Lectronz, even when Tindie is working (which they have not been for a month), I now have a much simpler URL:
It goes to Lectronz.
FYI, if Tindie do come back I may list Faikout only, like we do on Amazon. Lectronz is likely to be the main place for any of the other circuit boards (and Faikout). Amazon only continue because they are one of the first places people go, still, so sensible to be on there, and they handle EU VAT, and shipping - but Lectronz do the EU VAT and US tariffs, so Amazon are only there to mop up on their reputation, as it is.
What is funny about Tindie is being off for a month is that someone has made a "new Tindie" from scratch and got on line and working during that month - https://smallrun.net/. To be fair, if I put my mind to it, I am sure I could. They even have tariffs and EU IOSS all sorted (which Tindie do not, still). How Tindie are so slow and so bad at communicating is really quite amazing.
“Here’s a pillow the cat didn’t pee on” [Seth's Blog]
Highlighting the non-existent negative is confusing.
“Don’t be late,” isn’t as useful as, “We’re going to leave on time.”
“I don’t want to be rude, but…” can easily be replaced by simply saying something that isn’t rude.
And of course, “with all due respect…” is often the preface to something said without due respect.
Pluralistic: Making sense of Trump's unscheduled sudden midair disassembly of the American empire (16 May 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

For generations, the American empire was the most powerful force on earth, and so we tended to assume that it was the most durable force on earth – surely anything so powerful must also be eternal?
But power and durability aren't the same thing, as Le Guin reminded us with her oft-quoted maxim that "We live in capitalism, its power seems inescapable — but then, so did the divine right of kings":
https://www.ursulakleguin.com/nbf-medal
Monarchs may be powerful, but that power is derived from a manifestly incorrect belief in special blood, a belief that requires monarchs to inbreed. At best, this produces heads of state who can't stop bleeding and also can't tell you if their blood is blue or red; at worst, it yields heads of state who can't speak intelligibly, much less produce another generation of royals:
https://en.wikipedia.org/wiki/Charles_II_of_Spain
Oligarchy also produces a sequence of progressively weirder and more terrible rulers who rely on a mix of lies, flattery, coercion and personal cult nonsense to hold their coalition together in the face of mounting evidence for the system's bankruptcy. Thus Reagan begat GW Bush, who begat Trump, whose potential successors are a kennel of the least-charismatic chud podcasters ever to curse an RSS feed.
Trump's second term has resulted in a rapid, unscheduled, mid-air disassembly of the American empire. As Baldur Bjarnason writes, under Trump, America "first turned on their trading partners, then their allies in Europe, and then they delivered one of this century’s biggest economic and energy crises to their allies in Asia":
https://www.baldurbjarnason.com/2026/the-old-world-of-tech-is-dying/
The line comes from an excellent post entitled "The old world of tech is dying and the new cannot be born," about the impact of Trump's de-Americanization of the world on the US tech industry, and thus the world's relationship to tech more broadly. As Bjarnason writes, Trump's tech giants dominate the world because America dominates the world. It's not because the world likes American tech. As Bjarnason writes:
They are, more often than not, about as popular and respected as tobacco or pharmaceutical companies – some of them and their products are polling in terms of public sentiment in ranges similar to child molesters or authoritarian immigration enforcement entities – and their CEOs are some of the more despised public figures in recent history.
These very, very unpopular tech companies dominate because American trade policy insists that they must. They are allowed to violate local laws because stopping them from doing so would result in trade sanctions. It's true that US tech companies face fines abroad from time to time, but these are "the price list for inflicting societal suffering. Pick the one that suits your business model." US trading partners haven't really attempted to extinguish the unlawful conduct of US tech companies.
All of that is up for grabs now, thanks to Trump's uncontrollable compulsion to repeatedly hormuz himself (and America) in the foot. But – as Bjarnason writes – this didn't start with Trump. As ever, Trump is as much an effect as a cause, and the most important cause of Trump is the conversion of America into a financial economy, which started under Reagan, but was only finalized by Obama, who let the Wall Street looters who destroyed the world economy walk away unscathed, even as they stole the homes of millions of Americans:
Financial economies "suck the air out of the rest of the economy and make it less competitive." Keeping billionaires in megayachts comes at the expense of "research, education, infrastructure, and healthcare." Countries that financialize lag behind countries where the economy is based on making things, not extracting or financing things.
Generations of both imperial looting and domestic investment made America the richest country on earth. That wealth cushioned America's transition to oligarchy: for a while, the country could both "finance and billionaire parasites sucking its blood" and continue to invest in itself. But while you can double the wealth of a billionaire at the expense of a town or two, doubling the wealth of a centibillionaire requires the destruction of whole regions.
As America looted itself into irrelevance, China – a very different kind of autocracy – invested in domestic capacity and domestic consumption. China's hardly a well-run place: like any autocracy, it functions according to the whims of extremely fallible officials, which produces real-estate bubbles and other crises of production (to say nothing of the demographic crisis of the One Child policy) and necessitates steadily increasing oppression, from online surveillance to concentration camps in Xinjiang.
Bjarnason writes about how this Chinese/US world presents a "double bind" for the EU. Siding with the US is increasingly untenable: the EU exists in large part to promote its domestic industries, but the US is no longer content to leave these alone. As Bjarnason says, US economic policy is now, "whatever our oligarchs want to steal this month, they get."
US tech has extended so many tendrils into so many sectors that it's not possible to defend any industrial sector without impinging on the "technopoly," where "the only ideas and thoughts that have social and cultural legitimacy are those that support, are supported by, and are mediated through technology."
This means that continuing to work within the American system means a steady transfer of economic and political control of every aspect of your life to the US, a decaying empire ruled over by a mad king. Nevertheless, there is a strong, vestigial reflex to protect American tech in the EU, which leaves European power-brokers scrambling to come up with reasons that the EU should confine its tech regulation to empty symbolic gestures, while avoiding meaningful action at all costs:
But the American tech sector relies on the other sources of American power – the ones that Trump is so bent on destroying. Trump's de-dollarization of the world economy is pushing the world away from using American tech for payment processing and networking. The American empire created the form of the US tech sector. As Bjarnason writes, "without the weight of the US political empire behind it – if Airbnb or Uber had been local startups – much fewer countries in the world would have loosened their regulations and consumer protections to accommodate them to the point where they prospered as they did."
Trump isn't the first US leader to make a strategic blunder (the US has lost every war it's fought since WWII, after all). But Trump's blunders are different in that they "deliberately signal the end [the US] empire." Hormuz and tariffs have driven people away from the US dollar, and everyone knows who to blame for the senseless deaths in the Gulf and the global privation caused by oil rationing.
That's bad news for a software industry that "shifted its entire value proposition from 'we make tools that help you make or save money' to using political clout and the dollar hegemony to capture, control, and loot entire sectors of the various economies of the world. That strategy only works when you’re in charge."
DOGE wiped out the health systems of the global south, and now Trump's trade negotiators are demanding that these countries promise to keep their hands off of US tech in exchange for reinstating a small trickle of the aid they lost. These countries are rejecting those demands:
It's all up for grabs, in other words. The post-American internet is being born in a post-American world, and the shape of both is impossible to determine from this side of the veil. Bjarnason quotes Gramsci: "the old is dying and the new cannot be born."
I hold out high hopes for a world of international digital public goods: free and open software that replaces America's extractive, defective black boxes with transparent, auditable, trustworthy alternatives that are under the control of the people who use them:
https://pluralistic.net/2026/04/16/pascals-wager/#doomer-challenge
But – as Bjarnason says – even the intellectual property framework that the free/open source movement relies on to make its licenses enforceable is an artifact of the collapsing American empire. If the global copyright system collapses with America, there won't be any impediments to reverse-engineering and improving the tech around us – but there also won't be any way to enforce the free software licenses that keep that software open:
https://pluralistic.net/2026/04/02/limited-monopoly/#petardism
The whole essay is very good and – like so many great essays – it raises more questions than it answers. It's also full of standout one-liners like this one:
How do LLMs affect productivity and quality? (Much like leaded petrol. There’s some potential benefit for individual users with literally decades of expertise, provided nobody else uses LLMs. The results are catastrophic when everybody is using them.)
Consider moving it to the top of your weekend reading.

The privilege of bad writers https://coreyrobin.com/2026/05/15/the-privilege-of-bad-writers/
AI as the new avatar of American capitalism https://www.bloodinthemachine.com/p/ai-as-the-new-avatar-of-american
Cucked Internet Theory https://www.tikviewer.com/video/7639554103340698912
Bill to block publishers from killing online games advances in California https://arstechnica.com/gaming/2026/05/bill-to-keep-online-games-playable-clears-key-hurdle-in-california/
#25yrsago Is the law copyrighted?
https://web.archive.org/web/20010519134232/http://www.uniontrib.com/news/uniontrib/sun/news/news_1n13own.html
#15yrsago Canadian copyright collective wants a music tax on memory cards https://web.archive.org/web/20110517205114/https://www.michaelgeist.ca/content/view/5798/125/
#10yrsago FBI Director: viral videos make cops afraid to do their jobs https://www.nytimes.com/2016/05/12/us/comey-ferguson-effect-police-videos-fbi.html?_r=2
#10yrsago Banker implicated in one of history’s biggest frauds says boss beat him with a tiny baseball bat https://web.archive.org/web/20160516173952/http://www.ibtimes.co.uk/barclays-banker-accused-rigging-libor-rate-hit-assistant-baseball-bat-1559792
#10yrsago Infested: an itchy, fascinating natural history of the bed bug https://memex.craphound.com/2016/05/14/infested-an-itchy-fascinating-natural-history-of-the-bed-bug/
#5yrsago A weapon of mass financial destruction https://pluralistic.net/2021/05/14/billionaire-class-solidarity/#club-deals
#1yrago Are the means of computation even seizable? https://pluralistic.net/2025/05/14/pregnable/#checkm8

Berlin: Enshittification at Otherland Books, May 18
https://www.otherland-berlin.de/de/event-details/cory-doctorow-in-der-friesenstrasse-23-kreuzberg-praesentiert-von-otherland.html
Berlin: Enshittification at Otherland Books, May 19
https://www.otherland-berlin.de/de/event-details/cory-doctorow.html
Hay-on-Wye: HowTheLightGetsIn, May 22-25
https://howthelightgetsin.org/festivals/hay/big-ideas-2
SXSW London, Jun 2
https://www.sxswlondon.com/session/how-big-tech-broke-the-internet-b3c4a901
LA: The Reverse Centaur's Guide to Life After AI with Brian
Merchant (Skylight Books), Jun 19
https://www.skylightbooks.com/event/skylight-cory-doctorow-presents-reverse-centaurs-guide-life-after-ai-w-brian-merchant
Menlo Park: The Reverse Centaur's Guide to Life After AI with
Angie Coiro (Kepler's), Jun 21
https://www.keplers.org/upcoming-events-internal/cory-doctorow-2026
NYC: The Reverse Centaur's Guide to Life After AI with Jonathan
Coulton (The Strand), Jun 24
https://www.strandbooks.com/cory-doctorow-the-reverse-centaur-s-guide-to-life-after-ai.html
Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
The “Enshittification” of Everything (Bioneers)
https://bioneers.org/cory-doctorow-enshittification-of-everything-zstf2605/
Enshittification (99% Invisible)
https://99percentinvisible.org/episode/666-enshittification/
Artificial Intelligence: The Ultimate Disruptor, with Astra
Taylor and Yoshua Bengio (CBC Ideas)
https://www.cbc.ca/listen/live-radio/1-23-ideas/clip/16210039-artificial-intelligence-the-ultimate-disruptor
When Do Platforms Stop Innovating and Start Extracting?
(InnovEU)
https://www.youtube.com/watch?v=cccDR0YaMt8
"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
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026
"The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
Today's top sources:
Currently writing: "The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Third draft completed. Submitted to editor.
"The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.
A Little Brother short story about DIY insulin PLANNING

This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
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
Friday Squid Blogging: Bigfin Squid [Schneier on Security]
Article about the bigfin squid.
As usual, you can also use this squid post to talk about the security stories in the news that I haven’t covered.
Google’s new “AI” Health Coach started making shit up right away [OSnews]
Google recently launched something called Health Coach, an “AI” thing that’s part of the company’s new Fitbit products. Let’s check in with how that’s going.
Put simply, Google’s paid replacement for Fitbit Premium immediately began hallucinating, even admitting to having made up the data before asking if, you know, maybe I’m the one who actually forgot to input a run. Remember, this is my very first report from this thing, making for an awful first impression. Even after this correction, the run data continues to exist within the AI-powered home screen layout, despite no record actually appearing within my account. It’s not exactly a great advertisement for a platform that costs $10 per month or $100 annually.
↫ Will Sattelberg at 9To5Google
The entire US’ – and thus much of the world’s – economic growth is built on this trash. What could possibly go wrong?
Microsoft claims it’s fixing Windows Update so it won’t downgrade your graphics drivers [OSnews]
One of the top pieces of customer feedback in the graphics driver area is clear: “Windows Update downgrades my drivers.” Today, we are announcing a policy change to how display drivers are published through Windows Update — allowing 2-Part HWID + Computer Hardware ID (CHID) targeting for new devices. This change gives customers more control over their display driver of choice while preserving OEM control over the devices they ship.
↫ Garrettd at Microsoft’s Hardware Dev Center
Windows Update randomly downgrading your graphics drivers seems to be a common enough occurrence that its supposed fix deserves its own feature announcement and blog post. This is a real operating system that runs on most of the world’s PCs.
It would never have occurred to me in a million years to unearth Cheeto of all things, it's completely nuts. My instinct was to say "cracked" but that means something different to the youth of today - something illicit, an etymological spur I've always feared was Fortnite-derived. But it was requested by the shivering mutants on Tumblr, and we are honor-bound to elevate these dreams, yea, unto the material world.
Urgent: Protect against datamining and manipulative fintech [Richard Stallman's Political Notes]
US citizens: call on Congress to Oppose H.R. 4801 and Protect Against datamining and manipulative fintech.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
I urge you to edit the letter's subject and text to remove the term "AI" and replace it with "snooping and manipulative fintech" or something else that rejects the marketing hype. For good measure, you could critique the term "AI" -- I did that too.
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: No Kill Switches in Cars Act [Richard Stallman's Political Notes]
US citizens: Support H.R. 1137, the "No Kill Switches in Cars Act."
I think that if someone is convicted of driving under the influence, or something close to that, it is legitimate to attach a sensor-driven kill switch to stop per from driving while inebriated.
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: End FISA law's spying on Americans [Richard Stallman's Political Notes]
US citizens: call on Congress to put an end to the FISA law's permission for warrantless spying on Americans.
The FISA court was supposed to prevent abuse of this power, but it has announced that the constraints on its operation made that impossible in practice.
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.
Lessons from destruction of Corbynism [Richard Stallman's Political Notes]
*The [English/Welsh] Greens need to learn the right lessons from the destruction of Corbynism.*
Corporate campaign against federal heat standard for workers [Richard Stallman's Political Notes]
*New Report Reveals Coordinated Corporate Campaign Against Life-Saving Federal Heat Standard for Workers.*
California's rule requiring businesses to protect their workers, with rest breaks and access to water and shade, is a big help, and extending it nationwide could avoid thousands of illnesses (some of them fatal) per year.
UK millionaires happy to pay more tax [Richard Stallman's Political Notes]
*Three-quarters of UK millionaires would be happy to pay more tax, research finds.*
Israelis-only road through the West Bank [Richard Stallman's Political Notes]
Israel is about to start building an Israelis-only road through the West Bank, designed as an excuse to exclude Palestinians from all the other roads in a central region of the West Bank — and force them all out.
Warning of domination of US government by rich [Richard Stallman's Political Notes]
Woodrow Wilson warned in his campaign in 1912 about the domination of the US government by a few rich people, and called for stripping them of their power.
At the same time, he pressured actively for racial segregation.
It is impossible to simplify Wilson to pure good or pure evil: we need to recognize both at once, in different areas of life, and judge each of them as it deserves.
JP Morgan on tax increases for foreign banks [Richard Stallman's Political Notes]
The boss of JP Morgan, a giant US bank, praises UK officials as "smart" when they reduce taxes for big foreign banks like his, and tries to threaten them with "investing less" if they might increase taxes for big foreign banks.
He is one of the arrogant rich men that Woodrow Wilson warned about. He is an enemy of Britain, and Britain should treat him as an enemy.
He is an enemy of America, too, for the same reason.
Shielding fossil fuel companies [Richard Stallman's Political Notes]
Republicans in Utah and Oklahoma want to shield fossil fuel companies from liability due to damage done by global heating.
I wish they had an outliner in Claude. I would use it. ;-)
BTW, here's the JSONL version of Scripting News. It has the same data as the RSS file, but in the format that AI apps are looking for, so I am told. I thought I'd try to kick this off by pushing an RSS flow through the pipe. It's like using the Grateful Dead to boot up podcasting. I needed something to put out on the wire and I had this feed handy.
Thinking about adding <source:inReplyTo> to the source namespace. Its value is a URL, by default, and has an optional isPermaLink attribute, a boolean, to indicate if it's not a permalink. Works just like the guid element in RSS 2.0. I will also add support for that in the FeedLand database, and flow it out through the socket interface. Actually that's pretty close to a full spec, at least in rss.land where we take simplicity seriously. ;-)
The case of the CreateFileMapping that always reported ERROR_ALREADY_EXISTS [The Old New Thing]
A customer reported that whenever their program called
CreateFileMapping to create a named file
mapping, the call succeeded, but the resulting mapping was not the
size they wanted. They requested a 1 megabyte mapping, but the
mapping they got back was only 4KB, which they noticed because the
program crashed once it accessed the 4097th byte. As an additional
data point, if they call GetLastError()
after creating the file mapping, they get
ERROR_ALREADY_EXISTS, suggesting that the file mapping
already created. But this happens even the first time their program
was run, and it even happens immediately after a reboot so there
shouldn’t be any leftover mappings.
HANDLE h = CreateFileMappingW(INVALID_FILE_HANDLE, nullptr, PAGE_READWRITE,
0, 1024 * 1024, L"MyFileMapping");
My guess is that they are getting
ERROR_ALREADY_EXISTS because the mapping already
exists. (Quelle surprise !)
After a fresh reboot, the customer used Process Explorer to search all processes to see if any of them already had a handle to their file mapping, and lo and behold, they found one: It was some companion software for their webcam, and it chose the exact same uncreative file mapping name.
The customer appended a GUID to their file mapping name, thereby removing the possibility of an accidental name collision. (Of course, there is still the possibility of an intentional name collision. Not much you can do to protect yourself against an attacker at the same or higher privilege.)
Related reading: You can name your car, and you can name your kernel objects, but there is a qualitative difference between the two.
The post The case of the <CODE>CreateFileMapping</CODE> that always reported <CODE>ERROR_<WBR>ALREADY_<WBR>EXISTS</CODE> appeared first on The Old New Thing.
Dave's vibe coding amusement park [Scripting News]
I reached a point in my Claude work where now I can do vibe
coding, in a world that I used to just be a programmer in. This
means if I want to do a heavy lift, I can tell Claude what I want
and it can do really big corner turns, which is something I am (as
a human) terrible at, and thus resist. Today I redesigned the basic
user interface of the app, and didn't read any code, I was just
giving orders, and it was doing what I asked, even if every little
thing it did would have been a full day's work. It's remarkable how
it can do very complex things in a few seconds.
And the web framework i'm working on can do almost all the things I want to do for now, but I want to suck everything into it, and turn the whole thing into a vibe coding amusement park. So many projects I want to do, and so many I want to do with you.
Bits from Debian: New Debian Developers and Maintainers (March and April 2026) [Planet Debian]

The following contributors got their Debian Developer accounts in the last two months:
The following contributors were added as Debian Maintainers in the last two months:
Congratulations!
[$] Controlling memory management with BPF [LWN.net]
Roman Gushchin began his session in the memory-management track of the 2026 Linux Storage, Filesystem, Memory Management, and BPF Summit by saying that the community has seen a lot of proposals adding BPF-based interfaces for memory management. None of them have made their way into the mainline, though. He wanted to explore the ways in which BPF might be helpful and the obstacles that have kept BPF-based solutions out so far. This session was followed by a discussion led by Shakeel Butt on what the requirements for a new, BPF-based interface for memory control groups might look like.
Flowermaxxing Friday [Whatever]
That’s right y’all, you’re
getting another flower picture! I know, I can
hardly believe it myself, but spring is just turning out so
beautifully here and I just feel so compelled to share the blossoms
with you.
Today’s bloom is a peony (I think), from a peony bush along the side of the house:

I am thrilled to have another beautiful blooming plant in the yard, especially because it’s pink! It’s actually very close to where the wisteria is, too. Also this one is in the shape of a heart:

That genuinely made me smile so much while I was taking the photo. Like, how cute is that.
I hope y’all are having a great start to your weekend, and that you see many blooms this spring!
-AMS
Error'd: Balmenach Bad Gateway Single Malt [The Daily WTF]
"Winner ad placement!" snarked our Peter G.
Errors on this website are always a shoo-in for the weekly column. An anonymous reader wrote "I got error 500 when I tried to submit an Error'd. Please make the file uploader check if the attached file is within the file upload limit, which I think is less than 4 MB." They shared an audio error'd which may be coming along next week.
"Give us feedback - wait, did it work at all?" confused poor I_Absolutely_Want_To_Give F. "As every good service management company, ServiceNow wants feedback, above all."
"0 minutes does not equal 0 seconds..." sagely summarized Daniel D. "Claude like floors. I mean floor. But maybe ceil would be better applicable to this calculation, right?"
Finally, this one is a real novelty, from Adam R. Is the label actually 27 years old? It certainly could be; Error 502 is a good bit older. But I think this would be our oldest Error'd yet. Adam explained: "This appears to be a real auction for a whiskey bottle whose label does, in fact, say Error 502 Bad Gateway on it. The winning bid: £130. Source: https://www.scotchwhiskyauctions.com/auctions/228-the-179th-auction/876095-balmenach-1998-27-year-old-error-502-bad-gateway-thompson-bros/"
[$] HugeTLB preservation over live update [LWN.net]
Recent times have seen a lot of effort put into the implementation of the kexec handover and live update orchestrator features in the Linux kernel. But that work is not yet complete. At the 2026 Linux Storage, Filesystem, Memory Management, and BPF Summit, Pratyush Yadav led a memory-management-track session on adding the ability to preserve hugetlbfs-provided memory during the live-update process.
Seven new stable kernels with patches for CVE-2026-46333 [LWN.net]
Greg Kroah-Hartman has announced the 7.0.8, 6.18.31, 6.12.89, 6.6.139, 6.1.173, 5.15.207, and 5.10.256 stable kernels. These kernels contain a patch for CVE-2026-46333 a vulnerability reported by the Qualys Security Advisory team, though Jann Horn proposed a patch in 2020. The vulnerability has a proof-of-concept exploit published already. Some of the kernels have additional patches for other bugs; as always, users are advised to upgrade.
Security updates for Friday [LWN.net]
Security updates have been issued by Debian (ffmpeg, gsasl, nodejs, postgresql-15, postgresql-17, python3.9, and thunderbird), Fedora (expat, firefox, freerdp, GitPython, kernel, php, rust-podman-sequoia, rust-rpm-sequoia, rust-sequoia-chameleon-gnupg, rust-sequoia-git, rust-sequoia-keystore-server, rust-sequoia-octopus-librnp, rust-sequoia-openpgp, rust-sequoia-sop, rust-sequoia-sq, and rust-sequoia-sqv), Mageia (awstats, libreoffice, perl-HTTP-Tiny, and tomcat), Oracle (corosync, freerdp, gimp, git-lfs, glib2, jq, kernel, krb5, libsoup3, libtiff, openexr, thunderbird, uek-kernel, and yggdrasil), Red Hat (podman and skopeo), SUSE (amazon-ssm-agent, avahi, c-ares, cairo, containerd, cpp-httplib, dnsmasq, dovecot24, ffmpeg-4, firefox, helm, ImageMagick, iproute2, kernel, krb5, libtpms, ongres-scram, ongres-stringprep, plexus-testing, maven, maven-doxia, mojo-parent, sisu, openCryptoki, openssh, perl-Text-CSV_XS, php8, python-lxml, python-Twisted-doc, python311-click, python311-GitPython, rclone, regclient, and syncthing), and Ubuntu (avahi).
Pluralistic: No one wants a permanent gerontocracy (15 May 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

Perhaps the most demoralizing part of Trumpismo is the fear that the people around you are so cruel and senseless that they approve of the violence, the racism, the pig-ignorant lies and rampant theft:
https://www.techdirt.com/2025/07/08/who-goes-maga/
One of the things keeping me going in these dark days is the pollster G Elliot Morris, whose "Strength in Numbers" newsletter is a reliable, robust and nuanced source of information about the way other people – including Trump's base – feel about him from moment to moment. Reading items like "A reminder: Very few people support Donald Trump's presidency" make it easier to get through the day:
https://www.gelliottmorris.com/p/a-reminder-very-few-people-support
It's a very good piece, breaking down the collapse in support for Trumpismo and confidence in Trump's mental health, even among the people who have historically stood by him, even though – incredibly! – about a third of Americans still support him and believe in his fitness to rule.
But the most interesting part of this post is the eye-popping poll result on a question that is only incidentally about Trump: the extremely broad, bipartisan support for both age limits and term limits for the House, the Senate, the Presidency and the Supreme Court.
How broad and bipartisan are these results?
Most Americans want age limits for the presidency (R73%, I61%) (the most popular age limit is 79);
Most Americans (65%) want an 18-year term limit for Supreme Court justices;
Most Americans (79%) want age limits for Supreme Court justices.
As Morris writes, this represents "a level of cross-partisan agreement that’s almost unheard of on a high-salience issue."
There are different ways to parse this out. The past decade has shown that, in the absence of a hard rule to the contrary, incumbents will stay in office long after it's obvious they should step down. That was true of Biden, who continued to campaign for a presidential term long after it was obvious that he was no longer physically and mentally capable of doing the job.
It was true of Ruth Bader-Ginsburg, whose commitment to the symbolic value of having her successor appointed by the first woman president allowed Trump to appoint the monstrous Amy Coney Barrett to a lifetime on the Supreme Court, which could well last another 30 years. It was true of Antonin Scalia, who would have handed a Supreme Court pick to the Obama administration if it wasn't for Mitch McConnell's willingness to steal a seat for Neal Gorsuch.
It's true of Kay Granger, a sitting congresswoman whose staff hid the fact that her dementia had progressed to the point that she had to be moved to an assisted living facility – while still holding office:
https://www.politico.com/news/magazine/2025/03/14/kay-granger-dementia-dc-media-00210317
It was true of Gerry Connolly, who insisted that he – not AOC – should be the head of the Oversight Committee, despite the fact that he was dying of cancer:
It was true of Dianne Feinstein, who continued to serve in the Senate despite having advanced dementia:
These politicians are wed to a system of seniority and patronage that insists that everyone who "pays their dues" should get a turn. It's a system that relies on politicians banking favors from their peers and then paying them back by anointing successors, thus requiring politicians to serve until they are ready to choose that successor.
We have created a system in which no one dares to hand over power, because to do so is to unilaterally disarm, while the other side keeps their permanent gerontocrats in positions of authority. Not only does this system starve the pipeline of young politicians who can progress to fill those new roles, it also exposes each party to significant risk. If your majority rests on a handful of seats and your caucus includes a dozen people who are actuarially certain to die soon, then the whole system could be upended by a couple of highly likely blood-clots:
https://pluralistic.net/2023/07/01/designated-survivors/
It's not that every politician over the age of 70 (or 80, or 85) is incapable of doing the job: it's that a system that runs on a mix of incumbency advantage, seniority, patronage and hubris is a bad system and the only fix for it is to put hard limits on terms – both based on how many years you hold office, and how many years you walk the earth.
The system where everyone who pays their dues gets a turn was never going to work, and that should have been especially obvious to the system's longest-tenured participants, who've had decades to notice how long-lived their colleagues are, and to compare those lifespans to the number of committee chairs, senate seats and other treasures there are to be had in the halls of power.
There are lots of good ideas – like abolishing the Electoral College or limiting political spending – that are popular with a majority of Americans, but these ideas are often very unpopular with conservatives:
https://pluralistic.net/2023/10/18/the-people-no/#tell-ya-what-i-want-what-i-really-really-want
But this is a realm in which – as Morris says – there is "almost unheard-of…cross-partisan agreement." It's the one idea that all Americans – including older Americans (at least the ones who aren't in the House, Senate or Oval Office; or on the Supreme Court) agree on: rule by permanent gerontocracy is bad, and should end.
In not so many months, both parties are going to have to pick their next presidential candidates (in the case of Republicans, it may be sooner, depending on Trump's cheeseburger intake). Those primary contests are going to implicitly raise the issue of whether we should be ruled according to the principle of "everyone who pays their dues gets a turn." But a shrewd politician could win a lot of favor among voters (and fury among their colleagues) by campaigning on age- and term-limits for high office.
(Image: Pacamah, CC BY-SA 4.0, modified)

How companies weaponize the terms of service against you https://www.theverge.com/podcast/930342/brendan-ballou-companies-courts-forced-arbitration-lawsuits-scalia
UK begins antitrust inquiry into Microsoft's business software ecosystem https://www.theregister.com/oses/2026/05/14/uk-begins-antitrust-inquiry-into-microsofts-business-software-ecosystem/5240452
Meta’s New Reality: Record High Profits. Record Low Morale https://www.wired.com/story/meta-layoffs-bad-vibes-mark-zuckerberg-ai/
Verity MCP https://www.iccl.ie/digital-data/verity-mcp/
#25yrsago The life of a celeb PA https://www.theguardian.com/education/2001/may/14/highereducation.comment
#20yrsago DOJ moves in dark of night to quash EFF wiretapping lawsuit https://web.archive.org/web/20060524092447/https://www.eff.org/deeplinks/archives/004659.php
#20yrsago WolfenGitmo: Guantanamo Bay mod for Castle Wolfenstein https://web.archive.org/web/20060520203517/https://a.parsons.edu/~evan/school/?q=node/29
#20yrsago Where does booing come from? https://web.archive.org/web/20181215223044/https://slate.com/news-and-politics/2006/05/where-do-hecklers-come-from.html
#15yrsago Steven Levy on Facebook’s ironic privacy charge against Google https://web.archive.org/web/20110514121727/https://www.wired.com/epicenter/2011/05/facebook-privacy-problems/
#15yrsago Michael Moore’s “Some Final Thoughts on the Death of Osama bin Laden” https://web.archive.org/web/20110513181408/https://www.michaelmoore.com/words/mike-friends-blog/some-final-thoughts-on-death-of-osama-bin-laden
#15yrsago DHS’s “Secure Communities” program will deport battered woman for calling 9-1-1 on her abuser https://web.archive.org/web/20110514142235/https://blogs.ocweekly.com/navelgazing/2011/05/isaura_garcia_battered_secure.php
#15yrsago TSA: we’ll search your baby and it will make the country safer https://www.loweringthebar.net/2011/05/tsa-says-baby-frisking-justified.html
#10yrsago Telcoms companies try to rescue TV by imposing Internet usage caps on cord-cutters https://www.techdirt.com/2016/05/13/isps-are-now-forcing-cord-cutters-to-subscribe-to-tv-if-they-want-to-avoid-usage-caps/
#10yrsago The weird, humiliating nicknames George W Bush gave to everyone https://en.wikipedia.org/wiki/List_of_nicknames_used_by_George_W._Bush
#10yrsago “Tendril perversion”: when one loop of a coil goes the other way https://en.wikipedia.org/wiki/Tendril_perversion
#10yrsago Clicking “Buy now” doesn’t “buy” anything, but people think it does https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2778072
#5yrsago Uber (Ch)eats https://pluralistic.net/2021/05/13/uber-cheats/#50-companies
#5yrsago The Democratic establishment https://pluralistic.net/2021/05/13/uber-cheats/#party-bosses
#1yrago Who Broke the Internet? Part II https://pluralistic.net/2025/05/13/ctrl-ctrl-ctrl/#free-dmitry

Berlin: Enshittification at Otherland Books, May 18
https://www.otherland-berlin.de/de/event-details/cory-doctorow-in-der-friesenstrasse-23-kreuzberg-praesentiert-von-otherland.html
Berlin: Enshittification at Otherland Books, May 19
https://www.otherland-berlin.de/de/event-details/cory-doctorow.html
Hay-on-Wye: HowTheLightGetsIn, May 22-25
https://howthelightgetsin.org/festivals/hay/big-ideas-2
SXSW London, Jun 2
https://www.sxswlondon.com/session/how-big-tech-broke-the-internet-b3c4a901
NYC: The Reverse Centaur's Guide to Life After AI with Jonathan
Coulton (The Strand), Jun 24
https://www.strandbooks.com/cory-doctorow-the-reverse-centaur-s-guide-to-life-after-ai.html
Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
The “Enshittification” of Everything (Bioneers)
https://bioneers.org/cory-doctorow-enshittification-of-everything-zstf2605/
Enshittification (99% Invisible)
https://99percentinvisible.org/episode/666-enshittification/
Artificial Intelligence: The Ultimate Disruptor, with Astra
Taylor and Yoshua Bengio (CBC Ideas)
https://www.cbc.ca/listen/live-radio/1-23-ideas/clip/16210039-artificial-intelligence-the-ultimate-disruptor
When Do Platforms Stop Innovating and Start Extracting?
(InnovEU)
https://www.youtube.com/watch?v=cccDR0YaMt8
"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
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026
"The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
Today's top sources:
Currently writing: "The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Third draft completed. Submitted to editor.
"The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.
A Little Brother short story about DIY insulin PLANNING

This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
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
League of Canadian Superheroes – Issue 5 – 21 [Comics Archive - Spinnyverse]
The post League of Canadian Superheroes – Issue 5 – 21 appeared first on Spinnyverse.
Agent Harness Engineering [Radar]
This article was originally published on Addy Osmani’s blog. It’s being reposted here with the author’s permission.
Roughly: Anytime you find an agent makes a mistake, you take the time to engineer a solution such that the agent never makes that mistake again.
We’ve spent the last two years arguing about models. Which one is smartest, which one writes the cleanest React, which one hallucinates less. That conversation is fine as far as it goes, but it’s missing the other half of the system. The model is one input into a running agent. The rest is the harness: the prompts, tools, context policies, hooks, sandboxes, subagents, feedback loops, and recovery paths wrapped around the model so it can actually finish something.
A decent model with a great harness beats a great model with a bad harness. I’ve watched this play out on my own work over and over. And increasingly the interesting engineering isn’t in picking the model; it’s in designing the scaffolding around it.
That discipline now has a name. Viv Trivedy coined the term harness engineering, and his “Anatomy of an Agent Harness” post is the cleanest derivation of what a harness actually is and why each piece exists. Dex Horthy has been tracking the pattern as it emerges. HumanLayer frames most agent failures as “skill issues” that come down to configuration rather than model weights. Anthropic’s engineering team has published what I think is the best public breakdown of how to design a harness for long-running work. And Birgitta Böckeler has a good overview of what this looks like from the user’s side.
This post is my attempt to pull those threads together.
Viv’s one-liner does most of the work:
Agent = Model + Harness. If you’re not the model, you’re the harness.
A harness is every piece of code, configuration, and execution logic that isn’t the model itself. A raw model is not an agent. It becomes one once a harness gives it state, tool execution, feedback loops, and enforceable constraints.
Concretely, a harness includes:
Simon Willison reduces the loop part to its essence: an agent is a system that “runs tools in a loop to achieve a goal.” The skill is in the design of both the tools and the loop.
If that sounds like a lot of surface area, it is. And it’s your surface area, not the model provider’s. Claude Code, Cursor, Codex, Aider, Cline: These are all harnesses. The model underneath is sometimes the same, but the behavior you experience is dominated by what the harness does.
coding agent = AI model(s) +
harness
This equation, articulated by Viv and echoed by HumanLayer, is where the work actually lives. The debate over the left-hand side is loud. Most of the actual leverage sits on the right.
There’s a pattern I watch engineers fall into. The agent does something dumb, the engineer blames the model, and the blame gets filed under “wait for the next version.”
The harness-engineering mindset rejects that default. The failure is usually legible. The agent didn’t know about a convention, so you add it to AGENTS.md. The agent ran a destructive command, so you add a hook that blocks it. The agent got lost in a 40-step task, so you split it into a planner and an executor. The agent kept “finishing” broken code, so you wire a typecheck back-pressure signal into the loop.
HumanLayer says: “It’s not a model problem. It’s a configuration problem.” Harness engineering is what happens when you take that seriously.
There’s a striking data point that shows up in both Viv’s write-up and HumanLayer’s. On Terminal Bench 2.0, Claude Opus 4.6 running inside Claude Code scores far lower than the same model running in a custom harness. Viv’s team moved a coding agent from Top 30 to Top 5 by changing only the harness. Models get posttraining coupled to the harness they were trained against. Moving them into a different harness, with better tools for your codebase, a tighter prompt, and sharper backpressure, can unlock capability the original harness was leaving on the floor.
This is the opposite of the “just wait for GPT-6” narrative. The gap between what today’s models can do and what you see them doing is largely a harness gap.
The most important habit in harness engineering is treating agent mistakes as permanent signals. Not one-off stories to laugh about, not “bad runs” to retry. Signals.
If the agent ships a PR with a commented-out test and I merge it
by accident, that’s an input. The next version of my
AGENTS.md says “never comment out tests; delete them or fix
them.” The next version of my precommit hook greps for
.skip( and xit( in the diff. The next
version of my reviewer subagent flags commented-out tests as a
blocker.
You only add constraints when you’ve seen a real failure. You only remove them when a capable model has made them redundant. Every line in a good AGENTS.md should be traceable back to a specific thing that went wrong.
This is also why harness engineering is a discipline rather than a framework. The right harness for your codebase is shaped by your failure history. You can’t download it.
The framing from Viv that I find most useful when I’m actually designing a harness is to start from the behavior you want and derive the harness piece that delivers it. His pattern: behavior we want (or want to fix) → harness design to help the model achieve this.
The useful thing about deriving it this way is that every harness component has a specific job. If you can’t name the behavior a component exists to deliver, it probably shouldn’t be there.
The rest of this section walks the pieces in roughly the order Viv does, with the specific patterns I’ve found worth stealing.
The filesystem is the most foundational primitive, and it tends to be underrated because it’s boring. Models can only directly operate on what fits in context. Without a filesystem, you’re copy-pasting into a chat window, and that isn’t a workflow.
Once you have a filesystem, the agent gets a workspace to read data, code, and docs; a place to offload intermediate work instead of holding it in context; and a surface where multiple agents and humans can coordinate through shared files. Adding Git on top gives you versioning for free, so the agent can track progress, roll back errors, and branch experiments.
Most of the other harness primitives end up pointing at the filesystem for something.
The main agent loop today is a ReAct loop: The model reasons, takes an action via a tool call, observes the result, and repeats. But a harness can only execute the tools it has logic for. You can try to prebuild a tool for every possible action, or you can give the agent bash and let it build the tools it needs on the fly.
Willison’s take on this is that agents already excel at shell commands; most tasks collapse to a few well-chosen CLI invocations. Harnesses still ship focused tools, but bash plus code execution has become the default general-purpose strategy for autonomous problem solving. It’s the difference between teaching someone to use a single kitchen gadget and handing them a kitchen.
Bash is only useful if it runs somewhere safe. Running agent-generated code on your laptop is risky, and a single local environment doesn’t scale to many parallel agents.
Sandboxes give agents an isolated operating environment. Instead of executing locally, the harness connects to a sandbox to run code, inspect files, install dependencies, and verify work. You can allow-list commands, enforce network isolation, spin up new environments on demand, and tear them down when the task is done.
A good sandbox ships with good defaults: preinstalled language runtimes and packages, Git and test CLIs, a headless browser for web interaction. Browsers, logs, screenshots, and test runners are what let the agent observe its own work and close the self-verification loop.
The model doesn’t configure its execution environment. Deciding where the agent runs, what’s available, and how it verifies its output are all harness-level calls.
Models have no additional knowledge beyond their weights and what’s currently in context. Without the ability to edit weights, the only way to add knowledge is through context injection.
The filesystem is again the primitive. Harnesses support memory file standards like AGENTS.md that get injected on every start. As the agent edits that file, the harness reloads it, and knowledge from one session carries into the next. This is a crude but effective form of continual learning.
For knowledge that didn’t exist at training time (new library versions, current docs, today’s data), web search and MCP tools like Context7 bridge the cutoff. These are useful primitives to bake into the harness rather than leaving to the user.
Context rot is the observation that models get worse at reasoning and completing tasks as the context window fills up. Context is scarce, and harnesses are largely delivery mechanisms for good context engineering.
Three techniques show up repeatedly:
Compaction. When the window gets close to full, something has to give. Letting the API error is not an option for a production harness, so the harness intelligently summarizes and offloads older context so the agent can keep working.
Tool-call offloading. Large tool outputs (think 2,000-line log files) clutter context without adding much signal. The harness keeps the head and tail tokens above a threshold and offloads the full output to the filesystem, where the agent can read it on demand.
Skills with progressive disclosure. Loading every tool and MCP into context at startup degrades performance before the agent takes a single action. Skills let the harness reveal instructions and tools only when the task actually calls for them.
Anthropic’s harness post adds one more technique for the really long jobs: full context resets, where the harness tears the session down and rebuilds it from a compact handoff file. They’re explicit that compaction alone wasn’t sufficient for long tasks; sometimes you need to start fresh with a structured brief. This is closer to how humans onboard a new engineer than to how we usually think about “memory.”
Autonomous long-horizon work is the holy grail and the hardest thing to get right. Today’s models suffer from early stopping, poor decomposition of complex problems, and incoherence as work stretches across multiple context windows. The harness has to design around all of that.
I’ve written about autonomous coding loops like the Ralph loop before in self-improving agents and in my 2026 trends piece, but it’s worth restating in this framing: A hook intercepts the model’s attempt to exit and reinjects the original prompt into a fresh context window, forcing the agent to continue against a completion goal. Each iteration starts clean but reads state from the previous one through the filesystem. It’s a surprisingly simple trick for turning a single-session agent into a multisession one, and it’s the kind of primitive you’d never derive from “just use a smarter model.”
Planning is when the model decomposes a goal into a sequence of steps, usually into a plan file on disk. The harness supports this with prompting and reminders about how to use the plan file. After each step, the agent checks its work via self-verification: Hooks run a predefined test suite and loop failures back to the model with the error text, or the model reviews its own output against explicit criteria.
Planner/generator/evaluator splits. Anthropic’s long-running harness work is explicit that separating generation from evaluation into distinct agents outperforms self-evaluation, because agents reliably skew positive when grading their own work. It’s GANs for prose. The related pattern is the sprint contract, where the generator and evaluator negotiate what “done” actually means before code gets written. In my own workflows, writing down the done condition before starting has caught more scope drift than any prompt change I’ve ever made.
Hooks are what separate “I told the agent to do X” from “the system enforces X.”
A hook is a script that runs at a specific lifecycle point:
before a tool call, after a file edit, before commit, on session
start. They’re the right place for things the agent should
never forget but often does. Run typecheck and lint and tests after
every edit and surface failures. Block destructive bash (rm
-rf, git push --force, DROP
TABLE). Require approval before opening a PR or pushing to
main. Auto-format on write so the agent doesn’t waste tokens
on whitespace.
The principle HumanLayer highlights and I’ve come to agree with is: Success is silent; failures are verbose. If typecheck passes, the agent hears nothing. If it fails, the error text gets injected into the loop and the agent self-corrects. That makes the feedback loop almost free in the common case and directly actionable when something goes wrong.
The flat markdown rulebook at the root of your repo is still the
single highest-leverage configuration point, because it lands in
the system prompt every turn. Conventions go here: package manager,
test framework, formatting, “never touch
/legacy,” “always use our logger.”
Two hard-won lessons:
Keep it short. HumanLayer keeps theirs under 60 lines. Every line is competing for attention, and more rules make each rule matter less. Pilot’s checklist, not style guide.
Earn each line. Rules should trace to a specific past failure or a hard external constraint. If they don’t, they’re noise. Ratchet; don’t brainstorm.
Same discipline applies to tools. Each tool’s name, description, and schema gets stamped into the prompt every request. Ten focused tools outperform fifty overlapping ones because the model can hold the menu in its head. HumanLayer also flags a real security concern here: tool descriptions populate the prompt, so any MCP server you install is trusted text the model will read. A sloppy or malicious MCP can prompt-inject your agent before you’ve typed anything.
The clearest public picture I’ve seen of a mature harness is Fareed Khan’s (estimated) breakdown of Claude Code’s architecture.
Almost every concept from the previous section shows up on this diagram as a named component. Context injection is the knowledge layer. Loop state lives in the memory store and the worktree isolator. Destructive-action hooks sit behind the permission gate. Subagent context firewalls are the entire multi-agent layer. The tool dispatch registry is where MCP servers and bash both plug in. Khan’s argument is the same as Viv’s, just worked through a shipping product: Claude Code’s trajectory is about the harness at least as much as about the model underneath it.
One of the better observations in the Anthropic write-up is that as models improve, the space of interesting harness combinations doesn’t shrink. It moves.
The naive story is that better models make harnesses obsolete. If the model can plan, no planner. If the model is coherent at long horizons, no context resets. And yes, Opus 4.6 largely killed the context-anxiety failure mode (Sonnet 4.5 used to wrap up work prematurely as it approached what it thought was its context limit), which means a whole class of anxiety-mitigation scaffolding I was writing six months ago is now dead code.
But the ceiling moved with the model. Tasks that were unreachable are in play, and they have their own failure modes. The anxiety scaffolding goes away, and in its place you need a multiday memory policy or a harness that coordinates three specialized agents or evaluators for design quality in generated UIs. The assumptions shift, and so does the scaffolding that encodes them.
Anthropic puts it cleanly: “Every component in a harness encodes an assumption about what the model can’t do on its own.” When the model gets better at something, that component becomes load-bearing for nothing and should come out. When the model unlocks something new, new scaffolding is needed to reach the new ceiling.
The other thing that’s happening, which Viv names explicitly, is a feedback loop between harness design and model training.
Today’s agent products are posttrained with harnesses in
the loop. The model gets specifically better at the actions the
harness designers think it should be good at: filesystem
operations, bash, planning, subagent dispatch. That’s why
Opus 4.6 feels different inside Claude Code than inside someone
else’s harness, and it’s why changing a tool’s
logic sometimes causes strange regressions. A genuinely general
model wouldn’t care whether you used apply_patch
or str_replace, but cotraining creates
overfitting.
The practical implication is twofold. A harness is a living system, not a config file you set up once. And the “best” harness isn’t necessarily the one the model was trained inside; it’s the one designed for your task. Viv’s Top 30 to Top 5 Terminal Bench jump is the clearest proof point I’ve seen.
Viv’s other contribution is the HaaS framing: harness as a service. The observation is that we’re moving from building on LLM APIs (which give you a completion) to building on harness APIs (which give you a runtime). The Claude Agent SDK, the Codex SDK, and the OpenAI Agents SDK all point in the same direction. You get the loop, the tools, the context management, the hooks, and the sandbox primitives out of the box, and you customize them.
The shift matters because the default path used to be: build your own loop, wire up your own tool-calling, handle your own conversation state, invent your own approval flow. Now the default path is: pick a harness framework, configure it along the four pillars (system prompt, tools, context, subagents), and put the rest of your effort into domain-specific prompt and tool design.
That’s what makes “skill issue” tractable. You’re not rebuilding an agent from scratch every time something goes wrong. You’re tuning a configuration surface that’s already well-factored.
Viv’s line on this is also the best argument for starting messy: “Good agent building is an exercise in iteration. You can’t do iterations if you don’t have a v0.1.”
Look at the top coding agents side by side (Claude Code, Cursor, Codex, Aider, Cline) and they look more like each other than their underlying models do. The models are different. The harness patterns are converging. I don’t think that’s an accident. It’s the industry slowly finding the load-bearing pieces of scaffolding that turn a generative model into something that can ship.
Viv’s framing of the open problems is the one I find most exciting: orchestrating many agents working in parallel on a shared codebase; agents that analyze their own traces to identify and fix harness-level failure modes; harnesses that dynamically assemble the right tools and context just-in-time for a given task instead of being preconfigured at startup.
That last one, in particular, feels like where harnesses stop being static config and start becoming something closer to a compiler.
This and that - and bread [Judith Proctor's Journal]
Friday is Theo day. We have our toddler grandson every Friday and hand him back Saturday morning.
This is a good arrangement for all parties. He's at the age where he loves having books read to him and is starting to point to dogs and cats and say 'doh' and 'ca'.
He likes going for walks- we took him over the heath today, partly in a pushchair and partly toddling along on his own feet. He loves picking up sticks and playing with them, the occasional fir cone also provides entertainment. He's pleasingly interested when I show him buttercups and ferns, etc. and tell him their names. Today, we went over the board walk on our local mini-bog- stamping on the boards makes an interesting sound that he loves to test out. Fluffy caterpillars of fallen willow seed heads were duly played with and interesting grass stems.
We got back at just the right time to take his morning sleep (often quite a long one).
Granny and grandad are settling down to catch up on computer stuff while he's asleep.
So, I'm posting here, then catch up on a couple of morris-related emails, and then grab a snack. One of the annoying side effects of the kind of diabetes I have is that I've lost too much weight due to poor absorption of carbs. So small meals between meals become necessary.
The catch is that it can be hard to find things I want to eat. A simple sandwich is easiest, but modern bread tastes of nothing at all and has no texture. I don't look forward to eating it...
I've just persuaded my nearest and dearest that we should try Riverford's wholemeal loaf (when did you last see a 'wholemeal' loaf as opposed to a 'brown' loaf - which is every bit as bad as white bread).
They're not cheap compared to a supermarket loaf, but how does it taste?
Very good! I just tied a bit with nothing on it at all. Tasty and far more texture than supermarket bread. But as you chew it, more and more flavour comes through. Yum. Not only that, but being Riverford, it's also organic and made by a family bakery.
Even at £4 per loaf, it's something I'm definitely buying again. I can look forward to eating this - on it's own, with a little butter/vegan spread, or whatever I fancy.
This is what I want from bread. A texture that means it bounces back when you press it, that runny toppings like tahini will soak in rather then run off, and actual flavour!
This and that [Judith Proctor's Journal]
Friday is Theo day. We have our toddler grandson every Friday and hand him back Saturday morning.
This is a good arrangement for all parties. He's at the age where he loves having books read to him and is starting to point to dogs and cats and say 'doh' and 'ca'.
He likes going for walks- we took him over the heath today, partly in a pushchair and partly toddling along on his own feet. He loves picking up sticks and playing with them, the occasional fir cone also provides entertainment. He's pleasingly interested when I show him buttercups and ferns, etc. and tell him their names. Today, we went over the board walk on our local mini-bog- stamping on the boards makes an interesting sound that he loves to test out. Fluffy caterpillars of fallen willow seed heads were duly played with and interesting grass stems.
We got back at just the right time to take his morning sleep (often quite a long one).
Granny and grandad are settling down to catch up on computer stuff while he's asleep.
So, I'm posting here, then catch up on a couple of morris-related emails, and then grab a snack. One of the annoying side effects of the kind of diabetes I have is that I've lost too much weight due to poor absorption of carbs. So small meals between meals become necessary.
The catch is that it can be hard to find things I want to eat.
Bypassing On-Camera Age-Verification Checks [Schneier on Security]
Some AI-based video age-verification checks can be fooled with a fake mustache.
Professionals take their work seriously.
Hobbyists can take it personally.
We arrive and make a promise. We do it on behalf of the client, and that promise has little to do with what we might want to do–it’s what they need us to do.
And so we make our promises carefully, and keep them with effort. That’s serious.
But it’s not personal.
Russell Coker: Debian SE Linux and ssh-keysign-pwn [Planet Debian]
I just tested out the ssh-keysign-pwn exploit [1] on Debian kernel 6.12.74+deb13+1-amd64 which was released before these exploits.
When sshkeysign_pwn is run as user_t the following is logged in the audit log and it fails to exploit anything:
type=SYSCALL msg=audit(1778831599.951:22353257): arch=c000003e syscall=438 success=no exit=-1 a0=3 a1=c a2=0 a3=1b8020 items=0 ppid=5632 pid=6654 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=144 comm="sshkeysign_pwn" exe="/home/test/a/ssh-keysign-pwn/sshkeysign_pwn" subj=user_u:user_r:user_t:s0 key=(null)ARCH=x86_64 SYSCALL=pidfd_getfd AUID="test" UID="test" GID="test" EUID="test" SUID="test" FSUID="test" EGID="test" SGID="test" FSGID="test"
type=PROCTITLE msg=audit(1778831599.951:22353257): proctitle="./sshkeysign_pwn"
type=AVC msg=audit(1778831599.951:22353258): avc: denied { ptrace } for pid=6654 comm="sshkeysign_pwn" scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:user_t:s0 tclass=process permissive=0
When it is run as unconfined_t the contents of the /etc/ssh/ssh_host_ecdsa_key file are correctly displayed on standard out in about 10ms, the file in question is only readable by root and a non-root user can use this exploit to read it.
It wouldn’t be uncommon to have a system configured to allow users to trace their own processes. The following policy addition grants access for the user to trace their own processes:
allow user_t self:process ptrace;
With that in place the sshkeysign_pwn exploit still doesn’t work and there are logs like the following:
type=AVC msg=audit(1778833455.726:57355191): avc: denied { read } for pid=6941 comm="ssh-keysign" name="ssh_host_rsa_key" dev="vda" ino=15492 scontext=user_u:user_r:user_t:s0 tcontext=system_u:object_r:sshd_key_t:s0 tclass=file permissive=0
type=SYSCALL msg=audit(1778833455.726:57355191): arch=c000003e syscall=257 success=no exit=-13 a0=ffffffffffffff9c a1=55eadec43061 a2=0 a3=0 items=0 ppid=6933 pid=6941 auid=1000 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=144 comm="ssh-keysign" exe="/usr/lib/openssh/ssh-keysign" subj=user_u:user_r:user_t:s0 key=(null)ARCH=x86_64 SYSCALL=openat AUID="test" UID="test" GID="test" EUID="root" SUID="root" FSUID="root" EGID="test" SGID="test" FSGID="test"
So if you could find some secret data in a file that’s only restricted by Unix permissions and user_t is granted ptrace access then a variant of that exploit could work.
When user_t is allowed ptrace access the chage_pwn exploit fails with the following log entries, so any binary that runs in a different domain can’t be used in that situation.
type=AVC msg=audit(1778833908.020:57434896): avc: denied { ptrace } for pid=7037 comm="chage_pwn" scontext=user_u:user_r:user_t:s0 tcontext=user_u:user_r:passwd_t:s0 tclass=process permissive=0
type=SYSCALL msg=audit(1778833908.020:57434896): arch=c000003e syscall=438 success=no exit=-1 a0=3 a1=5 a2=0 a3=1b7e00000000 items=0 ppid=5632 pid=7037 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=144 comm="chage_pwn" exe="/home/test/a/ssh-keysign-pwn/chage_pwn" subj=user_u:user_r:user_t:s0 key=(null)ARCH=x86_64 SYSCALL=pidfd_getfd AUID="test" UID="test" GID="test" EUID="test" SUID="test" FSUID="test" EGID="test" SGID="test" FSGID="test"
In a “strict” configuration with users having the user_t domain a Debian system is not vulnerable to these exploits unless there is some configuration error or some unusual configuration choices. Users with the unconfined_t domain can successfully run the exploits.
New Comic: Adjacency
Freexian Collaborators: Debian Contributions: Detecting undeclared file conflicts, contributors.debian.org mini-sprint, security-tracker performance and more! (by Anupa Ann Joseph) [Planet Debian]

Contributing to Debian is part of Freexian’s mission. This article covers the latest achievements of Freexian and their collaborators. All of this is made possible by organizations subscribing to our Long Term Support contracts and consulting services.
The duplication checker,
the Multi-Arch
hinter, and the /usr-move analyzer
share significant parts of their code. While the
/usr-move transition is complete, the other
tools needed a bit of love. Helmut added Python type annotations,
slightly improved the performance of the duplication website and
shared more code between these tools.
Building upon this Helmut looked into file conflicts of various
kinds such as unrelated packages installing overlapping files, file
type conflicts, mismatching directory metadata and shared files of
Multi-Arch: same packages with varying content.
Implementing reliable detection proved to be difficult due to the
amount of corner cases. So Helmut semi-manually
filed
bugs. In that process, it became apparent that binNMUs
do not reproduce SOURCE_DATE_EPOCH across
architectures and therefore some shared files embedding the build
date would vary in content. Additionally, a significant number of
reports required further correspondence.
Enrico Zini met with Mattia Rizzolo to continue the work started at DebConf 25 on crediting contributions done via salsa, and to catch up with accumulated site issues.
Building on the same kind of infrastructure used to notify tag2upload, salsa.debian.org triggers a webping on pushes and merge request activity, which causes a small JSON payload to be queued in a private directory on contributors.debian.org.
We worked on processing, filtering and aggregating the files in the queue into a private, staging database table. When configuring a data source on the site, it is now possible to configure automated submission of contributions from information in the staging table. This makes it significantly simpler to credit contributors for all teams that use Salsa as their code repository and coordination tool, as the site can take care of the data mining for you.
See more details in the sprint report posted to debian-devel-announce.
MiniDebConf Campinas was held between April 23rd and 25th, at the State University of Campinas, and was preceded by a MiniDebcamp between April 20th and 22nd. Freexian was Gold sponsor for the event, and Freexian collaborators were active contributors to the conference success.
Lucas and Santiago delivered a talk about Debian LTS during MiniDebConf Campinas 2026, where they described how the LTS project benefits Debian users and developers, while strengthening Debian itself.
Lucas and Antonio delivered a talk about internship programs in Debian during MiniDebConf Campinas 2026, with the goal of getting students interested in working in and with Debian.
Lucas took part in the MiniDebConf Campinas content team, reviewing/accepting talks and building the schedule.
Antonio led a session where he invited the audience to weigh in on current controversies in Debian. The session presented playful elements as colored signs to denote agree/disagree, and was not recorded, to help people feel more comfortable about speaking up. He might be convinced to lead a similar session at the next DebConf.
Antonio also organized a debate to discuss the consequences of new Brazilian regulation for the protection of children and adolescents in digital spaces for Debian and other free operating systems, but also for the free software community in general. This session was very fruitful and will lead into further actions, as one of the main outcomes was the realization that the free software community must follow the discussion leading up to similar regulations more closely to avoid being caught by surprise when they come into effect.
Prompted by spontaneous influx of web requests on Freexian’s security-tracker back in February, we considered the options for managing that demand. One of our mitigations was making it faster. To that end, Helmut sent two MRs towards improving the situation. There are four notable improvements. The use of Python’s str.translate generally speeds up rendering of larger templates. Indexing the CVE names avoids a costly sequential table scan. Avoiding FFI calls while sorting and reducing the queryset speeds up the source package view. Emilio reviewed and deployed the changes on to the Debian instance. Together these changes provide a twofold speedup on both Freexian’s and Debian’s instance on average.
Ian Jackson (not affiliated with Freexian) reported that dput-ng could lose data when using the local install method, which could cause misleading results in tests of other packages; they also filed an initial merge request to fix it. Colin improved this to isolate its tests properly, and uploaded it.
foo2zjs, one to fix a
bug and one to improve packaging. As there have been several CVEs
published for cups he also did an upload of a new upstream version.
Unfortunately this introduces a regression and another upload was
needed to take care of a crash. The patch for one CVE also broke a
test script, which is used by lots of printing packages in Debian.
As a result some autopkgtest runs failed. This could be fixed as
well and the only remaining issue that needs some more
investigation is related to cups-pdf. It is also worth
mentioning that some issues related to the apparmor configuration
of cups could be resolved.python-pipx,
python-mitogen, platformdirs,
python-authlib, python-discovery,
distro-info-data, python-virtualenv,
python-certifi, python-wheel,
pypy3.distro-info-data updates to
stable and oldstable proposed updates, with the latest Ubuntu
release.libxpm to address a security
issue.groff to 1.24.1; 1.24.0
and 1.24.1 were the first upstream releases since 2023 and had
extensive changes, so this took some time to get right.openssh, and issued the corresponding
BSA-130 for trixie-backports.openssh to 10.3p1.Waking Up, p18 [Ctrl+Alt+Del Comic]
The post Waking Up, p18 appeared first on Ctrl+Alt+Del Comic.
Girl Genius for Friday, May 15, 2026 [Girl Genius]
The Girl Genius comic for Friday, May 15, 2026 has been posted.
FFS code review and Emacs extensibility with Protesilaos [Planet GNU]
In the recent weeks I've been engaging Prot as an Emacs coach to help
with doing review passes over my upcoming ffs package
as I work on polishing and documenting it in preparation for
offering it for inclusion in GNU ELPA.
UPDATE 2026-05-15 08:50:10 -0400: Prot also published an article about our session on his website: https://protesilaos.com/codelog/2026-05-15-emacs-amin-bandali-ffs-display-buffer-org-capture/
Today we had our third session where we started by reviewing and
talking about my recent changes to ffs, then ventured
to other Emacs-related topics with the overarching theme of the
flexibility and extensibility of GNU Emacs, including
display-buffer-alist, keyboard macros, defining a
custom
ox-bhtml Org export backend derived from Org's
ox-html for ultimate flexibility when exporting my
site's pages from Org to HTML, Org capture, plain text files and
Emacs's diary and how it compares to
org-agenda, and keeping a journal with the help of
Emacs.
Here is the video recording of our session, which I share with Prot's permission:
Sorry, this embedded video will not work, because your web
browser does not support HTML5 video.
[ please watch the video in your favourite streaming media player
]​
You can view or download the full-resolution video from the Internet Archive.
Lastly, here is the snippet Prot shared for having Isearch treat space as a wildcard, helpful for more easily matching multiple parts of a line:
(setq search-whitespace-regexp ".*?")
(setq isearch-lax-whitespace t)
(setq isearch-regexp-lax-whitespace nil)
Take care, and so long for now.
Daniel Baumann: Debian: Linux Vulnerability Mitigation (ssh-keysign-pwn) [Planet Debian]
After the Linux local root privilege escalations of the last two weeks, the bug of today is ssh-keysign-pwn [CVE-2026-46333] which allows to read root-owned files as an unprivileged user.
Exploiting the vulnerability doesn’t require to load any specific modules like the bugs from the last weeks, this one needs to be fixed by rebooting the system into an updated kernel.
I’ve cherry-picked the upstream commit to fix it in trixie-fastforward-backports (linux 7 backports for trixie), confirmed that the exploits don’t work anymore, and submitted a merge request for sid.
Updates:
linux-vulnerability-mitigation 20260515-1 contains a partial mitigation for ssh-keysign-pwn (this makes all exploits known so far to stop working, however, there’s definitely more needed), thanks to Salvatore Bonaccorso (carnil):
echo 2 > /proc/sys/kernel/yama/ptrace_scopelinux-vulnerability-mitigation is uploaded to sid - until it is available on deb.debian.org, use people.debian.org/~daniel
linux 7.0.7-1 is uploaded to trixie-fastforward-backports as 7.0.7-1~ffwd13+u1, replacing the previously cherry-picked 7.0.4-1~ffwd13+u2 upload
Added references to [CVE-2026-46333]
The Big Idea: Thomas Elrod [Whatever]

It can be hard to have solid opinions and identities when we live in a world of mixed messages and misinformation. With propaganda running rampant, how can we be sure if reality is really real? Author Thomas Elrod plays with this idea of a false reality in his newest novel, The Franchise. Tune in to his Big Idea to see how one man’s fiction may be another man’s reality.
THOMAS ELROD:
I think we are all a little fatigued by the long-running IP franchises on TV and in movies. Sure, we all had a good time watching Harrison Ford return as Han Solo or were happy to see Captain America wield Thor’s hammer, but lately? Eh? It all feels tired, as long-running franchises often do. Good thing Hollywood has plenty of other films and shows in development and we can look forward to some fresh stories in the coming years…
Okay, so there’s the rub. It certainly feels like not only will our big cultural mega-franchises not be retired, it is as if they can’t be. Too much of the shareholder value of Disney or Warner Brothers or Netflix is wrapped up in these very expensive properties for these very large corporations (always merging together into even larger corporations) to ever stop. They can’t. They have to continue generating revenue and growth.
What happens to culture if it can never stop recycling itself?
My big idea was this. I wanted to imagine a film franchise that just kept on going forever, kept expanding and looking for new ways to juice the IP. I was partially inspired by the failed Star Wars hotel, which tried to create an immersive storytelling experience for guests in Disney World, but which was too expensive and wonky. However, it’s not hard to see how Disney was using that experience to commodify LARPing and cosplay and other fan activities into something they could monetize and turn into content.
So I did the thing Science Fiction writers do and I extrapolated, imagining a Truman Show-esque environment where a film studio sets up a living set of a popular fantasy film franchise and populates it with people who have had their memories changed to believe they are real characters in this world. Plots are put into motion, writers and actors are hired to push the story along, and everything is secretly filmed. It’s pitched to fans as a limited-time experience, where you can sign up to have your memory temporarily altered so you can live in this world you love so much. Surely, nothing will go wrong!
The challenge as a writer is how to sustain this concept for the course of an entire novel and also how to build a real story out of it. This is always the problem with high-concept ideas. It’s one thing to come up with a hook, it’s another to create interesting characters and engage them in the twists and turns of an effective story that doesn’t become repetitive.
For me, the thing I held onto was the larger “What if” that this concept suggests, which isn’t just about intellectual property in Hollywood but about one’s identity in a world of misinformation. We all live in a kind of constructed reality, whether we know it or not, based on our sources of news, social media, entertainment, etc. We all know people who seem to live and exist in a totally different conception of the world than our own, and this is both baffling and frustrating. But we still have agency over our own lives, and if we want to spend our energy on, say, denying the efficacy of vaccines or insisting a fair election was rigged, to what extent does a person need to take responsibility for those opinions and to what extent is it possible (or ethical) to blame their misinformation reality on their beliefs?
This is a thornier question but also one which provided a way into the story, which very early on I knew was going to include many different character POVs, some from people who play a minor role in the actual plot but whose perspective ends up being different or interesting. Since some people in the story know what is really going on, some have partial information or suspect something, and some have their own views on what is happening despite possibly knowing what is “real,” the great gift of interior and perspective that fiction affords was my way to start building characters and story. My book would be about this confluence of perspectives, and what happens when they clash into one another.
Along the way there was lots of opportunity for light satire about Hollywood, deconstruction of modern fantasy storytelling, and a lot else, but being able to marry theme and structure was the key to making sure my Big Idea, my book’s hook, actually worked and remained interesting over 350 pages. It ended up being a blast to write, so I hope that comes across to everyone else and that they have just as good a time reading it.
The Franchise: Amazon|Barnes & Noble|Bookshop|Powell’s
Author Social: Website|Instagram|Bluesky|Threads
Read an excerpt on Reactor.
I have Claude Code hooked up to Chrome. It's crawling around inside the DOM of the running system, like humans do in a debugger. It's a bit like Fantastic Voyage if you've ever seen it. I've been waiting for this moment. Now we can do some really nice UI work.
The data is abundantly clear: the EU Digital Markets Act is working [OSnews]
The EU’s Digital Markets Act has been in effect for a mere two years, but despite all the obstructionism, malicious compliance, and steady stream of lies from US tech companies and Apple in particular, it seems this rather basic consumer protection legislation is already bearing fruit.
In a two-year review report on the DMA, the European Commission notes that alternative browser usage has soared, data portability solutions are spreading, alternative application stores are growing, and much more. On top of that, end users can now opt out of companies combining various data sources for profiling, and a “significant share” of EU users have apparently done so. Furthermore, end users in the EU can now remove preinstalled applications (whereas American users cannot) and they can download their data from big technology companies and authorise other companies to use that data.
Mozilla published a blog post detailing how it has profited from the Digital Markets Act, and it ain’t no peanuts: every ten seconds, someone on iOS chooses Firefox on iOS’ browser choice screen, which amounts to more than six million Firefox users on iOS. They also tend to stick with Firefox on iOS, as retention is five times higher when this browser is chosen through a browser choice screen.
Academic analysis points the same way. Independent researchers compared Firefox daily active users in the EU with 43 non-EU countries. Comparing the 15 months before and after browser choice screens rolled out on iOS, they found that Firefox daily active users (DAU) were 113% higher in the EU than it would have been without the DMA. On Android, it was 12% higher. The smaller Android effect is due to the fact that Firefox usage there started from a much higher base, and the Android rollout has been more uneven than on iOS. The research also shows that the DMA’s effect is growing over time.
↫ Gemma Petrie and Tasos Stampelos on the Mozilla blog
Both the underlying data in the EC report and the data Mozilla provides indicates that the Digital Markets Act is having real and tangible effects, for end users, developers, and companies alike. The neverending barrage of anti-EU and anti-DMA propaganda from Apple, the US government, and their PR attack dogs seems to have been weirdly justified, from the American perspective: basic consumer protection legislation does, indeed, work to lessen the stranglehold major technology companies have on our lives.
And considering just NVIDIA’s market cap alone is now equal to more than 17% of the United States’ GDP, it makes sense the Americans are unhappy with the DMA. That’s going to make one hell of a sound when it pops.
[$] Policy groups for memory management [LWN.net]
The kernel's control-group subsystem works well for resource management, Chris Li said at the beginning of his memory-management-track session at the 2026 Linux Storage, Filesystem, Memory Management, and BPF Summit. Control groups work less well for other use cases, though. He was there to present his proposed enhancement, called "policy groups", that would address some of the shortcomings that he has encountered. A consensus on how this feature should look still seems distant, though.
A constant-space linear-time algorithm for deleting all but the 10 most recent files in a directory [The Old New Thing]
Say you have a directory full of files, and you want to delete
all but the 10 most recent files. Is there a way to tell
FindFirstFile to enumerate the files in
date order?
No, there is no way to tell
FindFirstFile to enumerate the files in
date order. The files enumerated by
FindFirstFile are produced in whatever
order the file system driver wants. For example, FAT typically
enumerates them in the order the files appear in the directory
listing, which could be in order of creation if the files were
added sequentially, or some mishmash order if there were renames or
deletions mixed in.
Since you can’t control the order in which the files are enumerated, you’ll have to do the sorting yourself. The naïve solution is to read in all the entries, sort them by last-modified date, and then delete all but the last ten. This is O(n) space and O(n log n) running time.
But you can do better.
This job calls for a priority queue. A priority queue is a data structure that supports these operations, where n is the number of items in the priority queue.
The above description is for a max-priority queue. There is also a min-priority queue where the final two operations are “find smallest” and “remove smallest”. The two versions are equivalent because you can just use a reverse-sense comparison to switch from one to the other.
What we can do is enumerate all the files and add them one by one to a min-priority queue sorted by modified date. The priority queue holds the newest items. If the priority queue size exceeds 10, then we delete the file corresponding to the “smallest” (earliest) entry in the priority queue, and the remove that entry from the priority queue.
Since the priority queue size has a fixed cap, all of the operations run in O(1) time because the value of n is bounded by a predetermined constant. (Of course, the larger the cap, the larger the constant in O(1).) The overall algorithm then runs in O(n) times, where n is the number of files in the directory.
Here’s a sketch of a solution. To get a min-priority heap,
we have to reverse the sense of the comparison in
dateAscending.
constexpr int files_to_keep = 10;
auto dateAscending = [](const WIN32_FIND_DATA& a, const WIN32_FIND_DATA& b) {
return CompareFileTime(&a.ftLastWriteTime, &b.ftLastWriteTime) > 0;
};
std::priority_queue<WIN32_FIND_DATA,
std::vector<WIN32_FIND_DATA>, decltype(dateAscending)>
names(dateAscending);
WIN32_FIND_DATA wfd;
wil::unique_hfind findHandle( FindFirstFileW(L"*.*", &wfd));
if (findHandle.is_valid())
{
do
{
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
// Skip directories
continue;
}
names.push(wfd);
if (names.size() > files_to_keep) {
DeleteFileW(names.top().cFileName);
names.pop();
}
} while (FindNextFileW(findHandle.get(), &wfd));
}
It’s unfortunate that std::priority_queue
doesn’t have a deduction guide that deduces the
Comparator. We have to specify it explicitly, and
since it comes after the Container, we have to write
out the container type manually instead of allowing it to be
deduced.
It’s also unfortunate that it’s hard to call
reserve() on the vector hiding inside the
priority_queue. This means that the
names.push() could throw an exception. At least we use
an RAII type (wil::unique_hfind) to ensure that the
find handle is not leaked.
If you have access to std::inplace_vector, you
could use a
std::priority_queue<WIN32_FIND_DATA,
std::inplace_vector<WIN32_FIND_DATA, files_to_keep + 1>,
decltype(dateAscending)> names(dateAscending);
to avoid memory allocations entirely. (It also makes it clearer that the algorithm is constant-space.)
This is an example of a so-called online algorithm, an algorithm that does its work incrementally rather than requiring all of the input before it can start working.
Exercise: What if the task was to delete the 10 oldest files?
The post A constant-space linear-time algorithm for deleting all but the 10 most recent files in a directory appeared first on The Old New Thing.
Why do Windows client editions on 32-bit x86 systems artificially limit RAM to 4 GB? [The Old New Thing]
Windows XP SP 2 introduced Data Execution Prevention (DEP), which takes advantage of a then-new feature of x86-class processors that allowed you to deny execution from data pages. The new feature was Physical Address Extensions (PAE) which also allowed those 32-bit processors to access physical RAM above the 4 GB boundary. Although you could turn on Data Execution Prevention on all systems, only server products would use the memory above 4 GB.
A reader asked, “What was the real reason client editions were prevented from using more than 4 GB of RAM?”
The use of the word “real” in the question implies that the reader believed that the official reason was a lie, and there was some nefarious evil reason for the limitation. It’s unclear what this nefarious reason would be. Maybe the reader thought the “real” reason was “To force users to buy copies of Windows Server, which is far more lucrative”, though that doesn’t make sense. The cheapest version of Windows Server 2003 32-bit edition that supported more than 4 GB of RAM was Enterprise Edition, which sold for $3,999.¹ This is an outrageous price for a consumer operating system.
The reason why consumer products don’t use RAM above 4 GB is explained in the documentation that accompanied the introduction of the feature under “Driver issues”.
Typically, device drivers must be modified in a number of small ways. Although the actual code changes may be small, they can be difficult. This is because when not using PAE memory addressing, it is possible for a device driver to assume that physical addresses and 32-bit virtual address limits are identical. PAE memory makes this assumption untrue.
…
[M]any device drivers designed for these systems may not have been tested on system configurations with PAE enabled. In order to limit the impact to device driver compatibility, changes to the hardware abstraction layer (HAL) were made to Windows XP SP2 and Windows Server 2003 SP1 Standard Edition to limit physical address space to 4 GB.
As explained above, memory above 4 GB was not enabled for compatibility reasons. Many drivers inadvertently assume that all physical address fit in 32 bits. (DMA drivers for example.) Those drivers would corrupt memory if memory above 4 GB were made available.
Memory above 4 GB is enabled on server because if you are a server administrator, you don’t install random drivers for that hand-held scanner you bought at Best Buy from the bargain bin for $10. Server administrators typically run only the plain vanilla drivers that come with Windows. (They don’t even install manufacturer video drivers.) All the drivers that come with Windows have been tested for addresses above 4 GB. That 2001 driver for the $10 handheld scanner has not, and there’s a good chance that it will truncate addresses above 4 GB and corrupt memory as a result.
The consumer market and the server market are very different in terms of usage pattern. Consumers will install practically anything. Server administrators install as little as possible. Consumers have no technical expertise. Server administrators have access to highly-skilled staff.
Of course, this is all now a historical oddity. Systems with only 4 GB of RAM are vanishingly rare, and Windows began discouraging the production of systems using 32-bit processors in 2020, finally ending the production of 32-bit editions entirely with Windows 11.
¹ The only other version that supported more than 4 GB of RAM was Datacenter Edition, and on the pricing sheet I found, they didn’t even bother listing the price. If you have to ask, you can’t afford it.
The post Why do Windows client editions on 32-bit x86 systems artificially limit RAM to 4 GB? appeared first on The Old New Thing.
Classic 7 combines Windows 7’s Aero Glass with Windows 10 [OSnews]
Interest in classic user interface design is spiking, and today we’ve got another great example, highlighted yesterday by Micheal MJD. Classic 7 combined Windows 10 LTSC with a whole slew of themes and deep modifications to deliver Windows 10, but made to look, feel, and even act like Windows 7.
Classic 7 is a Windows 10 (IoT Enterprise LTSC 2021) modification made to look 1:1 to Windows 7. It has all of the goodies that Windows 7 had along with some extras included! Classic 7 features a 1:1 OOBE recreation, meaning it’ll feel just like your PC simplified once more.
↫ Classic 7 website
As Micheal MJD’s video shows, this is much more than a mere theme, and extends far deeper into the operating system than these kinds of projects generally do. I have no idea how stable this really is, or if it’s even remotely legal to do something like this, but who the hell cares – this is incredibly fun, and seems quite well done.
Generative AI in the Real World: Chang She on Data Infrastructure for AI [Radar]
As a pandas core contributor and early Parquet adopter who built AI data pipelines at streaming company Tubi TV, Chang She saw firsthand why the traditional data stack breaks down for AI workloads—and founded LanceDB to fix it. Chang joined Ben Lorica to explain why vector databases are too narrow a solution for modern AI data needs, and what a true multimodal data infrastructure actually looks like. Chang and Ben get into why the Lance file format is quickly becoming the open source standard for multimodal data, how the rise of agents is exploding data infrastructure demands, why open-weight models are the enterprise cost shift to watch in the next 12 months, and more. “Trillion is the new billion,” Chang says, and the enterprises that set up their data infrastructure now for that scale will be the ones that succeed.
About the Generative AI in the Real World podcast: In 2023, ChatGPT put AI on everyone’s agenda. In 2026, the challenge will be turning those agendas into reality. In Generative AI in the Real World, Ben Lorica interviews leaders who are building with AI. Learn from their experience to help put AI to work in your enterprise.
Check out other episodes of this podcast on the O’Reilly learning platform or follow us on YouTube, Spotify, Apple, or wherever you get your podcasts.
This transcript was created with the help of AI and has been lightly edited for clarity.
00.35
All right, so today we have Chang She, CEO and cofounder of
LanceDB, which you can find at lancedb.com. Tagline is
“Build better models faster.” So Chang, welcome to the
podcast.
00.49
Hey Ben, super excited to be here.
00.52
All right, we’ll jump into the core topics, but a bit
of a background there for our listeners who may not be familiar
with you. You worked on pandas—you were a core member of the
pandas team. You were very early on with Parquet as well. And at
some point, you became convinced that for AI workloads, these
former tools that you worked on—Parquet, pandas—were
not enough. So what was the moment of realization for you that
these traditional tools that were foundational for analytics were
lacking?
01.33
Absolutely. So I worked at a company called Tubi TV, which was
video on-demand and streaming. So movies and TV. And it was there
that I ended up dealing with a lot of I guess what I would call AI
data. So we had to have embeddings for personalization, video
assets, image assets, audio, text for subtitles and all of those
things. All of those did not really fit into the traditional data
stack—you know, pandas, Spark, Parquet, and even Arrow. So
that was sort of the inspiration for me to start LanceDB.
02.15
And Chang, at this point, do you think that more people are
aware of this disconnect between those tools and the kinds of tools
they’ll need moving forward?
02.30
When I talk to data infrastructure folks who are building and
managing that stack for dealing with this kind of data,
there’s broad recognition that something has to be done, that
the existing stack is just not sufficient to deal with this data.
And what’s more interesting is that this data is also
becoming a lot more valuable because of AI.
02.52
So obviously, before you came on the scene, there was this
wave of vector stores or vector databases which were optimized for
retrieval. So let’s say I’m a listener and all I have
is text. Do I need anything beyond the vector
database?
03.17
Even if you just have text and you just have text embeddings, the
creation of those embeddings and then the management of all of
those data assets—your metadata, the actual documents, how to
serve that—a lot of that falls outside the purview of a
vector database. The vector databases tend to be very narrow
solutions for a very narrow problem, whereas something like LanceDB
takes a broader view of, “When you have AI data, what are all
the things you need to do to it throughout that life cycle of
application development or model development? And how do we build a
tool and a system that allows you to simplify your life by having
one system to do all of the major workloads throughout that life
cycle?”
04.13
And by the way, for our listeners, there’s LanceDB
and then there’s the open Lance file format, and I wanna ask
you about this file format in a second, but you mentioned something
about vector databases and you were kind of saying that, you know,
they’re not great at creating the embeddings. But Chang, the
vector database people, they never really positioned themselves as
responsible for creating the embeddings, right? So they just assume
that you’ll show up with embeddings.
04.47
That’s right. But even if you take that narrow view, what we
find in enterprises today is a lot of folks have an offline
generation process in the data lake itself, where they chunk up the
documents, then they generate the embeddings, then they have what
they call an offline store, then they have to copy-paste that data
into a vector database for serving. So there’s a lot of data
syncing [and] data movement, so it creates expense and
there’s a lot of complexity.
And so that’s the. . . Even for just text-based workloads, even just for pure vector search, that tends to be a big pain point. And then two is vector databases, a lot of times, don’t pay as much attention to the overall retrieval stack, right? If you remember, the task for users is I want to find the right data in my dataset, and vector search is just one technique. You have many different kinds of techniques, full-text search, or even just outside of search. You might have SQL queries that you want to run, filters, regexes, all of that goes into a rich and very accurate retrieval process. And vector databases, in general, do not expand beyond just that simple semantic or vector search.
06.10
So I mentioned the Lance open file format,
which. . . I guess the shortcut that people use is like
Parquet for AI, but it’s actually both a file and table
format. So maybe give our listeners, Chang, a high-level
description of the Lance format and why it’s become so
popular.
06.33
Lance is what we call a lakehouse format. It is quickly becoming
the new open source standard for multimodal data. And what I mean
by a lakehouse format is that it spans a couple of different
layers. So you mentioned in the beginning a file format. So this is
the equivalent in the stack to Parquet, where we would talk about
“How do we lay out the data in a particular file?” And
at this layer, the innovation in Lance is that it is really, really
good for random access without sacrificing any speed and scans. And
our files are actually smaller than Parquet for many AI
datasets.
The next layer is usually what we call a table format that is
occupied by projects like Iceberg and Delta and Hudi today. And
[the] Lance format comes in at this layer. We have much better
designs, more optimizations for machine learning experimentation,
so doing backfills easily, doing two-dimensional data evolution,
being able to handle really large blob data like videos and images,
and then just being able to do a branching strategy that supports
true sort of Git for data semantics that takes the best of Parquet
and Iceberg.
And then finally, there’s a third layer, which is about indexing so that you can have fast scans, fast searches, fast queries. So when you put all that together, that’s what we call the Lance lakehouse format.
08.11
I described Lance as open. Can you kind of clarify what
that means, because I actually don’t know?
08.19
Number one is Lance format is open source. It’s Apache 2.0
license. You can find it on our GitHub. We have community
governance; [we] have PMCs that are from lots of external
contributors. And then I think beyond that, there’s open
source and there’s open source, right? I think what Lance
format is designed for is a true open architecture as well. So not
only is it open source; it also plays really well into the rest of
the data ecosystem.
So for example, when people compare us to Parquet and Iceberg, well, we’re not designed as a head-to-head competitor with Parquet and Iceberg. We will slot into the same Polaris data catalog, or you can have one unified view on all of your datasets, but then under the hood it can be Parquet/Iceberg for BI data and Lance for your AI data. And then Lance itself plugs in natively to Spark and pandas and Polars and DuckDB and any sort of open data tooling that you’re already used to.
09.31
So operationally then, Chang, if I’m a data
architect, should I think of Lance as, “OK, so I have Parquet
and these table formats like Delta and Iceberg for my structured
data. And then if it’s nonstructured, which could mean video,
audio, and also text, right? So then I have to bring in this other
format, Lance.” Is that operationally what happens in
practice?
10.07
Yeah, often what the data infra folks and data engineers we talk to
interact with is the tooling, right? So they’re looking at
their data pipelines, they’re looking at maybe their Spark
jobs or their search applications, and then those are the jobs that
actually interact with the underlying storage, for example. And so
instead of. . .
And that data transfer process is actually really easy through Apache Arrow. And most of the time, it’s really just one line of code change. It’s the same Spark code, for example. Instead of writing to Parquet, you’re writing to Lance. And it simplifies your overall data pipeline by bringing all of your tabular data and metadata along with your multimodal data all in the same place and also embeddings.
11.05
And then in terms of workload, you alluded to the fact that
the previous-generation vector source, they excelled at something
very specific, maybe retrieval. So is Lance equally specialized in
the sense that, “All right, Lance is great for X, and X might
be, I don’t know, analytics, but it doesn’t excel in
other things”? Describe the kinds of workloads that teams
that are using Lance are using.
11.39
So very high-level, the summary is LanceDB, our enterprise data
platform, excels at helping our customers manage really large-scale
AI data. So embeddings for search, adding new, adding new features
and extracting new, new columns, enriching their dataset, doing
data curation and exploration, and then feeding that to GPUs really
quickly for distributed training jobs so that they can get as high
GPU utilization and as high auto-flops utilization as they can.
12.20
You’ve used the word multimodal a few times, and
I’ve always been a proponent of people really making sure
that their data infrastructure is positioned for this multimodal
world. But sometimes I question this assumption in the following
sense, right? Is multimodality a Bay Area bubble thing? In other
words, if I go to the East Coast and talk to, I don’t know,
Goldman Sachs or an insurance company, are they still grappling
with legacy systems that are mostly structured data? What they want
to do is be able to do all this fancy AI stuff now with agents, but
still using the old-school data that they have.
13.12
I think when we talk about multimodal data, a lot of times what
comes to mind first is video generation, image generation, all of
those. Self-driving cars. . . So there’s a lot of
high-tech, cutting-edge applications that are multimodal. But I
think if you look at more traditional enterprises, they already
have a lot of multimodal data.
So you just mentioned insurance: They have millions of documents and PDFs and contracts lying around. Insurance especially will have top-down views of houses and boundaries so that they can figure out and assess risk a little bit better. The way I think about it is before AI, it’s just really hard to get value out of that data. They just really haven’t paid as much attention.
So it’s kind of like when I clean up my house, what I like to do is just like move all the mess into a back room or storage. And so then I don’t have to think about it, right? My wife yells at me all the time. She opens up the storage and everything kind of falls out. And so I feel like with multimodal data, this is kind of what traditional enterprises have done: They didn’t know what to do with it. They stuck it in some directory in SharePoint or something like that and kind of just like leave it there for storage. But there’s actually a tremendous amount of value and AI is helping them unlock all of that. So I think in the next few years, especially, we’re going to see a lot more attention paid to, “If we can get a lot more value out of this data, how do we actually manage it? How do we work with it? And how do we combine it with the rest of our data stack so that it’s governed within a single entity?”
15.06
The hot thing a few years ago in data infrastructure was
the lakehouse, right? Great term we introduced.
[laughs]
15.18
I wonder who came up with that one. [laughs]
15.22
Yeah. So you folks are starting to use the term multimodal
lakehouse. So compare the status of the lakehouse. . .
[The term] is I think now widely used, right? And then now
you’re introducing the multimodal lakehouse. So where is the
multimodal lakehouse now kind of mature, and where does it still
need to do some work?
15.50
Just for the audience who’s not as familiar, the really,
really simplified way I think about just a lakehouse is you have
all your data in one place in the data lake, and then you have a
combined data warehousing layer on top that provides structure,
tables, and structured ways to run workloads on all of that
data.
Now, the way we think about multimodal lakehouse is in a couple
of different ways. One, the data changes so that you go from purely
tabular data or maybe like clickstream data to now all sorts of
multimodal data. So from embeddings to all of your multimedia
types. So that changes a lot about how you can read and write data
efficiently, how you manage that, how you synchronize that with
metadata.
Number two is the workloads also are multimodal. You’re not
just thinking about running SQL and analytics workloads.
You’re now thinking about search. Now you’re thinking
about training. Now you’re thinking about feature engineering
and “How does your lakehouse interact with GPU
clusters?” and all of those things that traditional
lakehouses are not very good at.
And then I think the third layer, where the meaning
“multimodal” comes in, is traditional lakehouses tend
to be good only at batch offline processing. And then if you want
to do serving, online processing, you probably need to introduce a
sort of an OLTP kind of database or some system that’s
primarily for serving. Well, with LanceDB, because of the
innovations in the format, you can actually do both at the same
time. So the online-offline scenario can also become multimodal in
this sense.
17.44
So if I understand what you’re saying, you’re
multimodal in multiple senses. So multimodal data types, multimodal
workloads, and multimodal kinds of operations. So right now, in the
Databricks world, they have—I don’t think they used the
word multimodal. If anything, they go back to that HTAP kind of
thing, so [a] hybrid transactional analytics kind of processing
engine. I think through an acquisition, now they are very good at
Postgres. I forget what they call this. [Chang: A lakebase.] So
they have the transactions, and they have the analytics. So what
you’re saying is that your vision of the multimodal lakehouse
has that hybrid transactional analytics, multimodal types of data,
and then multimodal workloads. Is that a fair summation? Surely,
Chang, certain aspects of what you just described are more fleshed
out than others, right? So what areas do you anticipate you folks
will be working on hard, in terms of multiple notions of
multimodality?
19.16
Number one is actually scale. Scale is actually the biggest driving
factor late last year and this year. And a lot of that has been the
rise of agents. Because of the rise of agents, data volume and
scale, query throughput and scale, and performance and latency
requirements, all of those things have just kind of been exploded.
And that’s the thing that we find we’re uniquely suited
for. And that’s something that we’re pushing a lot on.
Oftentimes when we talk to customers, really what we think about is
like, trillion is new billion. And we have folks who probably are
operating at a thousand times the scale that they were just a year
ago or two years ago.
20.22
I guess the hack that people will do for some of these
things, Chang, is just let’s put the files in S3 and then use
a database somehow. So are you still seeing a lot of people kind of
try to do this?
20.39
Yeah, I mean, I think there are a few attempts that [are] doing
that. And I think there’s generally a trend because of the
data scale, like object storage is kind of the only sort of cost
effective and scalable storage backend for a lot of these newer
data storage systems. I think where the challenge lies for data
infrastructure providers is “How do you actually have
scalability and high performance and maintain the cost advantages
of S3 and object store?” That is, I think, the difficult
challenge. And so we actually have a recent blog article talking
about how we do that at 10 billion-vector scale.
At smaller scales, that’s actually really easy. You just
slurp up all the data from S3 into some caching system. You can
serve it from there in any in-memory system. That’s a really
easy problem. There’s tons of open source projects, Lance,
for example, that can help you do that pretty effectively. And then
the challenge is really at scale. If you have 10 billion vectors,
pretty much, your only cost-effective solution is to store that on
object storage. Then, you know, imagine the query times if you were
just targeting S3 directly. So then indexing challenges and search
and caching and all of that, that becomes a big distributed systems
problem. So that’s what we solve.
22.16
Like you said, many data engineering and data
infrastructure teams are trying to think through, “So what
does our infrastructure look like in a world of agents?”
right? So imagine—this isn’t happening yet—the
equivalent of OpenClaw in enterprise, where a single employee might
have 10 of these AI delegates or AI assistants. Some of the things
that come up: One, identity management, so access control, identity
management. Secondly, maybe some of these AI agents and AI
delegates don’t really need anything permanent. They just
want something ephemeral. So stand up a LanceDB for a minute and
then make it go away. Are these some of the things that you are
starting to think of?
23.14
Yeah, so for our cutting-edge customers, that’s already the
reality. We specialize a lot in infrastructure for model training,
for example. So if you think about features, like a researcher
might have, “Hey, I have a feature idea. There’s two
input features, each with 10 variants. And then I have some output
feature that combines the two.” Well, now I’ve got 100
different variants. So before, there was a limited [number] of
variants that I can test as an individual researcher manually. But
now I can use agents to run all of that automatically. And I can
just go to sleep and it’ll run. Well, now humans can go to
sleep, but then the agents are presenting a lot of load on the
underlying data infrastructure. This year we’re talking about
going from hundreds of queries per second from plain RAG a couple
of years ago to a hundred thousand queries per second in this land
of agents.
And then when it comes to security and compliance, there’s a lot of churn in the stack about sandboxing and ephemeral systems. And when we talk about object storage, this is actually a big, even a bigger challenge, right? So if your source of truth is on object store, that’s actually the only way you can make this ephemeral workload work out well so that when you have hot data, you cache it, you serve it for a time, and then that can go away. And then the cache can expire it [to] be replaced by the next hot workload. And you can do that without having to pay for really expensive memory and NVMe for all of your data.
25.04
So the other thing, Chang, that comes up with agents right
now, the hot thing that it seems like there’s a gazillion
people working on is this notion of memory. So I guess my question
to you is, if I have a bunch of agents and then I have a multimodal
lakehouse. . . I have a lakehouse and now I have
memories. So I have three different systems that I have to
maintain. What’s your what’s your guys’ take in
terms of agent memory?
25.42
LanceDB open source is actually the main memory plug-in for
OpenClaw and a number of other agents like Crew AI, for example.
And for a lot of these agent frameworks and harnesses,
there’s a couple of different requirements. Number one is
just lightweight, super easy to use. LanceDB is the only one where
it supports hybrid search; it supports reranking, all these fairly
sophisticated retrieval mechanisms, without having to maintain a
service.
26.20
Before you continue. . . All right, so this
notion of lightweight, right? On the one hand, there’s the
notion of multimodal lakehouse and a lakehouse is never
lightweight, right? But then, it seems like you folks are
positioning yourself also in the DuckDB kind of very lightweight
SQLite world. Can you clarify what you mean by lightweight when you
are supposedly a lakehouse, right?
26.49
So what I mean by lightweight here is that if you think about it
from an agent perspective, it simplifies a lot of things if you
don’t have to connect to another service and talk to another
system in order to get access to your memory and to retrieve from
memory. So that’s what I mean. So the open source,
the. . .
27.15
But then you’re large-scale
infrastructure. . . So then if I’m a lightweight
agent, how can you… This is where I guess I’m a bit
confused. Can you clarify, why am I bringing along a big piece of
infrastructure if I’m a lightweight agent?
27.37
Right. LanceDB open source is actually very lightweight. So
there’s no heavy infrastructure involved. This is why
it’s perfect for memory. Because a lot of times, memory is
very ephemeral. So you just interact with a session and then when
that session is gone, you want to retain all of that. At most you
might want to compress some of it and then retain it for downstream
historical processing. But most of the time, it’s just gone.
You don’t have to think about it. And so that’s what I
mean by lightweight. So there’s a version of that.
And then for large-scale retrieval, you have a large historical corpus, if you’re working in a corporate environment, if you have an agent that’s searching through patent history or something like that, right? And then that’s where the infrastructure comes in. Well, if I have a petabyte of data out there that I need to search through, the embedded library is not going to do. So you need to have a scalable system out there, but it needs to be easy to use. And from an agent perspective, it’s the same interface. So from the agent perspective, it’s just as easy, but there is a scalable system for that large amount of data that’s kind of hidden beneath the surface there.
I think for agents, that’s sort of just one of the requirements. The other one is having more sophisticated retrieval so that agents can find what they’re looking for. And different agents will want to look for data in different ways. So being able to support all of that without having like a million different plug-ins to do each modality, I think that’s also something very important for agents as well.
29.28
By the way, I was playing devil’s advocate there
because I actually use LanceDB every day on my laptop. It can be
something that you can use in your laptop just
in-memory.
29.42
Yeah. So I think what we find is that when you make it really easy
for agents to actually use it, that’s when scale really takes
off. The way we’re looking at it is agents are kind of like
an ideal gas that if you make it easy for them to use, no matter
how much compute you have, no matter how much data and
infrastructure you have, agents will expand to fill all of that
that you have, right? So what we’ve seen is. . . We
talked about growth and creep throughput. And then because of
complex agents, there’s compression and latency. Your agents
want a hundred-millisecond or like 20-millisecond latencies now.
And then we also see a lot of proliferation of data.
One of the largest users in LanceDB told us they’re now
managing something like a billion tables. Just because they have so
many agents and so much data that they have to manage, like that
number of tables within their system. Any computational and data
management dimension you can think of, agents will expand to
however much capacity you give them.
30.59
So this is a two-part question. Our listeners may not be
aware, but for some reason, LanceDB kind of blew up a little more
during the launch of OpenClaw. So I guess my two questions are one:
How did this OpenClaw community land on Lance? And have you heard
back from them, and have they told you what they liked about
Lance?
31.32
Yeah, I mean, a lot of that is what we just talked about:
It’s lightweight; it’s easy to use the model.
31.39
But how did it happen? How did they land on Lance? Do you
know?
31.43
So my recollection was that originally it was a recommendation from
Claude or something like that. And I think [Lance] was the only one
out there that met the requirements, was embedded, lightweight,
sophisticated retrieval. And it can do both in-memory on NVMe local
and also on object store.
32.11
Interesting. So since then, has this kind of marriage [with
OpenClaw] continued?
32.20
Yeah, we continue to see engagement from the open source community.
Our open source continues to grow. I think at the latest,
we’re at around 14 million downloads a month across our open
source projects. And we’re super excited about working and
supporting the open source community on that. What we see now is
demand for a more filesystem-like interface. It’s easier for
agents a lot of times to interact with a filesystem interface.
Now, I’m choosing my words carefully. I don’t mean a
filesystem. I just mean an interface. This is something that
we’re looking into—trying to see what it would look
like to put a filesystem interface over a LanceDB or Lance format.
Based on the usage patterns that we see from agents, this is fairly
straightforward to do. So I think if you’re listening and
this is something interesting, we’d love to have early users
come check it out and test it out with us.
33.29
It’s interesting, actually, as you were talking
there, it just dawned on me that this notion. . . These
various notions of multimodality that you described earlier
actually might be another reason why people landed on Lance.
Because there are other vector search systems that you can run
in-memory or embedded. If you want to build agents that are more
capable moving forward, then the various notions of multimodality
that Chang described earlier might come in handy,
right?
34.06
Yeah, yeah, absolutely. I will say that like, I’m sort of
a. . . There are AI maximalists. I’m sort of a
multimodal maximalist. So my prediction is that in five years,
multimodal won’t even be a word anymore. It’ll just be
data, and it’ll just be multimodal by default. People will
just say data, and it’ll be inclusive of all the different
modalities. And when we think about data engineering, there
won’t be multimodal data engineering. It’ll just be
multimodal by default when we say data engineering.
34.37
Interesting, which actually. . . As we’re
winding down here, I was going to ask you, If I’m a CxO or an
architect at an enterprise, what data infrastructure decision do
you think I should bear in mind? Or I guess to put it negatively,
what are some of the decisions I can make right now that
potentially can hurt my team moving forward in the next
year?
35.08
Right, right. So I think we’re already. . . For a
lot of early adopters, we see big pain points around new AI data
silos. So one pattern, I wouldn’t call it an anti-pattern,
but one I would say pain point is if you’re a CIO or CDO or
something like that, chances are a lot of your teams within the
enterprise have charged forward with their own AI applications and
AI stack. And so now the centralized data platform team are faced
with maybe like 10 different vector databases that they have to
support and maybe five different ways to store the AI data, some in
images and some just embeddings and others, many different
modalities. So that becomes a big pain point going forward, right?
So as companies go from “Let’s try out AI in this
particular area” to, I guess, AI transformation, having large
swaths of the enterprise be AI-assisted or AI-native, that becomes
a big pain point.
I think if I were a CIO or a CEO or CTO at a larger enterprise, I
would be looking forward a little bit to think about how do I set
up all of my teams across the enterprise for success so that one,
“How do I allow them to charge forward very quickly and
iterate very quickly without presenting this crazy, untenable
challenge on the central platform team?” So that’s what
I would be thinking of. That’s actually. . . At
LanceDB, that’s what we’re building for.
37.05
If your thesis is multimodal data matures over the next few
years, and so do agents and everything that comes with agents,
including memory, what does the data stack look like in a few
years?
37.22
In broad strokes, the base layers are not going to change all that
much. I think the infrastructure layer stays roughly the same.
There’s going to be object storage. There’s going to be
a storage layer. And then the compute layer will start to
change.
37.49
Ray. [laughs]
37.52
What I think we’ll see is that the middle layer of data
tooling will start to melt away a little bit because of agents.
38.04
Define data tooling.
38.07
I don’t want to name names, but I think there’s a lot
of [what] I would call developer middleware for data where
it’s neither the infrastructure layer nor is it the layer
that’s interfacing with agents and users directly, right?
That middle layer, I think will melt away a little bit or at least
be very much refactored. So there’s going to be a lot of
churn in that. It’s going to be interesting to see what
shakes out. I think what will happen is that agents will continue
to push that layer down, and agents will want to get as close to
the base layer as possible.
If you look at this middle layer, there’s really two things that they’re providing. One is a precanned data model for how their users think about the problem, right? So they built that on top of the base infrastructure. So they would build that on top of LanceDB, for example. And then the other thing that they have in this middle tier right now is user interaction, right? The combination of the two is how they capture user workflows. And that’s the core of that. I think what happens in the future is that that UI workflow layer will largely go away and be replaced by agents.
But useful data models will still be useful, and they’ll still stay. Yes, you can have agents directly talk to random bits on S3, but why waste all that intelligence? It’s not worth the token cost. A well-formed data model is the right base layer for agents to interact with. And so I think that’s what we’ll see, is that melting away and reformatting of that middle layer. And I think this is something when I talk to data builders and AI infrastructure builders today, I think we’re all seeing that all at the same time.
40.22
What I describe to people right now as kind of the
forward-looking stack has two main parts: So one, you have the
multimodal lakehouse built around Lance, LanceDB, and the Lance
format. And then you have the AI compute layer, which I call the
PARK stack, so PyTorch, AI foundation models, Ray, and Kubernetes.
So PARK stack here, and then your lakehouse will be around Lance
and the Lance format. I see that quite a bit actually. I definitely
see the PARK stack, PyTorch, Ray, Kubernetes. And now I’m
starting to see more and more people talking about Lance and Lance
format. Do you think of these as complementary or
what?
41.16
Yeah, yeah, absolutely. I think we have close relationships with
Ray and Spark and really like native-level integrations. And also
PyTorch, right? I don’t think that’s going away. Those
are either like. . . PyTorch is essentially interacting
with developers directly, whereas Spark and Ray are very much
infrastructure layer, so I don’t think those things are going
anywhere. Kubernetes is definitely still around.
41.51
Yeah, yeah, yeah, yeah. And so what big trend are you
paying attention to right now that we haven’t yet talked
about? This is how we close.
42.08
What’s been really interesting that we didn’t talk
about is the rise of open source models. And I think that’s
going to have a big impact, maybe starting next year or even the
remainder of this year. Enterprise AI. [Ben: Open weight.]
Open-weight models. That’s correct. Yeah.
42.35
Who’s the source? Because right now the main source
is China for the better ones. And I still see a lot of hesitation
for enterprise teams to adopt such models. I actually just wrote a
short post about this. Basically the perception seems to be that
while the open-weight models from China are closing the gap, there
is still a gap, and there’s structural reasons why
there’s a gap. So one is the Chinese seem to be benchmaxxing.
You know, they’re optimized for the benchmark, so not real
workloads. And then secondly, there is a compute challenge, which
makes iteration for them more challenging. So whereas the labs here
may update their models every three or four months, the Chinese
have to wait six months. And then finally, the data pipelines and
the investment in data pipelines is just not the same as you would
see at, for example, Gemini, Anthropic, and OpenAI. They’re
licensing data from all over the place. The Chinese labs tend to do
distillation, which means. . . When you’re doing
distillation, your cap is basically the model you’re
distilling from.
And then there’s the flywheel—OpenAI and Anthropic and Gemini have a lot of users, so therefore they get better as more users interact with them. . .
44.20
That’s right. Don’t forget the open-weight models in
China are also. . . [cross-talk] Here’s the way I
think about it, right? So I think as AI adoption grows
exponentially within enterprises, they are going to be extremely
motivated to invest in their own inference on open-weight models,
right? Just because there’s such a drastic cost in
tokens.
Because of that economic incentive, I think there’s going
to be a lot more incentive for companies to create better
open-weight models. If you look at the open-weight models in China,
one, the fact that they can create open-weight models of this
quality on really limited hardware is really telling. So a team in
the US theoretically should be able to create much better quality
open-weight models because of that.
Number two, I don’t think the distillation argument is
actually true. If you look at the report that Anthropic threw out,
right, like if you look at the numbers of how much distillation
they accused DeepSeek of doing, it’s actually not that much.
It’s basically negligible, right? Like MiniMax is a legit big
offender, but DeepSeek, basically, didn’t really do that
much. I don’t think distillation is a big factor in the
quality of open-weight models anymore.
So then there is a remaining gap in quality. Maybe there’s a
three- to four-month gap between open-weight models and SOTA. But
what’s interesting is the experiments that people have done
is, open-weight models, one, are cheaper, and they’re much
faster. So if you have a coding agent task, you can do a one-shot
with SOTA models or you can do multiple rounds and iterations on an
open-weight model, which gets you the same quality, still lower
total costs and tokens, and you finish around the same time, or you
actually might finish faster. So then I think a lot of that is lack
of familiarity and a skill gap, where if you have to do a few
shots, that complexity is way more than what people want to think
about right now.
So the pattern today is you go into production with SOTA models,
then you reach some cost-prohibitive moment where you say,
“OK, what are the areas where there’s not requirements
for really heavy intelligence but still have a lot of token costs,
and then I can replace [them] with open models?” And I think
that will happen more and more across enterprises. So I think
that’s going to be a big trend to watch this year and
next.
47.18
And actually, as you mentioned, my conversations are a
product of the fact of the stage of adoption, which is basically
[the] early stage of adoption. I will deploy with state-of-the-art
models because I’m early. And then as my agent or my
application gets used, then I start paying attention to cost,
latency, and all these. And then I can worry about swapping the
models then. And hopefully, we will have some Western labs start
cranking on open-weights models again, right? It seems like Meta is
off the table. The Gemma folks produce models, but they’re
meant for on-device, I think. Maybe there’s an opening there
for someone to start up something that…
Especially as people become more clever in terms of training and tools like LanceDB make training more affordable somehow. We’ll see what happens. And with that, thank you, Chang.
48.24
That’s right. Thank you, Ben.
Urgent: Shut down the hidden sweatshops of data workers [Richard Stallman's Political Notes]
US citizens: call on Take Action: Shut down the hidden sweatshops of data workers.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
I ask you follow me in expunging the acronym "AI" from your letter.
Sending asylum seekers to a country they've never been [Richard Stallman's Political Notes]
Australia's cunning cruelty of sending asylum seekers to (in effect) prison in a country where they have never been is now spreading world-wide.
Upcoming Speaking Engagements [Schneier on Security]
This is a current list of where and when I am scheduled to speak:
The list is maintained on this page.
Every social web needs avatars. In an RSS 2.0 feed look for the channel-level image element. It's how they do it in WordPress.
This is the first day since the NBA playoffs started that there is no scheduled game. I think that's why today feels so weird.
For some reason every day feels like Saturday. I don't know why.

Athena started the bloomposting yesterday and here is my contribution: the irises in our front yard, which are in their annual two-week period of blooming, followed by 50 weeks of just being green shrubs. Still, for those two weeks, it’s pretty great to look at.
I of course can take no credit for these irises. Krissy planted them several years ago and tends to them annually; I just go out and take pictures of them when they’ve all popped. Still, I flatter myself that I take some fairly decent pictures of them. And then you get to appreciate them as well! So, please do.
This concludes our bloomposting for today, now back to our regularly scheduled programming.
— JS
The Pride Goeth [The Daily WTF]
Janči, a master's student of bioinformatics, was seated near the back of a large classroom. This was a simple compulsory elective course geared toward biologists. The professor was currently walking the class through their latest assignment. "We'll need to connect to some Linux servers," he announced.
The other students seated nearby traded blank stares. They were all Mac and Windows users with no IT background. Meanwhile Janči, a veteran Linux user, started feeling a little smug. An easy A was at hand.
"First," the professor continued, "you'll need a private key."
After the professor had explained a few details, the first WTF came in the form of a bulk email sent to the entire class. The private key was attached. The username was the email address it was sent to.
What do you call the exact opposite of a private key? Janči wondered, bemused.
"You'll also need to download an application to help you log in," the professor said. "I recommend MobaXterm."
As he detailed the process of visiting the SSH client website to download the software, Janči tuned out. He didn't need such hand-holding. He accessed OpenSSH, tried connecting ...
... and failed.
Meanwhile, everyone around him was logging in no problem.
Janči's face burned with embarrassment at this second WTF. His first instinct was to blame the deprecated cryptography of the server. He spent most of the remaining lecture time searching for a way to allow his SSH to use SSH-DSS. (It turned out to be supported the whole time, despite the warnings he received.)
Janči then tried to re-download the "private" key and adjust the SSH config file several times. He cycled through different possible usernames associated with his university email account.
No dice.
He was the only person in the class who hadn't yet logged into the server. Not even the professor was able to help him, since he was using Linux.
Embarrassment and frustration mounted. An hour later, out of ideas, Janči fell back to downloading MobaXterm and running it inside Wine.
It didn't work.
The professor offered him a spare Windows box. "Here, try this one."
Janči booted it up, copied the "private" key to the new machine ... and still couldn't sign in.
Now, this was getting suspicious.
The lecture ended. A friend of Janči's hung back while the rest of the students filed out. "Why don't you try logging in with my credentials instead of yours?" she asked.
Janči was up for anything at that point.
It worked. On his own machine, on the Windows box, everywhere.
With that lead in mind, Janči opened the server's
/etc/passwd file to look at all the usernames. He
noticed that, unlike everyone else, his username and email address
didn't match.
His university used Microsoft emails. Everyone had several address aliases, and they could also use whatever email address they liked in the system, even a personal one.
Janči had chosen to use a school email in the form of
<number>@uni.uni. Unfortunately, the Ubuntu
server didn't like the idea of user being named just
<number>, so it had renamed it to
user<number>. Some script for generating SSH
configuration had probably failed from there, because Janči
also discovered that his user home directory was missing a
.ssh directory and known_hosts file.
Unfortunately, due to restricted access, he wasn't able to copy them from any of his classmates. In the end, he could connect to the server as any of his classmates, but not as himself.
Why Doesn’t Anyone Teach Developers About Context Management? [Radar]
This is the sixth article in a series on agentic engineering and AI-driven development. Read part one here, part two here, part three here, part four here, and part five here.
I think context management is one of the most important skills in AI-driven development, and it’s weird that compared to other AI-related topics, almost nobody talks about it. We talk about prompt engineering, about which model to use, about agentic workflows and tool use. But more than anything else, the thing that actually determines whether your AI session produces good work or mediocre work is how well you manage context (or if you even do it at all!).
A lot of developers using AI tools treat all this “context” talk as AI jargon that can be dismissed, and it’s not hard to understand why. AI development tools have gotten so easy that an experienced developer can be incredibly effective by just combining vibe coding with critical thinking (that’s the central idea behind the Sens-AI Framework), and not really think about context at all. That’s ironic, because despite all the “I’m functionally illiterate but I just vibe coded an entire multitenant SaaS platform” articles, and despite everyone’s general concern that AI will put all developers out of work, the development skills you’ve been working on for years make you especially effective at writing code with AI—and context management is where those skills really shine.
Just to make sure we’re all on the same page, context is (basically) everything the AI is thinking about right now: your prompt, the conversation so far, the files it’s read, the decisions you’ve made together. When you start a fresh session with an AI, its context is wiped clean, and it starts fresh with just the initial instructions it’s been given. Managing context is central for building AI agents and skills. But it’s also really important when you’re using tools like Claude Code, Cursor, or Copilot for day-to-day development work. Context is typically measured in tokens, and there’s a finite amount of it. When the context window, or the maximum amount of information (input and output tokens) an AI model can process and retain at once, fills up, the AI starts losing track of things, and that’s when you start to see it give wrong and weird answers.
Unfortunately a lot of developers read paragraphs like the last one and their eyes glaze over. Somehow it gets classified in the same part of our brains as learning how our build systems work: boring stuff we somehow don’t really want to think about because it takes us away from “real” programming. That’s a shame, because when we don’t understand the basics of how context works we waste a lot of time.
For example, here’s something I see developers do all the time that they absolutely shouldn’t. They’re deep into an AI coding session, and the AI has built up a detailed understanding of their codebase (e.g., it’s noticed patterns, it’s making good decisions, etc.). Then they start seeing “Compacting conversation” messages, or they notice the little context usage indicator in Cursor or Copilot filling up, and they don’t really know what that means. But they learned that closing the session and starting a new one seems to fix the problem. Unfortunately, all they’ve done is trade compaction for total amnesia. The new session just keeps going, producing output that looks fine, but it’s giving worse answers and generating worse code because it’s working from incomplete information.
The really weird thing is that I was writing about something really similar all the way back in 2006, long before AI was around, in Applied Software Project Management: Missing requirements are especially insidious because they’re difficult to spot. I was writing about requirements, not AI context, but the problem is the same. I’ve written about how prompt engineering is requirements engineering, and this is another place where the parallel holds up. When a requirement is missing, there’s no artifact to flag it, you just end up with code that doesn’t do what it’s supposed to do. When context is missing from an AI session, there’s no error message telling you what the AI forgot; you just end up with worse answers.
The cost of poor context management is actually measurable. A developer on Microsoft’s Dev Blog recently timed his own reorientation overhead and found he was spending over an hour a day just reexplaining things to his AI that it had known in a previous session. He’s not alone. There are now entire frameworks and managed services dedicated to giving agents persistent memory, from lightweight CLIs that query Copilot’s local session database to managed memory services from Cloudflare. Some of these tools are genuinely useful, but they’re solutions you need to evaluate, integrate, and maintain before they help you.
My goal in this article and the next is to give you four specific things you can do today, using whatever AI tools you’re already working with. This article covers the problem: why context management matters and how context loss affects the quality of your AI’s output. The next article covers the specific practices that emerged from building the Quality Playbook and Octobatch, things you can bring back to your own prompts, skills, and agents immediately. I’ll use real examples from those projects, because I think they’ve got some good examples that you can draw on.
I think the through line through all of this is that developers both overestimate and underestimate AI. We overestimate how much it can hold in its memory and its ability to remember things and make decisions for us. So we’ll just stuff a whole bunch of stuff in the context window and assume the AI will work it out, and then get annoyed when it hallucinates or forgets.
On the other hand, we massively underestimate its ability as an orchestrator. Your prompt doesn’t just have to ask a question or ask the AI to generate something. You can give it a multistep workflow where each step writes its results to files, and the AI will coordinate the whole thing, spinning off subtasks and picking up where it left off if something breaks.
When developers don’t take either of those things seriously, context management or orchestration, you get a specific cycle. They treat the context window as infinite and cram everything in. Then when the session gets too long and the AI starts losing track, they throw it all away and start fresh. They never consider the alternative, which is designing the workflow so the AI works from externalized files across independent sessions.
I discovered this while building the Quality Playbook. The context management was working so well inside my sessions that I realized the sessions themselves were the bottleneck. I was running the playbook in a single prompt. I think I had a record of over 15 million tokens in a single Copilot GPT-5.4 session that ran for hours, and I did eight of them in parallel. Which incidentally is why I got rate-limited for 54 hours from Copilot, which is completely fair.
The playbook was writing everything down to files as it went, which is why those runs could last that long at all. But I didn’t want that behavior. Running 15 million tokens in a single session is expensive, and if you’re on pay-as-you-go API tokens instead of a flat-rate plan like Copilot or Claude Max or Cursor, that kind of usage can be a real shock. I wanted to make the playbook available to developers who don’t want to burn that much at once. And because the context was already externalized to files, splitting into independent phases turned out to be easy.
Before I get into how the pipeline splits things up, I want to talk about the practice that made the split possible in the first place: storing development context in files as you go.
I don’t mean asking the AI to export its notes at the end of a session, or writing up a “lessons learned” document after the fact. I mean baking it into the actual instructions you give the AI from the start, so it’s continually writing and updating context as it works. For Octobatch, the batch LLM orchestrator that was my first experiment in agentic engineering (I wrote about the development process in “The Accidental Orchestrator”), I had the AI write developer context in every folder, and that really made it easy to spin up a new session.
Here’s what that looks like in practice. Every new Claude Code session on Octobatch starts with a single line: “Read ai_context/DEVELOPMENT_CONTEXT.md and bootstrap yourself to continue development.” That file contains a loading sequence: read this first, then fan out to component-level CONTEXT.md files in scripts/, tui/, pipelines/, each describing its own subsystem at the right level of detail. By the time the AI finishes reading, it knows what the project is, how it’s built, what’s currently in progress, and what the active bugs are.
I think of this as shifting left. Instead of putting constraints in every prompt (don’t use additionalProperties: false, always test with –limit 3), those rules live in the CONTEXT.md files. The prompt stays clean because the documentation does the heavy lifting.
And updating context files is part of every task. Before we commit anything, I have the AI review the context files and make sure they reflect what we just did. If we added a feature or fixed a bug, the context file should reflect that before we commit. Stale context causes the same kinds of problems as stale documentation, except it’s worse because the AI is actually relying on it to make decisions.
I want to be clear exactly what I mean by “development context.” Specifically, it’s the information a new AI session needs to get up to speed: what the project is, how it’s built, and what decisions have been made along the way. Tools like Claude Code read development context from files like AGENTS.md (and you can actually go to that website to learn more) at the start of every session, and if you do a thorough enough job of building up your development context and keeping it up-to-date, you can get them fully bootstrapped. They’re the blueprints for your AI sessions. I wrote in Applied Software Project Management that building software without requirements is similar to building a house without blueprints. Running AI sessions without externalized context is the same mistake. You’re relying on what’s in someone’s head instead of what’s written down. And when you’re working with AI, “someone’s head” is a context window that’s going to get compacted or thrown away.
The most important thing is that what’s in my head matches what’s in the AI’s head. The context file is just a convenient way to help us figure out whether or not we agree. When I start a new Claude Code session on a folder that has a good DEVELOPMENT_CONTEXT.md, the AI reads it and we’re immediately aligned. When I start a session without one, the AI has to rediscover everything from scratch, and it always misses things. Rediscovery is always lossy.
If you’re not already writing context files as part of your workflow, none of the fancier techniques I’m about to describe matter. This is the foundation.
There’s a specific thing that has to go into these context files, and it took me a while to learn why it matters so much: the reasoning behind every decision.
Octobatch’s DEVELOPMENT_CONTEXT.md has a section called “Key Technical Learnings” with 49 entries, each in a specific format: What happened, Why it matters, When we discovered it, and Where in the code it applies. At the top of that section is a note in bold: “IMPORTANT: Always include the REASONING (the ‘Why’) for each learning. This prevents future sessions from ‘refactoring’ a deliberate decision.”
That note is there because without it, the AI will do exactly that. I had a case with Octobatch where we used recursive set_timer() instead of set_interval() for auto-refresh because Textual’s set_interval() callbacks aren’t reliably serviced on pushed screens. Without the “Why” in the context file, a future session would look at that code, see a “cleaner” alternative, and helpfully refactor it right back to the broken approach.
The same principle applies to quality standards. Don’t just say “90% coverage for core logic.” Say “90% coverage for core logic, because expression evaluation touches randomness and seeding, where subtle bugs produce plausible-but-wrong output. The drunken sailor reseeding bug passed all visual inspection. Only statistical verification caught that sequential seeds created correlation bias (77.5% fell in water instead of a theoretical 50/50).” Without the “why,” a future AI session will argue the coverage target down. Any standard or architectural decision or unusual code pattern that doesn’t have its rationale attached is vulnerable to being optimized away by an AI that doesn’t know what problem it was solving.
A lot of people like to talk about the context window as your AI’s short-term or working memory, and context that’s persisted to disk as long-term memory. Personally, I’m not sure those analogies to human memory work all that well. I think it’s a lot more useful to find ways to think about context that are similar to how we manage memory in our code.
I find it especially helpful to compare context compaction to garbage collection—again, not a perfect analogy but a useful one. When you look at a GC graph in Java, you see the memory slowly fill up and then suddenly drop after each GC. That drop is the runtime figuring out what’s still being referenced and freeing everything else.
The context window does the same thing. Your conversation accumulates tokens, the AI’s context window fills up, and then compaction happens. The tool (or the model) decides what to keep and what to throw away. Compaction is lossy and automatic, and you don’t control what survives.
Java developers spent decades learning to design their allocation patterns so garbage collection wouldn’t destroy anything important. AI developers need to learn the same thing, and the learning curve should be shorter because the concepts transfer directly.
When you ask the AI to write important state to files, you’re promoting it out of that volatile space. It’s surprisingly easy to do this. Just pass the AI to write its context to a Markdown file. For example, you can put all of the context related to a specific domain into a particular file, like if the AI noticed a behavioral contract, you could have it write all the related context to a file called CONTRACTS.md. If it made a design decision, that could go into DEVELOPMENT_CONTEXT.md—that’s a pattern I use all the time to write down all the important contacts needed to bootstrap a new AI session to work on the code. Those files live on disk, outside the context window, and compaction can’t touch them. But if you start a new session without externalizing any of this, you’re shutting down the application and losing everything that was in memory.
The first time I built Octobatch’s batch orchestrator, it was a Python script with in-memory state and a lot of hope. It worked for small batches but fell apart at scale, which is pretty much what most developers are doing with their AI context right now: keeping everything in the context window and hoping it holds together, even though that stops working once sessions get long and codebases get complex.
The Quality Playbook exists in part because of this problem. When I was building the requirements pipeline, I discovered that single-pass requirement generation runs out of attention after about 70 requirements. The model forgets behavioral contracts it noticed earlier. And it’s completely invisible. You don’t get a stack trace or an error message or any kind of warning, just incomplete output and no way to know what’s missing.
The longer a defect goes uncorrected, the more entrenched it becomes and the more things get built on top of it. Context drift works the same way. When the AI loses track of a design decision early in a session, everything built on that lost context compounds the error. And just like a late-discovered defect, you don’t know what went wrong because the original context is gone.
I had a concrete example when I was running the playbook against virtio-win. Version 1.3.32 found four bugs. Version 1.3.33, after some changes, found only one. That regression was only diagnosable because I had EXPLORATION.md, an externalized intermediate state file that captures what the AI observed during its exploration phase. Without it, the only observable output would have been “fewer bugs this time.” I had no way to tell whether the playbook was worse, or the bugs were harder, or it had just missed something. Without externalized state, I couldn’t have answered any of those questions.
The contracts file in the pipeline exists specifically to solve this. When the model forgets about a behavioral contract it noticed earlier, that forgetting is normally invisible. But with a contracts file, every observation is written down before any requirements work begins. If a contract is in the file but has no corresponding requirement, that’s a visible, greppable gap. You can see what was forgotten and fix it.
But it’s just as easy to overcompensate. If the LLM has to constantly hop between eight different reference files, its context window fragments and you start getting hallucinations. I’ve seen this happen. You load all your context files and requirements documents and design docs into the session, and the AI gets worse, not better. It spends all its attention navigating between reference files instead of thinking about the problem.
I hit this with the Quality Playbook when I expanded the scope of a run against virtio-win from 10 files to about 60. The result was 6x more files analyzed but 75% fewer bugs found. The model burned its context on device drivers instead of going deep on the transport layer where the bugs actually were. Wider scope meant shallower analysis.
The goal isn’t to save everything. You have to decide what to externalize, what to keep in context, and what to let go. The best context file contains exactly what the AI needs for this session and nothing more.
The interesting thing about all of this is that good context management really makes use of your development expertise, and it’s one of those things that makes you a better developer the more you do it. Every practice I’ve described in this article, writing down your decisions, recording why you made them, being deliberate about what goes into a session and what doesn’t, is something developers have always been told to do. We write ADRs and design docs and inline comments explaining nonobvious choices, and we all know we should do more of it. When you’re working with AI, the cost of not doing it becomes immediate and visible. Your context files end up being the project documentation you should have been writing all along, except now there’s something on the other end that will actually go wrong if you skip it.
And once you start thinking about context as something you actively manage, you can start designing your workflows around it. That’s what happened with the Quality Playbook, when it went from a single 15-million-token session to a set of independent phases with clean handoffs between them, and the whole split worked on the first try because the context was already externalized to files.
In the next article, I’ll get into the specific techniques
you can use today in your AI agents, but also in your day-to-day AI
development work.
The Quality Playbook
is open source and works with GitHub Copilot, Cursor, and
Claude Code. It’s also available as part of awesome-copilot.
Disclosure: Aspects of the approach described in this article are the subject of US Provisional Patent Application No. 64/044,178, filed April 20, 2026 by the author. The open-source Quality Playbook project (Apache 2.0) includes a patent grant to users of that project under the terms of the Apache 2.0 license.
Pluralistic: Kickstarting "The Reverse Centaur's Guide to Life After AI" (14 May 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

My next book, The Reverse Centaur's Guide to Life After AI, will be out in about a month – and (once again) Amazon's monopoly audiobook platform refuses to carry it, and so (once again) I'm pre-selling the audio, ebook and print edition in a Kickstarter campaign that proves that DRM-free isn't just the right way to reach an audience, it's also the best way to reach them:
https://www.kickstarter.com/projects/doctorow/the-reverse-centaurs-guide-to-life-after-ai

Reverse Centaur is a book about the realpolitik and the political economy of AI, written by a tech critic (me!) who is sick to the back teeth of hearing about AI. Central to the book's thesis:
https://pluralistic.net/2026/05/07/dump-the-pumpers/#alpo-eaters-anonymous

https://pluralistic.net/2025/03/06/privacy-last/#exceptionally-american
https://pluralistic.net/2025/05/02/kpis-off/#principal-agentic-ai-problem

https://pluralistic.net/2026/02/19/now-we-are-six/#stock-buyback
https://pluralistic.net/2025/03/18/asbestos-in-the-walls/#government-by-spicy-autocomplete
https://pluralistic.net/2026/04/06/empiricism-washing/#veena-dubal
https://pluralistic.net/2025/09/11/vulgar-thatcherism/#there-is-an-alternative

https://pluralistic.net/2025/08/06/unmerchantable-substitute-goods/#customer-disservice
https://pluralistic.net/2025/08/05/ex-princes-of-labor/#hyper-criti-hype
https://pluralistic.net/2025/03/25/communicative-intent/#diluted
https://pluralistic.net/2024/11/18/rights-without-power/#careful-what-you-wish-for

https://pluralistic.net/2026/03/03/its-a-trap-2/#inheres-at-the-moment-of-fixation
https://pluralistic.net/2025/06/30/accounting-gaffs/#artificial-income
https://pluralistic.net/2024/12/18/loose-flapping-ends/#luigi-has-a-point
https://pluralistic.net/2026/01/21/cod-marxism/#wannamaker-slain
https://pluralistic.net/2026/01/05/fisher-price-steering-wheel/#billionaire-solipsism
https://pluralistic.net/2025/09/27/econopocalypse/#subprime-intelligence
https://pluralistic.net/2026/04/12/always-great/#our-nhs
https://pluralistic.net/2025/10/16/post-ai-ai/#productive-residue
As you can see from the links above, I developed The Reverse Centaur's Guide to Life After AI in the same way that I developed Enshittification: in public, through a series of essays, which I periodically synthesized into major, widely shared speeches:
https://pluralistic.net/2025/12/05/pop-that-bubble/#u-washington
Making my working notes public is a hugely effective way of producing and refining critical work, and it's been my method for 25 years now:
https://pluralistic.net/2021/05/09/the-memex-method/
It's a method that's let me produce a string of international bestsellers, published by some of the largest publishers in the world. Nevertheless, Amazon refuses to carry my audiobooks:
https://pluralistic.net/2022/07/25/can-you-hear-me-now/#acx-ripoff
That's because I have an iron-clad requirement that my work be sold in open formats, without the "digital rights management" that blocks you from moving the books you bought on Amazon to someone else's apps. Digital rights management (DRM) enjoys bizarre legal protections so that it's a felony for me to give you the tools you need to move the books I wrote out of an Amazon app and into a competitor's app:
https://pluralistic.net/2026/01/14/sole-and-despotic/#world-turned-upside-down
What's more, these outrageous legal rights extend around the world, because the US Trade Representative spent decades bullying America's trading partners into passing laws that criminalize the act of fixing the defects in America's tech exports, which is why farmers can't fix their John Deere tractors, hospitals can't fix their Medtronic ventilators, and no one can sell you an app that stops Apple and Google from spying on your phone:
https://pluralistic.net/2026/01/01/39c3/#the-new-coalition
Amazon's Audible controls 90% (!) of the audiobook market, and they will not sell any book unless they can permanently lock it to their platform. That means that every time a writer sells you an audiobook on Audible, they create a "switching cost" that stops you from leaving Audible for a competitor. Not only is this fundamentally unjust, it's also terrible for creators: if our audiences can't leave Amazon, then we can't leave Amazon either, which means Amazon can (and does!) steal millions of dollars from writers without losing our business:
https://pluralistic.net/2022/09/07/audible-exclusive/#audiblegate
Which is where these Kickstarter campaigns come in. Whenever I sell a new book to a publisher, I arrange to make my own independent audiobook for it, which I sell everywhere except the platforms that have mandatory DRM: Audible, Apple and Audiobooks.com. There are some very good DRM-free audiobook stores, notably Libro.fm and Downpour.com (Google Play also sells audiobooks without DRM). But most people have never heard of these, so it wasn't until I started pre-selling my audiobooks on Kickstarter that I was able to make my stubborn refusal to sell out to Audible into a paying proposition. My agent tells me that if I'd sold out to Audible, I'd have paid off my mortgage and I'd be able to give my kid a full ride through a fancy US college. I don't make that kind of money from these Kickstarters, but they do very well nevertheless, and they're a critical part of my family's finances.
The Kickstarter is live for the next three weeks:
https://www.kickstarter.com/projects/doctorow/the-reverse-centaurs-guide-to-life-after-ai

You can pre-order print copies of Reverse Centaur, as well as DRM-free ebooks and audiobooks (narrated by me!) for Reverse Centaur and Enshittification. Normally, I offer custom-signed copies of the print books, but Enshittification was so successful that I haven't stopped touring it and I'm in a new city every couple of days, so there's no way I can reliably get into a warehouse to sign the latest batch of orders. Instead, I'll be posting the contact details for every bookstore that's hosting me on my tours (US in June, UK in September) and you can order signed copies from them, which I'll personalize after my events there so they can ship them to you.
I've also decided to raise money for the Electronic Frontier Foundation (eff.org), the nonprofit I've worked at for nearly 25 years. EFF is the oldest, best and most effective tech rights organization in the world, and its mission has only gotten more important over the years. EFF's outreach folks are offering a special membership package for backers of the Kickstarter, which includes an EFF hat and stickers, as well as an Enshittification pin and two Enshittification stickers:
https://pluralistic.net/2026/04/24/poop-emoji-plus-plus/#devin-washburn
The audiobook is fully recorded and finalized and you can listen to the first hour of it here:
https://archive.org/details/reverse-centaur-audio-sample
It came out great (as always!), thanks to the terrific direction of Gabrielle De Cuir of Skyboat Media and editing from Wryneck Studios' John Taylor Williams. Gabrielle's directed all my audiobooks since 2017, and John's been mastering my podcasts since 2006 (!!), so we constitute a very well-oiled machine.
Working out my ideas in public allows me to produce my Pluralistic newsletter, and with it, a large volume of free, high-quality work that's licensed under a generous Creative Commons license that lets anyone reproduce, translate, redistribute and even sell my articles. If you've enjoyed that work, I hope you'll consider backing the campaign! Selling books is how I pay the bills and keep the lights on, and as ever, this is the only way you can get a major publisher's ebooks and audiobooks with no DRM and no "terms of service." These are truly ebooks and audiobooks that you own. You can sell them, give them away, or lend them out – so long as you don't violate copyright law, we're all cool:
https://www.kickstarter.com/projects/doctorow/the-reverse-centaurs-guide-to-life-after-ai

We Are Crashing Into the Future (Or It Is Crashing Into Us) https://www.meditationsinanemergency.com/we-are-crashing-into-the-future/
#25yrsago RIP, Douglas Adams http://news.bbc.co.uk/1/hi/uk/1326657.stm
#20yrsago Douglas Coupland models his life & books on net rumors about him https://web.archive.org/web/20060515220320/https://www.wired.com/wired/archive/14.05/posts.html?pg=6
#15yrsago Vindictive lumber baron’s far-flung heirs inherit, 91 years after his death https://abcnews.com/Business/lumber-barons-descendants-receive-inheritance-92-years-death/story?id=13569633
#15yrsago R2D2 trashcan https://web.archive.org/web/20171208014511/https://i.imgur.com/x3w0I.jpg
#15yrsago Napier’s Bones: math and mysticism make for great international adventure https://memex.craphound.com/2011/05/12/napiers-bones-math-and-mysticism-make-for-great-international-adventure/
#15yrsago China’s shonky Disneyland-a-like park closed https://web.archive.org/web/20110515073221/https://thedisneyblog.com/2011/05/13/fake-disney-theme-park-in-china-forced-to-close/
#10yrsago Open letter to from EFF to members of the W3C Advisory Committee https://www.eff.org/deeplinks/2016/05/open-letter-members-w3c-advisory-committee
#10yrsago Gallery show of forks stolen from rich people, sealed to preserve crumbs & saliva https://web.archive.org/web/20160505183026/https://www.theguardian.com/artanddesign/2016/apr/27/crumbs-and-all-prince-harry-hillary-clinton-and-julia-gillard-have-cutlery-swiped-for-exhibition
#10yrsago German publishers owe writers €100M in misappropriated royalties https://uebermedien.de/4444/schoener-verlegen-mit-dem-geld-anderer-leute/
#10yrsago Chinese state-backed corporations beat US lawsuits with sovereign immunity https://www.reuters.com/article/us-china-usa-companies-lawsuits-idUSKCN0Y2131/
#10yrsago Anal fisting site breached: 100K passwords, usernames, email addresses and IPs extracted https://web.archive.org/web/20160511121337/https://motherboard.vice.com/read/rosebuttboard-ip-board
#10yrsago Reading With Pictures: awesome, classroom-ready comics for math, social studies, science and language arts https://memex.craphound.com/2016/05/12/reading-with-pictures-awesome-classroom-ready-comics-for-math-social-studies-science-and-language-arts/
#5yrsago Crooked Timber's Ministry for the Future Seminar https://pluralistic.net/2021/05/12/seminar-for-the-future/#imaginations
#1yrago Trump can't do ANYTHING for his base https://pluralistic.net/2025/05/12/greased-slide/#greased-pole

Berlin: Enshittification at Otherland Books, May 18
https://www.otherland-berlin.de/de/event-details/cory-doctorow-in-der-friesenstrasse-23-kreuzberg-praesentiert-von-otherland.html
Berlin: Enshittification at Otherland Books, May 19
https://www.otherland-berlin.de/de/event-details/cory-doctorow.html
Hay-on-Wye: HowTheLightGetsIn, May 22-25
https://howthelightgetsin.org/festivals/hay/big-ideas-2
SXSW London, Jun 2
https://www.sxswlondon.com/session/how-big-tech-broke-the-internet-b3c4a901
NYC: The Reverse Centaur's Guide to Life After AI with Jonathan
Coulton (The Strand), Jun 24
https://www.strandbooks.com/cory-doctorow-the-reverse-centaur-s-guide-to-life-after-ai.html
Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
Enshittification (99% Invisible)
https://99percentinvisible.org/episode/666-enshittification/
Artificial Intelligence: The Ultimate Disruptor, with Astra
Taylor and Yoshua Bengio (CBC Ideas)
https://www.cbc.ca/listen/live-radio/1-23-ideas/clip/16210039-artificial-intelligence-the-ultimate-disruptor
When Do Platforms Stop Innovating and Start Extracting?
(InnovEU)
https://www.youtube.com/watch?v=cccDR0YaMt8
Pete "Mayor" Buttigieg (No Gods No Mayors)
https://www.patreon.com/posts/pete-mayor-with-155614612
"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
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026
"The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
Today's top sources:
Currently writing: "The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Third draft completed. Submitted to editor.
"The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.
A Little Brother short story about DIY insulin PLANNING

This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
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
How Dangerous Is Anthropic’s Mythos AI? [Schneier on Security]
Last month, Anthropic made a remarkable announcement about its new model, Claude Mythos Preview: it was so good at finding security vulnerabilities in software that the company would not release it to the general public. Instead, it would only be available to a select group of companies to scan and fix their own software.
The announcement requires context—but it contained an essential truth.
While Anthropic’s model is really good at finding software vulnerabilities, so are other models. The UK’s AI Security Institute found that OpenAI’s GPT-5.5, already generally available, is comparable in capability. The company Aisle reproduced Anthropic’s published results with smaller, cheaper models.
At the same time, Anthropic’s refusal to publicly release its new model makes a virtue out of necessity. Mythos is very expensive to run, and the company doesn’t appear to have the resources for a general release. What better way to juice the company’s valuation than to hint at capabilities but not prove them, and then have others parrot their claims?
Nonetheless, the truth is scary. Modern generative AI systems—not just Anthropic’s, but OpenAI’s and other, open-source models—are getting really good at finding and exploiting vulnerabilities in software. And that has important ramifications for cybersecurity: on both the offense and the defense.
Attackers will use these capabilities to find, and automatically hack, vulnerabilities in systems of all kinds. They will be able to break into critical systems around the world, sometimes to plant ransomware and make money, sometimes to steal data for espionage purposes, and sometimes to control systems in times of hostility. This will make the world a much more dangerous, and more volatile, place.
But at the same time, defenders will use these same capabilities to find, and then patch, many of those same systems. For example, Mozilla used Mythos to find 271 vulnerabilities in Firefox. Those vulnerabilities have been fixed, and will never again be available to attackers. In the future, AIs automatically finding and fixing vulnerabilities in all software will be a normal part of the development process, which will result in much more secure software.
Of course, it’s not that simple. We should expect a deluge of both attackers using newly found vulnerabilities to break into systems, and at the same time much more frequent software updates for every app and device we use. But lots of systems aren’t patchable, and many systems that are don’t get patched, meaning that many vulnerabilities will stick around. And it does seem that finding and exploiting is easier than finding and fixing. All of this points to a more dangerous short-term future. Organizations will need to adapt their security to this new reality.
But it’s the long term that we need to focus on. Mythos isn’t unique, but it’s more capable than many models that have come before. And it’s less capable than models that will come after. AIs are much better at writing software than they were just six months ago. There’s every reason to believe that they will continue to get better, which means that they will get better at writing more secure software. The endgame gives AI-enhanced defenders advantages over AI-enhanced attackers.
Even more interesting are the broader implications. The same searching, pattern-matching and reasoning capabilities that make these models so good at analyzing software almost certainly apply to similar systems. The tax code isn’t computer code, but it’s a series of algorithms with inputs and outputs. It has vulnerabilities; we call them tax loopholes. It has exploits; we call them tax avoidance strategies. And it has black hat hackers: attorneys and accountants.
Just as these models are finding hundreds of vulnerabilities in complex software systems, we should expect them to be equally effective at finding many new and undiscovered tax loopholes. I am confident that the major investment banks are working on this right now, in secret. They’ve fed AI the tax code of the US, or the UK, or maybe every industrialized country, and tasked the system with looking for money-saving strategies. How many tax loopholes will those AIs find? Ten? One hundred? One thousand? The Double Dutch Irish Sandwich is a tax loophole that involves multiple different tax jurisdictions. Can AIs find loopholes even more complex? We have no idea.
Sure, the AIs will come up with a bunch of tricks that won’t work, but that’s where those attorneys and accountants come in—to verify, and then justify, the loopholes. And then to market them to their wealthy clients.
As goes the tax code, so goes any other complex system of rules and strategies. These models could be tasked with finding loopholes in environmental rules, or food and safety rules—anywhere there are complex regulatory systems and powerful people who want to evade those rules.
The results will be much worse than insecure computers. Tax loopholes result in less revenue collected by governments, and regulatory loopholes allow the powerful to skirt the rules, both of which have all sorts of social ramifications. And while software vendors can patch their systems in days, it generally takes years for a country to amend its tax code. And that process is political, with lobbyists pressuring legislators not to patch. Just look at the carried interest loophole, a US tax dodge that has been exploited for decades. Various administrations have tried to close the vulnerability, but legislators just can’t seem to resist lobbyists long enough to patch it.
AI technologies are poised to remake much of society. Just as the industrial revolution gave humans the ability to consume calories outside of their bodies at scale, the AI revolution will give humans the ability to perform cognitive tasks outside of their bodies at scale. Our systems aren’t designed for that; they’re designed for more human paces of cognition. We’re seeing it right now in the deluge of software vulnerabilities that these models are finding and exploiting. And we will soon see it in a deluge of vulnerabilities in all sorts of other systems of rules. Adapting to this new reality will be hard, but we don’t have any choice.
This essay originally appeared in The Guardian.
Grrl Power #1460 – Chemical opposites [Grrl Power]
Edit: Okay, I fixed the typo in panel 2, and I did another pass on the looked-like-a-strap-on in panel 3. It was admittedly a little distracting once it was repeatedly pointed out. I don’t blame you guys. It did look like Sciona was about to give him what for.
How do Sciona’s bangs get longer when her hair is down? Magic, probably. Don’t worry about it.
Deus sure gets a lot of mileage out of that “I’m going to be a jerk but it’s because I respect you so much” bit. He used it on Maxima, though I honestly couldn’t tell you what page that was. Ironically, the more intelligent the person is, the fewer times he could pull it off with them, even if he was being mostly sincere.
You know, if Sciona… sorry, if Escorpia really was a sicario/narcotraficante, she probably would have had a lot more tattoos than just the… temple tattoo? It’s more like a “mohawk negative space tattoo.” Not that I’m aware of any comprehensive audit of female merc/drug runner tattoo coverage. I guess Sciona lucked out that Escorpia was content with just the one on her skull. Presumably if she can permanently change her hair color and length with a spell, she could probably remove or at least hide tattoos. Really the only reason she still had the one on her head under the hair she was growing out was for you guys’ benefit. (guys’s?)
Sciona usually does not “take smug.” She’s murdered for a lot less than that. But Deus is too important of a potentially exploitable resource to her. He’s also pretty good in bed, which isn’t a deciding factor, but it is a factor. She knows that if she killed him, the Alari from the colony ship would almost definitely assume control of Galytn, which would probably be both good and bad for her plans, and Deus can more or less run interference for her regarding them.
Sciona’s original final line was “I am seriously reconsidering fucking you.” Which I think is more pithy than what I changed it to, (Actually the very first draft read “sleeping with you” but that didn’t feel right either) but the more I thought about it, the more it sounded like she was planning on sleeping with him for his sake, like some sort of transactional reward. I suppose for being good at it the last time, maybe? So not some selfless sacrifice on her part, certainly, but there was something vaguely “It’s a man’s world, and I’m very sexy, which is mostly for the benefit of men, and he deserves his prize” in the sentiment. Yes, it’s possible to over analyze these things, but it doesn’t hurt to occasionally step back and do a paradigm check. The comic is mostly female characters, and while I certainly can’t claim any special insight into the female mind, I do at least attempt to consider that perspective… Even if a lot of them do have fairly typically male behaviors and hobbies. But I write what I know, and would the comic would be any better if I did some deep dive into typically feminine hobbies so Sydney could launch into the occasional dissertation about… quilting? Not that women couldn’t be into literally any hobby, of course, but the point of all this would have been to “feminize” some of the female characters, and saying that Harem is into restoring vintage tractors doesn’t really accomplish that. Although… she was raised on a farm… Hmm.
Anyway, I edited Sciona’s lines mostly because I don’t want all the characters to sound the same, and my first draft felt more sit-commy, and less “sociopathic blood mage.”
I sort of feel guilty when I post a page with only 4 panels. I mean, not that guilty, but for all I gripe about cramming way too many panels on a page and having to draw tiny faces, when I get to the occasional page that just wouldn’t benefit from wedging three more panels in there, it does feel a bit… light? Oh well, I’ll get over it.
Sexy bodymod news lady Gail has a special
one-on-one interview with Tournament Quarter finalist Saraviah
Nightwing! And if you subscribe to Gail’s Space Patreon, (which, due to the
vagaries of Earth and Gal-Net’s DNS servers, happens to be
the same as the Grrl Power Patreon, go figure) you can see that
same interview in the nude! Well, eventually. The nude part of the
interview, as well as the version that includes shading will be
coming soon. Of course, you can view the interview in the
nude now if you take your own clothes off. You know. Technically.
Just put a towel on your chair first.
Double res version will be posted over at Patreon. Feel free to contribute as much as you like.
A dog gets fed and thinks his person is an omniscient, benevolent being.
A cat gets fed and thinks it is.
How we see ourselves in this analogy is actually up to each of us, every day. It also tells us a bit about how we think about customers, vendors, and partners.
GNUtrition 0.33.0rc2 Now Available [Planet GNU]
A test release of GNUtrition, 0.33.0rc2, is now available.
GNUtrition is free nutrition analysis software written for the GNU
operating system. The USDA Food and Nutrient Database for Dietary
Studies (FNDDS) is used as the source of food nutrient
information.
This release makes some fixes to the gender option. It also
applies a fix to ./version.sh that affected builds from CVS
checkouts, which was not an issue with the tarball, due to the
tarballs including the version in a .ver file.
More information about GNUtrition may be found on its home page at
http://www.gnu.or
... tware/gnutrition/. This test release can be obtained
from the alpha.gnu.org server at one of the following:
Please report any problems you experience to the GNUtrition bug
reports mailing list: <bug-gnutrition@gnu.org> (https://lists.gnu
... fo/bug-gnutrition).
We will return to our regularly scheduled spelunking of our nearly thirty-year archive soon, but Playground Games banning Forza Horizon 6 pirates for thousands of years was too funny to leave alone. We had to strike - if for no other reason than I got to make up like four new terms. I got to bear fruit. That's what I'm trying to do every time! I'm tryna stay bulbous.
| Feed | RSS | Last fetched | Next fetched after |
|---|---|---|---|
| @ASmartBear | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| a bag of four grapes | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Ansible | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| Bad Science | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Black Doggerel | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| Blog - Official site of Stephen Fry | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Charlie Brooker | The Guardian | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Charlie's Diary | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| Chasing the Sunset - Comics Only | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Coding Horror | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| Comics Archive - Spinnyverse | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| Cory Doctorow's craphound.com | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Cory Doctorow, Author at Boing Boing | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| Ctrl+Alt+Del Comic | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| Cyberunions | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| David Mitchell | The Guardian | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| Deeplinks | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| Diesel Sweeties webcomic by rstevens | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| Dilbert | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Dork Tower | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Economics from the Top Down | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| Edmund Finney's Quest to Find the Meaning of Life | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| EFF Action Center | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| Enspiral Tales - Medium | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| Events | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| Falkvinge on Liberty | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| Flipside | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Flipside | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| Free software jobs | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| Full Frontal Nerdity by Aaron Williams | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| General Protection Fault: Comic Updates | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| George Monbiot | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| Girl Genius | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| Groklaw | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| Grrl Power | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Hackney Anarchist Group | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Hackney Solidarity Network | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| http://blog.llvm.org/feeds/posts/default | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| http://eng.anarchoblogs.org/feed/atom/ | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| http://feed43.com/3874015735218037.xml | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| http://flatearthnews.net/flatearthnews.net/blogfeed | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| http://fulltextrssfeed.com/ | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| http://london.indymedia.org/articles.rss | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&_render=rss | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| http://planet.gridpp.ac.uk/atom.xml | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| http://shirky.com/weblog/feed/atom/ | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| http://thecommune.co.uk/feed/ | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| http://theness.com/roguesgallery/feed/ | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| http://www.airshipentertainment.com/buck/buckcomic/buck.rss | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| http://www.airshipentertainment.com/growf/growfcomic/growf.rss | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| http://www.airshipentertainment.com/myth/mythcomic/myth.rss | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| http://www.baen.com/baenebooks | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| 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 | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| http://www.godhatesastronauts.com/feed/ | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| http://www.tinycat.co.uk/feed/ | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| https://anarchism.pageabode.com/blogs/anarcho/feed/ | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| https://broodhollow.krisstraub.comfeed/ | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| https://debian-administration.org/atom.xml | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| https://elitetheatre.org/ | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| https://feeds.feedburner.com/Starslip | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| https://feeds2.feedburner.com/GeekEtiquette?format=xml | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| https://hackbloc.org/rss.xml | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| https://kajafoglio.livejournal.com/data/atom/ | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| https://philfoglio.livejournal.com/data/atom/ | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| https://pixietrixcomix.com/eerie-cutiescomic.rss | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| https://pixietrixcomix.com/menage-a-3/comic.rss | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| https://propertyistheft.wordpress.com/feed/ | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| https://requiem.seraph-inn.com/updates.rss | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| https://studiofoglio.livejournal.com/data/atom/ | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| https://thecommandline.net/feed/ | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| https://torrentfreak.com/subscriptions/ | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| https://web.randi.org/?format=feed&type=rss | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| https://www.dcscience.net/feed/medium.co | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| https://www.DropCatch.com/domain/steampunkmagazine.com | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| https://www.DropCatch.com/domain/ubuntuweblogs.org | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| https://www.DropCatch.com/redirect/?domain=DyingAlone.net | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| https://www.freedompress.org.uk:443/news/feed/ | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| https://www.goblinscomic.com/category/comics/feed/ | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| https://www.loomio.com/blog/feed/ | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| https://www.newstatesman.com/feeds/blogs/laurie-penny.rss | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| https://www.patreon.com/graveyardgreg/posts/comic.rss | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| 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 | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| https://x.com/statuses/user_timeline/22724360.rss | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| Humble Bundle Blog | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| I, Cringely | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| Irregular Webcomic! | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| Joel on Software | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| Judith Proctor's Journal | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| Krebs on Security | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| Lambda the Ultimate - Programming Languages Weblog | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| Looking For Group | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| LWN.net | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| Mimi and Eunice | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| Neil Gaiman's Journal | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| Nina Paley | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| O Abnormal – Scifi/Fantasy Artist | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| Oglaf! -- Comics. Often dirty. | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| Oh Joy Sex Toy | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| Order of the Stick | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| Original Fiction Archives - Reactor | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| OSnews | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| Paul Graham: Unofficial RSS Feed | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| Penny Arcade | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Penny Red | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| PHD Comics | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Phil's blog | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| Planet Debian | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| Planet GNU | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| Planet Lisp | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Pluralistic: Daily links from Cory Doctorow | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| PS238 by Aaron Williams | XML | 00:07, Thursday, 21 May | 00:55, Thursday, 21 May |
| QC RSS | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| Radar | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| RevK®'s ramblings | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| Richard Stallman's Political Notes | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Scenes From A Multiverse | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| Schneier on Security | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| SCHNEWS.ORG.UK | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| Scripting News | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Seth's Blog | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| Skin Horse | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Tales From the Riverbank | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| The Adventures of Dr. McNinja | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| The Bumpycat sat on the mat | XML | 00:14, Thursday, 21 May | 00:54, Thursday, 21 May |
| The Daily WTF | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| The Monochrome Mob | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| The Non-Adventures of Wonderella | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| The Old New Thing | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| The Open Source Grid Engine Blog | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| The Stranger | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| towerhamletsalarm | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| Twokinds | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| UK Indymedia Features | XML | 23:56, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Uploads from ne11y | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| Uploads from piasladic | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |
| Use Sword on Monster | XML | 23:56, Wednesday, 20 May | 00:43, Thursday, 21 May |
| Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily | XML | 23:42, Wednesday, 20 May | 00:28, Thursday, 21 May |
| what if? | XML | 00:21, Thursday, 21 May | 01:02, Thursday, 21 May |
| Whatever | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| Whitechapel Anarchist Group | XML | 23:49, Wednesday, 20 May | 00:38, Thursday, 21 May |
| WIL WHEATON dot NET | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| wish | XML | 23:56, Wednesday, 20 May | 00:41, Thursday, 21 May |
| Writing the Bright Fantastic | XML | 23:56, Wednesday, 20 May | 00:40, Thursday, 21 May |
| xkcd.com | XML | 00:14, Thursday, 21 May | 00:57, Thursday, 21 May |