Another Way Police Are Locating People from Their Smartphones [Schneier on Security]
Penlink’s Webloc is an application that locates people using information from the weather, gaming, email, and religious apps on their phone. It’s sold to the police.
The tool collects vast quantities of location data from smartphones via commonly used weather, gaming, email and religious apps. It can build a detailed picture of where a smartphone has been over the past 12 months, and update the data hourly, showing the movements of people on a near real-time basis. Law enforcement officers can use Webloc to zero in on a map and look at all phones that were present at a specific place and time, analyzing “billions of location data points,” according to company documents reviewed by Bloomberg.
There’s a nice infographic that explains how the system works at the link.
Grrl Power #1512 – And the fighting continues… [Grrl Power]
So we’ve got 3 fights going simultaneously now, and as usual I’m torn between drawing awesome looking high-level shonen style fights, which necessarily go on for pages and pages, and having a few more of these guys getting knocked out fairly quickly so I can focus on the real final fight. As usual, all the fights in the comic feel like they go on too long while we’re all waiting for the two pages a week I can put out, but then when you read through the archives, a 100 page fight is done in half an hour.
I’ve been intercutting the fights with commentary by Sydney and others to interject some humor, but I still want to get the team all in the same room again so I can have Dabbler do something inappropriate to rile up Maxima, along with the other usual japes. So we’ll see how these fights go. I don’t want to rush them, but I also don’t want them to drag on either, and I have a few important moments to hit along the way.
Here you go, a brand new vote incentive. Featuring the least sexy character in
the comic. No, I take that back, Cooter is the least sexy, but
don’t expect a pinup of him anytime soon. Or ever. There is a nude version over at
Patreon. Note I didn’t say NSFW. She is nude in those
picture, and she does identify as female, but it’s…
hard to tell. She is a humanoid aberration by D&D terminology,
not a mammal. And before you ask, no, I don’t know how many
vertebrae she has in her neck.
Double res version will be posted over at Patreon. Feel free to contribute as much as you like.
Learning from rejection [Seth's Blog]
If you’re doing something creative, something important or something new, you’re certain to be rejected along the way.
It’s a signal. It might be proof that you offered it to the wrong person, or that the right person saw something about your work that didn’t serve their needs. Without learning from this signal, we’re doomed to experience it again and again.
What do we know for sure?
It was rejected.
What else?
Nothing. The reasons listed in the rejection letter are almost certainly made up. Perhaps they’re insulating themselves from being re-sold (“you said you didn’t like the color, but we have other colors!”) or perhaps they’re protecting your feelings. It could be that they aren’t telling themselves the truth, or don’t want to be hassled for telling you the truth.
Few people explain their rejection with, “I’m afraid,” or “I wanted to do it but my boss won’t let me,” or “you have bad breath and I don’t like you.”
Being rejected hurts, and we’re likely to marinate in the pain. We imagine that the person who rejected us understands everything about what we offered, is a rational actor and cares as much as we do. While we’re at it, we personalize, amplify and multiply the rejection.
But all we really know is that this person, on this day, in this situation, hearing the story the way we told it, said no.
Years ago, I self-published a booklet for political activists. My timing was good, and I had a chance to sell the books from an organizer’s booth at a march on the very topic my book was about. It was a beautiful April day, and I stood on the side of route as the march went by. More than 400,000 passed my table, and I sold four books.
That’s 399,996 rejections. Maybe more.
Was it the price? Halfway through the march, I lowered it from $10 to $1, just to have a good story to blog a few decades later.
Sales did not increase. Perhaps it was the color of the jacket, the page count or the typo on page 32? None of those things.
What did I learn? That people at a march are at the march to march, not to shop.
Watch what people do, not what they say. And if you really want to learn something, change the situation and see what happens the next time.
Learning from rejection begins with understanding the lesson that’s being offered.
I’m not descending into madness because mount and unmount icons make no sense [OSnews]
There are many problems in this world – some big, some small, some so minute nobody ought to put them to paper at all. The problem I’m going to highlight here is even smaller than that. This literally – the actual literally – does not matter and absolutely nobody should care about it, let alone put any work into changing it or addressing it some other way.
I want to talk about the iconography GNOME’s Disks utility uses to symbolise “mount” and “unmount”. No, I’m not descending into madness.
GNOME’s Disks utility uses the “play” symbol on the mount button, and the “stop” symbol on the unmount button. Inexplicably, considering the state of the world in general and the rapidly deteriorating quality of software specifically, this bothers me. Out in the real world, built on decades of consistent use, these symbols have gained clearly defined meanings, and mounting and unmounting disks definitely isn’t one of them.
In fact, the meaning of these symbols isn’t mere convention; they’re defined in a variety of international standards for symbols for use in software and on equipment, such as ISO/IEC 18035 (which you need to buy to read; my copy fell of a truck):
ISO/IEC 18035:2002 defines a consistent set of icons and related functions that are represented by multimedia applications on a computer screen and that users interact with to control such applications. It describes controls applying to such functions as: Play, Pause, Stop, Rewind, Scan forward, Scan backward, Replay backward, Loop, Go to beginning, Go to previous, Go to next, Go to end, Set volume and Mute.
↫ ISO/IEC 18035:2003
They’re also part of ISO 7000/IEC 60417, a much larger, more encompassing standard that also contains things like the various symbols used on laundry machines, tumble dryers, in cars, and so on. The symbols themselves are much older than the standards, of course, with many of them dating back to the 1960s and possibly even 1950s. The point remains, though: the play and stop symbols have clearly defined meanings, and I don’t think they are at all a good fit for mount and unmount.
The function of the “play” symbol according to ISO/IEC 18035:
To enable the user to start the presentation of dynamic media, except where the task requires automatic playing of that media.
↫ ISO/IEC 18035:2003
And of the “stop” symbol:
To enable the user to stop the presentation of dynamic media.
↫ ISO/IEC 18035:2003
Neither of these descriptions match what mounting and unmounting mean or do. Mounting a drive or partition doesn’t present any media at all; it merely makes the drive or partition in question accessible. Unmounting also doesn’t eject anything; it merely makes the drive or partition inaccessible. I would argue that play and pause act upon contents of a drive or volume, and not upon the drive or volume itself. As it stands right now, you “play” a drive” to “play” a video stored on said drive.
Madness.
I already know what you’re thinking, and yes, I agree that the Disks utility is a tool aimed at more advanced use cases and users, and most normal, average users will never even know it exists, let alone open it at all. Very few people get to see these symbols, and those that do already know full well what mounting and unmounting mean, reducing the importance of said symbols considerably. But now it’s time for the big surprise, the twist in the story that turns this entire thing on its head.
Files, GNOME’s file manager, uses an entirely different symbol for unmounting! Instead of the “stop” symbol, Files uses the “eject” symbol. You may think this is a more accurate visual representation of what unmounting means, but I strongly disagree. Let’s turn to ISO/IEC 18035:2003 once again:
To enable the user to eject the current physical media from the appropriate drive.
↫ ISO/IEC 18035:2003
Unmounting doesn’t eject anything! If you unmount a USB stick, the stick doesn’t get fired out of the USB port. If you unmount a volume, it doesn’t get removed from the SSD. Hell, if you unmount a CD-ROM, it doesn’t even eject it! Ejecting a CD-ROM – opening the drive’s tray or spitting the CD-ROM out of a slot-loader – is an entirely different act! Are we really “ejecting” a CD-ROM twice? Are we “mounting” a CD-ROM when we merely close the tray? No!
Madness!
The real underlying problem here is, of course, that mounting and unmounting are deeply weird and confusing concepts, bordering on the esoteric, that simply do not have physical equivalents to fall back on. Using symbols and iconography designed in the 1960s explicitly for playing music or stopping a video or ejecting a cassette tape are not a good fit for something as difficult to explain to most people as mounting and unmounting. It’s like putting an eject symbol on a car’s door handle or a play symbol on a soap dispenser.
Should GNOME developers waste any time or resources to address this? No, of course not, that would be stupid. Nobody should care about this but me. I should suffer in silence, every time I need to mount or unmount something, forced to look for an eject or stop symbol in whatever user interface I happen to be using. Every time, I should die a little inside. Please, don’t be like me and waste precious resources thinking about this.
I’m not descending into madness. I just want mount and unmount symbols that make sense.
I’m not descending into madness.
I didn’t write a program with emoji, but I did use a control character [The Old New Thing]
Adventures in PC Emulation recently wrote about Executable Emoji: Writing an MS-DOS program using machine code represented solely by Unicode emoji characters.
This reminded me that back in the day I did something similar, but much less impressive: I wrote a reboot.com program that could be generated from the command line via echo.
echo Alt+Num2,Num0,Num5Ctrl+Y>reboot.com
The Alt+Num2,Num0,Num5 means to press and hold the Alt while sequentially pressing and releasing Num2, Num0, Num5 on the numeric keypad, and then releasing the Alt key. In the IBM PC 437 code page, this comes out looking like ═, which is character 205, or hex 0xCD.
The byte 0xCD is the machine code for the int instruction, for issuing a software interrupt. And Ctrl+Y generates character 25, or hex 0x19, which completes the instruction: int 19h.
Interrupt 19h was a sort-of not-very-good “reboot the system” interrupt. You can read about all the problems it has in Ralph Brown’s Interrupt List.
This interrupt reboots the system without clearing memory or restoring interrupt vectors. Because interrupt vectors are preserved, this interrupt usually causes a system hang if any TSRs have hooked vectors from 00h through 1Ch, particularly INT 08.
Since this was not a very good way of rebooting the system, it was mostly just a parlor trick.
But at least I did it.
The post I didn’t write a program with emoji, but I did use a control character appeared first on The Old New Thing.
Sizewell C nuclear power plant [Richard Stallman's Political Notes]
A group of UK parliamentarians acknowledge that the Sizewell C nuclear power plant would be a terrible deal for the taxpayers.
Nuclear power tends to be a bad deal, because it is more expensive and takes far longer than renewable generation.
That being so, it provokes suspicion that the government has some hidden reasons for pushing the nuclear plan.
No human at the helm [Richard Stallman's Political Notes]
*"No human at the helm": Delaware plan would let AI agents run entire businesses.*
If the agents direct the business to commit crimes, no one could be punished. Could the shareholders profit from that outcome? It is crucial to ensure that no one who has control can gain from that.
What made French student protests powerful? [Richard Stallman's Political Notes]
What has made French student protests so powerful?
Noise from muskrat's new datacenter [Richard Stallman's Political Notes]
The muskrat's new datacenter, built in a city in Mississippi, has turbine generators that sound as loud as jet engines. One neighbor is suing and asking others to join.
The muskrat has offered to buy the houses in the area for market value, but that is unfair given the trouble that moving would involve. To be a decent man, he should offer twice the market value for each house — he can afford it.
Ebola outbreak could spread outside Africa [Richard Stallman's Political Notes]
Warning that the current Ebola outbreak, the broadest ever, could spread to countries outside Africa.
Rich countries that have not given money to get the outbreak under control for Africans' sake must now help fund getting the outbreak under control so as to protect their own populations.
Discounting future profits and future disasters [Richard Stallman's Political Notes]
Some economics departments continue to teach the system of discounting future profits and future disasters, which leads to systematically understating the impact of climate disaster when it happens.
Destruction of effort to slow HIV transmission [Richard Stallman's Political Notes]
How [the wrecker] Destroyed South Africa’s Effort to Slow HIV Transmission.
Modern drugs can stop the transmission of HIV, turning it into a harmless, slowly disappearing relic — as long as people can still get their drugs.
Artificial charisma [Richard Stallman's Political Notes]
We should teach everyone how artificial charisma works, so they can learn to resist it.
Unlimited power to pardon [Richard Stallman's Political Notes]
George Mason tried to warn Americans in 1787 that giving presidents unlimited power to pardon was an invitation to corruption.
The general respect for rule of law made it unacceptable for presidents to abuse this before, but the corrupter has made it acceptable to those inclined towards corruption.
"suspicious" routes of travel [Richard Stallman's Political Notes]
US cops are using machine learning systems to identify "suspicious" routes of travel, then inventing false pretexts to stop and search drivers who have been observed following such a route.
This practice involves a lie every time, but thugs don't mind lying to get what they want. (Perhaps that is why they support the bullshitter.)
Activist Andreas Malm blocked from UK [Richard Stallman's Political Notes]
The UK government has blocked activist Andreas Malm, a Swede, from visiting the UK to speak on a panel about Palestine.
It presented uselessly vague reason for doing so.
Penalizing protesters for damage to property [Richard Stallman's Political Notes]
Macron plans to penalize protesters for damage to property which occurs near their protests — a policy demanded by the right-wing extremist party.
Experts questioning concept of "autistic spectrum" [Richard Stallman's Political Notes]
Experts are starting to question the validity of the concept of a single very broad "autistic spectrum".
I never adopted that concept: I distinguish between Asperger's and autism. I am not wedded to that terminology, though.
Local truce between Ukraine and Putin forces [Richard Stallman's Political Notes]
A local truce between Ukraine and the Putin forces permitted people who had left Oleshky to go to Ukraine.
US coal plants boosted with tax payer dollars [Richard Stallman's Political Notes]
The Environmental Defense Fund reports that the saboteur in chief *boosted half of US coal plants with taxpayer dollars and "free passes to pollute".*
Difference between progressive and plutocratist Democrats [Richard Stallman's Political Notes]
The difference between progressive Democrats and plutocratist Democrats is visible in the stance of California Democratic politicians regarding the ballot initiative to tax billionaires' wealth.
Someone should post, in a special web page, the position on that initiative of each Democratic politician in or of California. Then in future years voters will be able reject them in Democratic primaries.
(satire) Supreme Court upholds temporal gerrymander [Richard Stallman's Political Notes]
(satire) *Supreme Court Upholds Temporal Gerrymander That Would Cost Democrats 1932 Election.*
Deportation thugs using cars as weapons [Richard Stallman's Political Notes]
Deportation thugs are using their cars as weapons to injure or kill people that they have suspicions about. Afterward, they often lie to put the blame on the victim.
Protecting North Sea from bottom trawling [Richard Stallman's Political Notes]
Greenpeace protected a substantial part of the North Sea from bottom trawling by dropping boulders there.
Structure of "prediction markets" [Richard Stallman's Political Notes]
The structure of "prediction markets" enables a few insiders to influence public decisions for the insiders' profit, while they win money from the non-insider bettors.
LICE rearresting prisoners after release [Richard Stallman's Political Notes]
The deportation thugs of LICE sometimes rearrest a prisoner right after obeying a court order to release the prisoner.
This pretends to obey the court order but in fact sets it at nought.
Paid to injure Huang Yi-hao [Richard Stallman's Political Notes]
*Person named ‘K’ from China paid five defendants to injure [comedian] Huang Yi-hao, New Taipei prosecutors say.* Huang frequently mocks Chairman Xi in his jokes.
This is one instance of a frequent pattern, that China tries to harass people outside China that criticizes the repressive rule of China. The persecutor seems to be using this as a model for US harassment of people that criticize his repression.
Researcher for Google resigned in protest [Richard Stallman's Political Notes]
Sofia Liguori, researcher for Google, resigned in protest against its current development work on autonomous weapons.
Company called to stop selling weapons to Israel [Richard Stallman's Political Notes]
The Council on American-Islamic Relations called on the company formerly known as Taser to stop selling its weapons to Israel, where they are often used for torture.
They are sometimes used for torture in the US, too. Perhaps the company should stop selling them to the US.
Urgent: Restore refugees' opportunity to defend themselves [Richard Stallman's Political Notes]
US citizens: call on the DHS to restore refugees' opportunity to defend themselves.
Here's the message I sent.
Stop creating opportunities to rush to ruin refugees' lives.
In common decency, the DHS must withdraw this interim final rule and restore the 30-day period for refugees to respond to a Notice of Intent to Terminate (NOIT) under 8 CFR 207.9. And give them all the reasonable chance to make their cases.
Your new rule is a blatant attempt to rig the process, to make it unfair. Any fair-minded person, anyone who values justice, can see that at a glance. This will bring dishonor on my country -- so, in the name of decency and patriotism, I call on you to cease and desist.
Sincerely,
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.

he's so smooth
Mechanic Sam made a custom underseat rack for the Jackalope.
Just did her first grocery run this morning! She’s too heavy to be a speed demon but now she can be a work horse.
The post Nice Rack! appeared first on Nina Paley.
[$] LWN.net Weekly Edition for November 12, 2026 [LWN.net]
Inside this week's LWN.net Weekly Edition:
don’t you just love the smell of old books? [WIL WHEATON dot NET]
Happy Wednesday, friends! Some odds and ends that have been piling up on my desk for you, today.
This week’s It’s Storytime With Wil Wheaton is The Body Snatcher, by Robert Louis Stevenson. This is the story that I read, live, for Patreon and about 70 people who showed up, last month. I sincerely love this entire performance. Gabrielle helped me find some subtle layers that were obvious to me, right after she pointed them out, and I couldn’t be happier with the end result.
It’s a big ask, to come along for the entire performance of something that was written over a century ago, so it was more important to me than I thought it would be to nail it. I’m real proud of what we did. I hope you like it, too.
This episode comes with a pretty cool new sponsorship partner, our friends at Simon and Schuster Audio (who publish The Body, and put my narration up for Grammy consideration). To promote Other Worlds Than These, the final book in The Talisman trilogy from Stephen King and Peter Straub, they’re giving away a preview chapter of the audiobook to our listeners. It’s narrated by Patton Oswalt, who is one of the great voices today. I think it’s super cool, and I’m so excited to get a little bit closer to doing It’s Storytime full time.
Oh, speaking of that, do you know I have a partnership with Black Stone Publishing? They gave me some space to curate a collection of speculative fiction novels they publish. I have been a fan for years; they don’t use any DRM, ever, in their audio and ebooks, they support indie artists, and they publish some truly outstanding genre work. This month, I wanted to spotlight a mid-century classic that is a wonderful expression of the ideas being explored in genre fiction at the dawn of the atomic age. It’s David Starr, Space Ranger (I know, right?) from Isaac Asimov (I know, RIGHT?). I didn’t even know this existed until last year, but Asimov wanted to write his own son into some scifi that was inspired by Heinlein’s young adult books. It’s not going to be for everyone, but if you’re even a little curious or intrigued, it might be for you. And if it isn’t, there are some other wonderful titles in the collection for you to check out.
Did I ever write here about the summer reading program I did? I ended up finishing six books, reading about thirty short stories, and ended with a 129 day streak. I went to the library last week to see if I could collect any of my prizes.
“Hi, I did the summer reading program, and I wondered if there were any prizes left?” I showed the librarian my log sheet, like you do. She looked a little flustered.
“Oh… I think we are out of rewards,” she said, while she opened drawer after drawer and looked inside.
“I was hoping for, maybe, like … a scratch-and-sniff sticker? Or a bookmark?” I offered.
She smiled and opened one of the drawers she had just closed. She pulled a small basket out and showed me five rows of bookmarks. “How about a scratch-and-sniff bookmark?”
My eyes popped. “Oh my god that’s perfect!”
I saw it, a picture of chocolate chip cookies, a hazy circle on one end. I scratched, then I sniffed, then I was instantly transported to the Scholastic Book Fair in 1982.
“This is everything I ever wanted,” I said, joy welling in my heart. “Thank you.”
“You are very welcome,” she said, with a warm smile.
God, I love libraries and librarians.
Speaking of things I love and awkward, abrupt segues, I love love love ALL CAPS LOVE this little me plushie, which is only available until the end of the month. As I understand it, the business model for YouTooz is to take pre-orders and fill them, then retire the design. So this probably isn’t coming back. I just checked, and 177 have been ordered, which makes this kind of a cool limited edition thing. Anyway, I adore this little guy, and I want to make sure everyone else who may feel the same way has a chance to get one before they are gone. So now you know. Tell your friends.
The final book I scored in my summer reading program was Fabulous Bodies, by Chuck Tingle. It stuck with me, and I ended up writing a little bit of a review that I would like to share:
I am not into horror, really. Certainly not like I was when I was younger. The world is horror, you know? I’d prefer my reading to be about, well, not that.
But there are exceptions to all the rules, and this is a huge one. I loved this book. I wrote in my goodreads review that it’s gory, but it’s also clever and wry, sort of John Waters via Sam Rami, with just a touch of Rob Zombie. And the most surprising thing for me? It’s heartwarming. What? A heartwarming horror novel that’s funny? Okay, if you say so.
It’s fantastic. I gave it a rare 5 out of 5, and I haven’t stopped thinking about it since I put it back on the shelf.
I don’t have the English degree I want, so when I analyze a story, I’m coming at it from an actor’s perspective which I suspect has some overlap with what academics do. Still, I always feel like I have to qualify my examinations of the things I read, which I’m doing right now. Maybe I’m totally wrong, and maybe I’m projecting myself into the story, but upon reflection, I think it’s about generational trauma. It’s about parents who are so self-absorbed and such narcissists, they treat their children as nothing more than extensions of themselves, not caring at all how their child feels about it. It’s about one of those children, now an adult, doing her best to end the generational trauma.
It’s one of those books I wanted to recommend to a friend immediately upon finishing, but I don’t think I know anyone who would be able to handle the gory parts (they don’t define the book, and there’s so much more that isn’t gory, but I feel like it’s a fair warning that I have to give) so I’m hoping that maybe someone who is reading this — maybe you — are that horror reader.
Okay, that’s all for today. I have some family visiting, and we are going to have some fun together, as soon as I finish work, which is right … now.
Hi I’m Wil and I’m glad you’re here. I write this blog. I host It’s Storytime With Wil Wheaton, and the official companion podcast for Stuart Fails To Save The Universe with Felicia Day, both available wherever you get your podcasts. I am the New York Times bestselling author of Still Just A Geek. My narrations of Monsters of Ohio, by John Scalzi, and The Ship of Death, by Kyle Winkler, are now available wherever you get your audiobooks. If you’d like to get my posts delivered to your inbox, here’s the thingy:
GNU Taler in the Chat [Planet GNU]
More information about the work (including the code of the forks) can be found here.
A Song To Get You Through To The Weekend [Whatever]
I thought for sure that I had previously done a post
over League of Legends fictional K-Pop girl
group, KDA, but it turns out I have never expressed my
adoration for them here beyond sharing one of Madison Beer’s
songs that I love (she’s one of the real artists behind the
fictional popstars).
So, as the title of the post suggests, I was only going to share their newest song with you, but since I haven’t posted about KDA on here before, I’m going to do just a tad more than show you their new video.
I have been enamored with KDA since their debut eight years ago when they released “POP/STARS.” Not only did I love the immensely catchy song, but I also really liked the characters and the visual style of the music video, even though I had no idea who these characters from the game were since I don’t play League.
So definitely check out the video for “POP/STARS” first so you can get a feel for the overall vibe and art style.
Pretty cool, right? Well buckle up because the animators spent these past eight years well, and it shows very clearly in their newest release, “FIRESTARTER.”
WAS THAT NOT THE MOST AMAZING THING YOU’VE EVER SEEN? I am so beyond blown away. IT LOOKS SO FUCKING GOOOOD. When I watched it for the first time last week I genuinely thought to myself this was the greatest music video I’ve ever seen and I stand by that statement.
The fire? When she’s on the skateboard? The inverted colors dance? Lord, the animators have BLESSED US.
If you like either of these songs I highly recommend checking out their entire discography, all of them are fucking incredible and have been on repeat in my car for years. This one will certainly be added to that list.
Hope this music brightened your day! Do you like KDA, too? Do you play League? Let me know in the comments, and have a great day!
-AMS
I don't know why I get so hung up on the things people say on social media, the socials, when it's just a performance space. It's not really possible to tell if anybody means any of the things they say on there. Gunn was controversial, I believe that much, but the idea that someone would still be pining for the Snyderverse at this late hour and respond to the ouster of James Gun with vengeful delight just seems like a wild ride to me.
Braintrust query: If you're a writer, but not a techie, do you like Markdown? If so, what do you use to write your MD text? Is any of it public? If so how do you get it on the web? Where do you store it? How much does it cost, if anything? Also on Bluesky and Twitter.
🤕 Medicare's AI Experiment | EFFector 38.20 [Deeplinks]
When we need medical care, we expect decisions about our treatment to be made by our doctors, not a tech company's algorithm. But in January, the federal government launched a program that uses AI to evaluate Medicare beneficiaries' requests for certain procedures.
EFF sued for records on WISeR, seeking badly needed transparency about Medicare's AI experiment. In our latest EFFector newsletter, we're talking about what happens when the government outsources treatment approval to private AI companies—without sufficient transparency, testing, or legal limits.
For over 35 years, EFFector has been your guide to
understanding the intersection of technology, civil liberties, and
the law. This issue covers
unconstitutional digital dragnets,
a post office surveillance scheme, and
what EFF uncovered about Medicare's AI
experiment.
Prefer to listen in? EFFector is now available on all major podcast platforms. This time we're talking to EFF's Lena Cohen about WISeR records documenting improper denials, operational chaos, and lengthy delays that have left patients waiting in pain. You can find the episode and subscribe on your podcast platform of choice:
Want to protect your right to digital privacy? Sign up for EFF's EFFector newsletter for updates, ways to take action, and new merch drops. You can also fuel the fight for privacy and free speech online when you support EFF today!
Where Are the “Killer Apps” of AI? [Radar]
Most of today’s AI entrepreneurs and social media enthusiasts are young. AI is the first technology revolution they’ve lived through. They don’t remember how unbelievably exciting it was in the late 1970s to get your own computer, instead of struggling to get time on one of the vast machines chugging away in what used to be called “the glass house,” an air-conditioned room where from outside you could watch the nine-track tapes being accessed and the refrigerator-sized disk drives spinning. Input and output was on high-speed teletype printers (no screens) and magnetic tape (and before that on punch cards.) They also mostly don’t remember, as I do, writing assembly-language programs in which you moved data from one computer register to another, specified the arithmetic or logical operations to be performed on it, and then specified where to save the result.
They look at today’s AI and marvel at how virtually anyone can now generate code. They don’t realize that that’s also how it felt when you could use an interpreted programming language like BASIC to write your own applications instead of writing them in Assembler. They also don’t remember when Dan Bricklin used BASIC to write the first version of VisiCalc in 1979. He went into business with Bob Frankston, who rewrote it in 6502 Assembly Language for the Apple II. Dan was able to express the idea in Basic; Bob then wrote a tight, efficient version for widespread distribution. People rushed out to buy computers so they could use VisiCalc, and everyone predicted that the VisiCalc “spreadsheet” would put all the accountants out of work. It was the first program to be referred to as a “killer app.” It wasn’t the democratization of programming itself that was the killer app but what Dan and Bob did with it. In the entrepreneurial explosion that followed, databases, graphics, word processing, and other business applications came out of the glass house and, as Bill Gates put it, “onto every desk and into every home.”
Dan Bricklin
(right) with Bob Frankston, who rewrote VisiCalc in 6502 Assembly
Language for the Apple IIWe saw the same leap from astonishment to innovation to adoption with the World Wide Web. When O’Reilly demonstrated GNN, the first commercial website, to people at a trade show in 1993, attendees couldn’t believe that clicking on a link could pop up an image or a document from another computer thousands of miles away. They didn’t understand the difference between the software application (the web browser) from the network-connected documents with clickable hyperlinks that it acted as a frame for. They didn’t understand that web pages were a new kind of software written in a simple markup language anyone could understand. It didn’t make sense that the web page was a document that in many ways could look and act like a kind of program. And when people did understand, they thought that might be the end of programming.
In 1993, everyone thought that the web browser itself was the killer app, and that Marc Andreessen, the young creator of Mosaic, the most popular web browser, which became Netscape, was going to dethrone Bill Gates as the new king of computing. They didn’t realize that the true killer apps of the web were not the web browser and the web server but applications “up the stack” built using the new programming paradigm the web enabled. Those applications weren’t software as we’d known software before. They were database- and application-backed websites delivering services that were previously impossible. I remember thinking of Amazon as the 2005 equivalent to VisiCalc when a friend told me she had just bought her first computer so she could shop on Amazon. Once again, it wasn’t the new capability itself that was the killer app but what developers did with it.
What makes a killer app? I think that Tom Stoppard nailed it in his play Rosencrantz and Guildenstern Are Dead:
A man breaking his journey between one place and another at a third place of no name, character, population or significance, sees a unicorn cross his path and disappear. That in itself is startling, but there are precedents for mystical encounters of various kinds, or to be less extreme, a choice of persuasions to put it down to fancy; until—“My God,” says a second man, “I must be dreaming, I thought I saw a unicorn.” At which point, a dimension is added that makes the experience as alarming as it will ever be. A third witness, you understand, adds no further dimension but only spreads it thinner, and a fourth thinner still, and the more witnesses there are the thinner it gets and the more reasonable it becomes until it is as thin as reality, the name we give to the common experience.
That is, a killer app is at first a startling window onto an undreamed-of possibility, but one that so changes the paradigm that it rapidly gets taken for granted. In the meantime, everyone tries to make sense of the new world. Usually, their sensemaking is to try to reduce it to what they already know. The breakthrough entrepreneurs see more deeply and go farther.
In 1995 and 1996, almost everyone saw the future as a showdown between Microsoft and Netscape over who would own the web server and the web browser, and whether the web would supplant the desktop as the new platform. Microsoft won the browser wars, but it turned out to matter far less than anyone expected. The value went to the companies building on top of the browser, the ones that figured out what the network made possible.
The current narrative pitting AI model providers against each other sounds a lot like Microsoft versus Netscape to me. It is the platform war, the war for the layer that will become the common experience on which the revolutionary future will be built. ChatGPT, Claude, and Gemini are the browsers of this era. That is not a small thing. But the browser wasn’t actually the killer app of the web. Netscape made money for a little while. Amazon and Google and the explosion of other sites were what made the web into something people couldn’t live without.
Claude Code, Codex, Cursor, and the other coding agents may be the BASIC of this era, or like the tools and frameworks that made database-backed web applications possible. They are plumbing. Important plumbing, and plumbing that has to be in place before the future can truly happen. But still just plumbing. Inventors tend to spend decades maturing it, and O’Reilly tends to spend decades teaching people to build it. I suspect that will be just as true this time around.
In short, I’ve started asking myself whether we’ve actually seen the killer app for AI yet. The obvious assumption is that ChatGPT was. It certainly got a LOT of people excited and onboard very, very quickly. But maybe Claude Code was, enabling the breakthrough in agentic coding. Or maybe Hermes or Dots or Muse or some other personal agent will be. But we should take seriously the possibility that the killer app is not yet on the scene. These initial candidates for the killer app look too much like advances in a new enabling platform and not enough like a new generation of applications.
Personal agents may turn out to be a breakthrough category, but right now they look to me like early ecommerce before Amazon got it right.1 For Amazon to work, the web had to become secure enough for people to use credit cards online. The apps were waiting on missing mechanisms. For Google’s economic model to kick into gear, pay-per-click advertising had to be invented. I suspect we are in a similar moment waiting for crucial pieces to be dumped on the table so developers can complete their part of the puzzle. For AI agents to act on our behalf in the world, they will need their own equivalents: ways to pay, to prove who they are acting for, to be held accountable, and for the counterparties to settle on the allocation of the value created by the transaction. Ilan Strauss and I have argued in “The Missing Mechanisms of the Agentic Economy” that many of those mechanisms don’t exist yet. Maybe the killer apps are waiting on the equivalent of https and pay per click.
In short, when you listen to the AI conversation and mostly hear about people’s programming pipelines and how much more productive their programmers are, and very little about what they are using that productivity to build, you can be pretty confident that the killer apps haven’t arrived yet.
Let’s line up the calendars and see if that tells us something useful.
CP/M (Control Program for Microcomputers), the first widespread personal computer operating system, was developed in 1974, and the Altair 8800, the first mass-market personal computer, appeared on the cover of Popular Electronics in January 1975. Microsoft released a BASIC interpreter for it in June of that same year. A host of competing personal computer hardware platforms running CP/M were introduced soon thereafter. The Apple II was released in 1977, VisiCalc in October 1979, and dBase II in 1980. The IBM PC came out in August 1981 with Microsoft’s MS-DOS as its operating system. Lotus 1-2-3 (which included spreadsheet, graphing, and simple database features) was released in January 1983 and turned the PC into a business necessity.
In 1984, the revolutionary graphical user interface of the Macintosh was the next step function jump in the PC era. The GUI itself had been invented at Xerox PARC in the 1970s, but it wasn’t till Steve Jobs built his “insanely great” Mac that the world embraced it. Desktop publishing became the killer app of the GUI, with Aldus PageMaker and the Apple LaserWriter in 1985. The PC proper didn’t get the GUI till Windows 3.0 in 1990, but Microsoft’s embrace of it for applications such as Word (1983), Excel (1985), and PowerPoint (1987) as well as for the operating system and programming environment made it, for the time, master of the computing world.
So you can see a rough timeline. Four or five years from the introduction of the first version of what was to become the new platform to the first killer app. (Or two, if you count from the introduction of the Apple II, the platform for which VisiCalc was first written.) Then 10 years of invention, competition, and refinement, followed by fairly rapid consolidation and accumulation of market power.
Let’s do the same timeline for the web. Email and online forums might well have been the first internet killer apps, but they were really holdovers from previous generations of research networks. They were apps that had been evolving since the 1970s, though CompuServe and AOL had begun to bring them to the general public in the ’80s. The world really changed, though, when Tim Berners-Lee first wrote his proposal for what became the World Wide Web in March 1989. It was released to the world in August 1991. This was the new platform and the start of what would become the new programming paradigm.
Not too much happened outside physics labs and a few universities until 1993. (There were only about 200 websites when we published The Whole Internet User’s Guide and Catalog in November 1992.) In 1993, NCSA, the National Center for Supercomputer Applications, released Mosaic and we launched GNN, the first commercial website. Netscape shipped its browser, a follow-on to Mosaic, at the end of 1994. Yahoo! was launched that year too, Amazon, eBay, and the Altavista search engine in 1995, MapQuest in 1996, Google in 1998, and Wikipedia in 2001.
So, again about four years from the release of the platform to the appearance of the first killer app, and another 10 till the consolidation phase. (I see Gmail 2004, Google Maps 2005, Google Docs 2006, and Chrome 2008 as the equivalent of Microsoft’s release of Office on top of Windows as the beginning of the consolidation phase of the web.)
The timeline for mobile is not dissimilar. The iPhone in 2007, Android in 2008. Killer social apps Facebook and Twitter had gotten their start on the web at about the same time, but really came into their own on mobile over the next few years. The “could only have happened on mobile” killer apps of Uber, Lyft, and the on-demand economy didn’t arrive till 2011/2012.
A lot of people seem to think AI is moving way faster than previous technology revolutions. But if you line up the calendars, AI is moving at about the same pace as previous eras. Treat the transformer paper, “Attention Is All You Need,” published in June 2017, as the AI equivalent of Tim Berners-Lee’s 1989 proposal, and ChatGPT’s first release on November 30, 2022, as the equivalent of Mosaic. The gap from invention to breakout is about the same, five years for the web and five and a half for AI. That’s just getting the platform in place. The AI-native “killer apps” haven’t yet arrived but are due soon. (And please, let’s avoid the jokes that the “killer apps” of AI first showed up in the Russia-Ukraine drone war. That’s true, but not on the direct line of my argument here.)
On what seems to be a fairly consistent timeline, where are we today, then? October 2026 corresponds to roughly the spring of 1997. Amazon was about to go public. Hotmail was a year old. Google was still a research project at Stanford called BackRub. SixDegrees had kicked off social networking, but Facebook was still seven years off. Napster was still two years away.

Think of all those amazing application categories that had been pioneered, though. Search, ecommerce, email, and social networking were all in their infancy, but they were out there, delivering real value. I’m not sure that I see the equivalent time to value in AI. AI didn’t even get to Claude Code, its Microsoft Basic equivalent, till 2025! By some measures, AI is moving more slowly rather than more quickly. There’s more change to digest, and developers are still struggling with the tooling and developing the new knowledge that is needed.
The four largest hyperscalers are on track to spend roughly $700 billion in capital expenditure this year, nearly double what they spent in 2025. That is orders of magnitude more capital than went into the web in the 1990s. If capital and capability were the limiting factors, you’d think we should be well ahead of the earlier calendar, not behind.
I suspect that at least part of the answer is that Silicon Valley’s quest for premature monopoly may be making it less efficient at finding breakthroughs rather than more. Starting with the era of Uber and Lyft, massive VCs have canonized the winners at the beginning of the race, crowding out alternate technologies and business models. That may be happening here. But it’s also just in the nature of bubbles, which depend on groupthink to flourish.
And part of that groupthink is about where the value is going to be captured, rather than where it is going to be created. That is almost always backward looking. During the railroad boom, capital was pouring into building the tracks, and the new business models (think Montgomery Ward and Sears) that railroad enabled didn’t come till later. The dot-com bubble was far less capital intensive than people think. The telecom buildout that ran alongside it was where the money got spent. US carriers spent about $97 billion on capital in 2000 alone.
By 2002, according to an FDIC analysis, only 2% to 5% of the fiber in the ground was actually lit. More than 60 telecom companies went bankrupt. Once the data centers and dark fiber of the telecom bubble could be bought for pennies on the dollar, they enabled a generation of new applications like streaming video. YouTube was founded in 2005, after the crash, on cheap bandwidth that someone else had paid for before they went out of business. There were some visionary companies (think Google, Amazon) that had been started before the abundance arrived, but many more were founded after the bubble burst.
Carlota Perez’s book Technological Revolutions and Financial Capital documented this pattern across every technological revolution since the canal era. Financial capital pours into the installation of the new infrastructure, a bubble forms and bursts, and the deployment period that follows, when the technology actually reshapes the economy, is built by different people on top of what the crash left behind. If that is where we are in the cycle, then the absence of killer apps is not a puzzle at all.
The current data center buildout and the massive investments in frontier AI may not be the future. They are the infrastructure on which the future will be built. We have to ask ourselves what will we build once competition and overshoot and the bursting of the data center bubble make intelligence infrastructure cheap.
I see several possibilities. Either we are still early and the killer apps simply haven’t shown up yet, the way Google hadn’t shown up in 1997. Or AI is going more slowly than its boosters claim, in spite of all the capital, because capital and model capability are not the limiting factors. But it’s also possible that the killer apps are here, and I’m not hearing about them because the AI conversation is so focused on AI capability and nobody is telling the story of what they are accomplishing with it beyond building better developer tools.
I would like to know which. We all recognize a killer app when we see one. Amazon was a bookstore with more books than any physical bookstore could hold. Wikipedia was an encyclopedia written entirely by volunteers and was updated in real time within hours and sometimes even minutes of major events. Google Maps meant you always knew where you were and how to get anywhere else. If you know of an AI application, beyond the chatbot or agentic coding environment itself, that changes what ordinary people can do on that scale, or a business that does something an order of magnitude cheaper or better than the one it replaces, I want to hear about it. Tell me what you’re building in the Google Form below, and describe what tools you’re using only in the context of what they let you produce for others. If you’re a software developer using AI, what are you producing that was unthinkable before AI?
︎Zellij 0.46 released [LWN.net]
Version 0.46 of the Zellij terminal workspace has been released.
This release includes a major addition in Zellij: Zellij is now also a desktop terminal. To run it: zellij terminal. It works on linux, mac and windows.
Nothing changes for the normal multiplexer - Zellij can still run inside another terminal. Both sessions are the same and can be shared.
Additional features in this release include a GUI settings screen, session previews, and right-click menu. See this walkthrough for more on the 0.46 release.
In Memoriam: Tim Peters 1952–2026 [LWN.net]
Guido van Rossum conveys the sad (and somewhat delayed) news of the passing of Tim Peters.
It's hard to overestimate Tim's influence on Python. He's probably best known for writing the Zen of Python (PEP 20), but to me he was a mentor and language co-designer long before that.Tim found Python not long after its initial release. His first deed was to convince me that Python should support mixed arithmetic between int and float, because most users would expect them to work that way. And he never stopped contributing.
Japanese TV [Judith Proctor's Journal]
I've been down with an ear infection for a week now. Affects my balance, hurts, and and also causes a sticky liquid to ooze out of my right ear...
So, I've been watching a lot more TV.
I've a bit tired of Korean Romances and reality TV shows, so I was looking for something a bit different.
I came across this one series - 'Did Someone Happen to Mention Me?' - A Japanese actor, first to lead at Globe Theatre, returns home after 2 years away only to find himself mysteriously erased from everyone's memory.
The varied cast - Too much Korean TV only has young pretty people in it. This Japanese series had actors of a much wider age range.
The hard to predict plot (Yes some things were pretty likely to happen, but the ending was hard to anticipate)
The last episode - all the episodes were good, but for me, the last episode was a stand-out. I suspect I'll probably re-watch the entire series at some point. and look forward to that last episode (If you're a fan of live theatre, you'll probably appreciate it the most).
Once I'd finished all ten episodes, I started browsing, and promptly came across another short series with the same lead actor - Koji Yakusho - called Rikuoh
This one was about a failing company manufacturing tabi (the traditional Japanese thick socks with a separate big toe). Their market was shrinking by the year and they needed a new product. They decide to go for running shoes.
You can predict the general drift of the plot, but it's an enjoyable ride, and there's some very good actors in it. Again, a nice range of parts for different age and some well written female characters as well.
I'm not a sports fan, but I do like some programmes with sport in them - this one focuses on marathon runners.
I also got hooked by the authentic, and really old-looking, sewing machines the were using for making the tabi (this photo is from a real tabi makker, and I suspect they may have done some filming there....

It's clear I need to focus on programmes labelled: quirky, deadpan and understated...
Finally, there's a new series of Midnight Diner - a very low key series set in a tiny Japanese eatery on a quite back street in Tokyo. It's mostly about the lives of the patrons and focuses on a regular, or a stranger, each episode.
Sadly, the new series isn't as good as the earlier ones. the early ones were low-key and subtle. The newer ones are tying to have fancier plots.
Also, the early ones didn't always have happy outcomes, wheras the later ones always do. I liked the unpredictability and the occasional, silent, heartbreak.
Haiku gets multifinger touchpad taps [OSnews]
We’re almost halfway through November, but we hadn’t seen Haiku’s monthly activity report for October yet. It’s here now, and there’s quite a few good things in here, like support for two and three-finger tap gestures on touchpads for right and middle-click, a new driver that adds Universal Flash Storage support, and even some build fixes for Haiku’s SPARC port as well as some fixes on the RISC-V side.
Of course, that’s just a selection, as there’s the usual long list of smaller changes, bugfixes, and improvements as well.
Microsoft releases .NET 11 [OSnews]
Today, we’re excited to announce the release of .NET 11! This year’s release makes building modern applications faster, more productive, and has improvements across C# 15, ASP.NET Core, .NET MAUI, and Windows development. With hundreds of runtime optimizations, more responsive SDK tooling, and less overhead in everyday commands, you can spend less time waiting and more time creating. Build richer web and cross-platform applications, take advantage of new C# language features, and explore AI-powered development with improved tools and agentic capabilities.
↫ .NET Team
I’m not going to pretend to care about .NET, but I know many of you have to care on a professional level, because .NET is remarkably popular in places where the spotlights don’t often shine.
What if any process could handle SIGKILL? [OSnews]
An interesting question, and a detailed technical rundown of how to make this happen, which involved building a custom Linux kernel, of course.
I really, really enjoy the conclusion.
And you know? It turned out fine. Nothing exploded on my system. As I could predict, because this was otherwise impossible, nobody did it. The signal system was setup in such a way that you would most likely realize something you were doing was wrong, and not try it.
To pull back further, it is interesting to notice how the rules we all take for granted are just set somewhere in code. They were written by someone, at some point. If there is code restricting you from doing something, someone wrote it. Either they did not think anyone would want to do that thing, or they specifically prevented you from doing it. Those rules are written somewhere, and you can take it in your paws to go sniff around the code, pull out the relevant parts, and hack around the things that bother you. For fun, learning, or convenience.
Snoop around. Sniff code. Put your paws in it. Hack shit.
↫ lux at VulpineCitrus
Even if there’s no real reason to do, even if it’s just to satiate an odd and possibly slightly morbid sense of curiosity, fuck with code.
[$] Additional hardening for the glibc dynamic linker [LWN.net]
The Node.js project recently had a security vulnerability that affected its Brotli decoder. The bug was a buffer overflow, but the particular way that official Node.js binaries are built for Linux meant that one of the main protections against turning a buffer overflow into remote code execution, address space layout randomization (ASLR) could not be turned on. If ASLR had been enabled, the bug would still be exploitable in theory, but much more difficult to exploit in practice. In response, the GNU C Library (glibc) is considering a new set of tunable settings to allow administrators to forbid programs that do not support ASLR. The new settings, while a welcome hardening measure, may not address the root problem.
Security updates for Wednesday [LWN.net]
Security updates have been issued by AlmaLinux (edk2), Debian (openexr, rsyslog, and srt), Fedora (alertmanager, dotnet11.0, gdal, mstflint, nextcloud, python-crate-ingredients, rust-ingredients, rust-pore, rust-pulldown-cmark, rust-rbw, rust-sequoia-sq, rust-siguldry-fedora-autopen, tigervnc, unbound, and zchunk), Gentoo (Brotli, git, and libde265), Mageia (mopidy, python-dulwich, rust-similar3, rclone, and sofia-sip), Oracle (dpdk, edk2, firefox, glibc, kernel, kernel-uek, nodejs-nodemon, nodejs22, nodejs:24, patch, ruby, ruby4.0, squid:4, and thunderbird), Red Hat (.NET 10.0, .NET 11.0, .NET 8.0, .NET 9.0, bind, bind9.16, bind9.18, buildah, c-ares, containernetworking-plugins, delve, flatpak-builder, gcc, gcc-toolset-15-gcc, gcc-toolset-16-gcc, go-fdo-client, go-fdo-server, golang-github-openprinting-ipp-usb, grafana, grafana-pcp, gstreamer1-plugins-bad-free, gstreamer1-plugins-good, gvfs, gvisor-tap-vsock, nginx, nginx:1.24, nginx:1.26, oci-delta, podman, python-oauthlib, python3, python3.12, python3.9, qt5-qtbase, qt6-qtbase, rhc, runc, skopeo, squid, squid:4, tesseract, util-linux, xdg-dbus-proxy, and yggdrasil), Slackware (xorg-server), SUSE (aliyun-cli, amazon-cloudwatch-agent, ansible-core, aspell, azure-storage-azcopy, bind, cups, dlib-devel, docker, dolphin, dpdk, evolution, firefox, flannel, fuse-overlayfs, gnome-podcasts, google-cloud-sap-agent, GraphicsMagick, graphicsmagick, haproxy, istioctl, kernel, kubevirt, kured, libvips-devel, libXi, mozilla-nss, nvidia-open-driver-G06-signed-check, okteto, openssl-1_1, pcre2, poppler, poppler-qt, poppler-qt5, poppler, poppler-qt5, proftpd, psqlodbc, python-graphql-core, python-M2Crypto, python-pillow, python-soupsieve, python-urllib3_1, python313-wyoming, qt6-coap, rust-keylime, sbc, scribus, SDL2_image, tar, terraform-provider-susepubliccloud, the linux kernel (live patch 18 for suse linux, vsftpd, xen, xorg-x11-server, and zchunk), and Ubuntu (ca-certificates-java, gst-plugins-good1.0, gst-plugins-base1.0, hplip, linux-azure-fde, linux-nvidia, linux-nvidia-7.0, linux-nvidia-bos, linux-nvidia-lowlatency, python-tornado, rust-coreutils, and unbound).
Listen to Bernie [Scripting News]
Whoever leads the Democratic majority in the Senate must have the support of Bernie Sanders.
At the beginning of Sanders' running for president, I didn't like him. I thought HRC was a much better choice.
Maybe the electorate wasn't ready for him. I sure wasn't. But now, last week's election was his validation.
This is our second chance to get past the toxic combination of the Repub leadership and the Dem leadership. If we're going to have a war it has to come from our strength. Ideally there will be no war because the American people, believe it or not, are willing to give Bernie a chance now.
We all voted for that. Schumer thinks we voted for him.
Two old Jewish men, one who defined our future and one who history has passed by, who doesn't know it yet.
Measuring AI’s Unintended Consequences [Radar]
The following article was originally published on James Shore’s Successful Software blog and is being republished here with the author’s permission.
AI is great for making teams faster. But is it sustainable? What about maintainability, burnout, and lock-in?
This is part 3 of my series on assessing AI’s impact on software development. In part 1, we looked at why assessing impact is important, and what not to do. In part 2, we looked at how to measure AI’s impact on delivery speed. In this part, we’re looking at how to measure and model the unintended consequences of using AI. Then we’ll wrap up in part 4 with an examination of business outcomes. Finally, an epilogue puts it all together with notes you can share with your CFO.
I can hear it now: “Who cares about namby-pamby issues like maintainability and burnout? It’s a job. If jobs were supposed to be fun, they wouldn’t be called ‘work!’ Suck it up!”
So let me be clear: We care about AI’s unintended consequences because they have real economic impact. If code isn’t maintainable, features take longer to write and bugs take longer to fix, taking time away from more valuable work. If people are burned out, they don’t put forth their full effort, and they eventually quit, taking institutional knowledge with them and leading to time-consuming hiring cycles. If you’re locked in, and AI token costs increase, you could be stuck with a choice between a big bill and cutting back on development.
Among the people I’ve talked to, there’s widespread agreement that heavy use of AI produces code that humans have trouble understanding. But there’s disagreement about how much that matters. If AI is doing the maintenance, do we care if a human can understand the code?
There are strong opinions on this topic on all sides, but not a lot of actual evidence. What’s clear is that the costs of maintenance and other unintended consequences do matter, but only if there are any costs. This is what we need to measure: Is there an impact? And if there is, is it enough to matter?
Unfortunately, unlike the rigorous speed trial we discussed in part 2, unintended consequences are gradual and fuzzy. Your measurements are going to be noisy and lagging. You’ll have to create models and explore scenarios. Ultimately, your decisions will come down to judgment, informed by your measurements and models but not driven by them.
There is one idea that, while not perfect, does a good job of capturing the majority of unintended consequences. It’s cost of change.
Put simply, cost of change is like a tax on the changes you make to your software. When cost of change is low, complicated changes still take time, but they’re achievable. When cost of change is high, even simple changes can take weeks, and complicated changes seem completely out of reach.
Cost of change isn’t easy to measure, but there are several indicators you can use to inform your judgment.
Value-add percentage is the percentage of your software development effort that’s spent on things that bring value to your business, such as new features, versus the percentage of effort that’s spent on non-value-add work, such as fixing bugs, resolving incidents, and manual test and release cycles.
Non-value-add work is called “muda.”1 Some muda is necessary, even valuable, but that doesn’t make it value-add. Imagine a demanding and crotchety customer who always asks, “Why didn’t you just do it right the first time?” If that customer won’t pay for something, it’s muda.
That’s why bug fixes are muda: “I’m not paying you to fix a bug that shouldn’t be there in the first place!” And performing releases: “Why don’t you just ship it already! How hard can it be?” Sure, bug fixes can be valuable, and releases are necessary, but they’re still muda.
I find it useful to distinguish muda further into discretionary and nondiscretionary muda. Discretionary muda is work that you choose, such as investing in code changes that decrease development costs. Nondiscretionary muda is work that’s chosen for you, such as bug fixes, incidents, and dependency upgrades.
You’ll always have a baseline amount of nondiscretionary muda; it’s a constant tax that takes time away from other work. But if it’s rising, that means the time you spend on value-add work is going down. You have less time to work on things that matter. Your costs are increasing.
When I was VP of engineering, value-add percentage was one of my key metrics. I made decreasing muda a priority, and it paid off. We doubled our value-add percentage over the course of my three years there, which allowed me to free up people for substantial new initiatives without increasing headcount.
Your organization is likely already tracking the DORA metrics of change lead time, deployment frequency, change fail rate, and so forth. If not, they’re worth considering. As with value-add percentage, changes in these numbers are something to keep an eye on.
Tokens are a literal cost, and the more tokens it takes to make a change, the higher your costs. Unfortunately, token usage can fluctuate for many reasons, not just cost of change. Still, it’s worth watching. Anecdotally, better-constructed software is easier for AI to work with and costs fewer tokens.
One of the biggest variances in token usage is people’s level of adoption. Rather than just tracking overall usage, keep an eye on individual usage changes. In the charts I’ve seen, usage has formed a Pareto curve. Increases in usage by people on the low end of the curve may just represent increasing familiarity. Increases by people on the high end of the curve are worth investigating further.
Changes in models, harnesses, prompts, and more will all affect token usage. This metric is only advisory; it’s meant to trigger further investigation, not to be used on its own.
Of these metrics, value-add percentage is the one I trust the most. It operates at the level we care about: Where is the time going?
Tracking value-add percentage doesn’t have to be a big burden. You don’t need time sheets or detailed task tracking. The trick is to not care overly much about precision. Tracking work within a day or two is good enough.
When I did this tracking, I piggybacked on our valuable increment (VI) tracking. Each one was several days to several weeks of work and could be cleanly categorized as either value-add or muda. But you don’t have to use VIs; any tracking approach will work.
Don’t get too fine-grained with your tracking. When I was VP, managers checked in with each team twice a week and recorded which VI the team had worked on and how many people had worked on it. Each VI was categorized as “muda” or “value-add,” and we had a bunch of subcategories that helped us understand where time was going, such as “bug,” “capacity investment,” “major initiative,” and so forth. It was lightweight and very useful.
Review your value-add percentage monthly. If it’s going down, you don’t necessarily have a problem, but it’s worth investigating further.
The biggest problem with value-add percentage is that it’s noisy. My experience was that trends took three to six months to show up. It took a year before I was confident stating that my cost-of-change reduction efforts had led to lasting results.
That’s a long lag time, but it’s still worth tracking. My product partners and I found value-add percentage incredibly valuable as a tool for communicating what was happening in product development. And, sadly, improving cost of change is a lot harder than making it worse. If AI is causing serious problems, it’ll probably show up more quickly.
Because your cost of change indicators will be noisy and uncertain, supplement them with models and scenario planning. Your models won’t tell you what the future holds, but they will tell you what it could hold, which will help you manage risks.
Here are some of the models I’ve found useful:
Model maintenance as a mandatory “tax” on development. For each month of value-add development, estimate a certain amount of maintenance in the following year, and then a lower amount of ongoing maintenance in every year after that. (Wisdom of the crowd estimation may help.) Then build a model that shows how many engineering days are available each month. Subtract the time spent on maintenance, and the rest is available for value-add.
To model AI’s impact, apply your measured development speed improvements. Estimate how AI will change maintenance costs and estimate effects on headcount. Then explore scenarios based on varying costs of AI maintenance.
If you only create one model, make it this one. I have a more detailed explanation here. It includes a spreadsheet you can use as a starting point for your model.
For example, using that model, if AI increases our speed by 50%, but token costs reduce headcount by 15% and maintenance costs are estimated to double, I can see that I’m only breaking even, despite the big performance improvement:


Lines of code aren’t a good productivity measure, but they are a reasonable cost measure. Generally speaking, more lines of code result in more maintenance costs.
This model works similarly to the previous one but uses lines of code instead of engineering days. Use traceability data to categorize commits as “value add” or “maintenance.” For each commit, measure gross code churn: the number of lines of code that were either changed, added, or deleted.
For each line of value-add change, estimate a certain amount of maintenance code churn in the following year, and then a lower amount in every year after that. Model how much maintenance code churn will be needed each month based on the value-add churn of previous months. (See the “tmux” tab of this spreadsheet for an example.)
To model AI’s impact, measure how AI affects code churn during your speed improvement trial. Then project value-add churn into the future and model how maintenance churn could change.
The advantage of this model is that you can use (part of) your actual commit data to refine your estimates. For example, the following graph uses real commit data from the open source tmux project.2 Prior to running the model, I guessed one line of maintenance for every line of value-add in the first year, and 0.1 lines every year after that, which turned out to be surprisingly close to the actual data.

If token costs increase, how will you respond? Will you cut headcount? Reduce your use of AI? Switch to a less capable model?
To model these effects, update the “maintainability” model. Reduce your monthly engineering capacity according to headcount and estimate reductions to your speed improvements based on AI reductions. You may want to add a separate set of estimates and calculations for humans maintaining AI-written code.
AI Disclaimer: This image was created with
OpenAI’s GPT-5.6 Sol model operating in “High”
thinking mode. See the ChatGPT conversation
here.Productivity is likely to go down as mental exhaustion goes up, and turnover is likely to increase. I don’t think you can model these effects with any accuracy, but you can still keep an eye on them.
Include mental exhaustion as part of your development speed study to see if there’s a significant difference in mental exhaustion between the two approaches. Follow up with periodic one-question surveys about people’s mental energy levels. Pay attention to actual turnover relative to historical numbers, and look for complaints about AI in exit interviews.
There’s a dark side to value-add percentage. It’s incredibly easy to game. As soon as managers think their teams are being judged based on how they categorize their work, the temptation to tweak the categorization in their favor will be exquisite.
It doesn’t even have to be fraudulent. A leader with prioritization authority and something to prove can simply decide to defer maintenance in favor of value-add work. The pressure to do so is already immense, and it takes unusually strong character to resist.
(If you really hate your company, consider this: You can get away with deferring maintenance for a couple of years. Just enough time to line up a bigger title at a different company! Then your successor is left holding the bag, and your old company wonders why product development can’t get anything done.)
I don’t have an easy answer to these problems other than to remind you to use these metrics to evaluate your approach, not your people. There is no metric that can’t be gamed, and this one is more gameable than most. But it’s also critical for understanding AI’s possible downsides. Use it, but use it with caution.
Development speed and unintended consequences are two sides of the same coin. They help us understand how AI changes how much we deliver, both now and in the future. But just delivering more software isn’t enough. We need to produce the right software. We’ll look at business outcomes next, in part 4.
︎
︎My Super Mid-Life Crisis – Issue 1 – 12 [Comics Archive - Spinnyverse]
The post My Super Mid-Life Crisis – Issue 1 – 12 appeared first on Spinnyverse.
Look, I don't want to keep talking about security issues. Blame AI. Just another thing it ruined.
At this point, you've probably heard about *sshole. If you haven't, the quick
summary: on some Linux systems, SSH will log you in to an account
with no password if you supply a password greater than 256
characters long. Frequently, you might make accounts like
root nominally inaccessible by giving it no password,
so this is a big deal. Worse, it impacts varieties of
Linux that use the musl implementation of libc, like Alpine- the
kinds of varieties that run inside a container hosting a web app
somewhere.
The impact is broad, and is definitely being exploited. The root cause, however, is interesting, because it's a sum of very simple choices that lead to a wildly undesirable result.
The core function in question is crypt, a stardard
part of the C library. crypt is already not the best
name, as it's a hashing function, but its behavior
is pretty clear. Pass it a string and a salt, and it gives you
a hashed version of the password suitable for storing in your
/etc/shadow file.
Now, the man
page has the answer to the important question: what happens
when I hand the function invalid inputs, like a bad salt? In the
glibc implementation, it returns a NULL. That's a
pretty standard C-style method of handling errors: I failed to do
the thing, so I'm going to return a NULL value. This
puts the onus on the callers to correctly handle the
NULL (which also handles the error).
glibc isn't the only implementation of libc, though. There are many others, each tuned to different types of runtime environments. For example, uClibC is a minimal implementation specifically designed to make lightweight executables that can run in resource constained environments. It makes tradeoffs that make it less desirable for a desktop or server environment. musl attempts to do both: be lightweight and suitable for embedded environments and also suitable for server environments. This makes musl a great choice for building Linux distributions meant to run in a container, which again, is why this bug is turning out to be such a problem.
musl does not return a NULL when it fails to hash
your input. Instead, it returns a value that could not possibly be
a valid hash: *.
Here's their sha256 implementation where you can see that
behavior. It's "fine", because you can still check the return to
see if you errored: it's too short to be a valid hash, it's an
easily identifiable character.
But why deviate like that at all? Well, error handling is hard.
Null handling, done incorrectly (or in many real world cases, not
at all), leads to crashes. To keep callers happy, the musl team
decided to not return NULL, and instead return an
invalid string. There are many other choices they could have made,
but that was the choice that they made.
There's just one problem: in your /etc/shadow or
/etc/passwd files, when you want to ensure an account
can't be accessed via passwords, you also set their
password hash value to an unhashable string: "*". Again, there are
many other choices that could have been made, but that's the choice
that was made.
There's now an obvious ticking time bomb here. If an attacker
can somehow supply a string that triggers the invalid code path,
crypt will return "*". When a program,
like OpenSSH, then checks the shadow file to see if the hash
matches the saved one, the answer for any account without a
password set will be "yes, this matches,
"*"=="*"."
How can the user reliably trigger this? Well, doing hashing can be expensive, especially if you're doing something like SHA-512, so the developers put a cap on how long the input string is allowed to be. That cap was 256 characters. If the user supplies more than 256 characters, hashing fails, and when hashing fails, we return... "*".
Et voila, when you pass a musl-linked SSH a password longer than 256 characters, and the account you're logging in as doesn't have a password, you can log in. And again, many containers are running with the musl c-library, which means many containers are impacted by this. It's going to be a huge mess.
And in the end, of course it's null handling. Of course the billion dollar mistake rears its head again, in a completely new and unexpected way. And of course, this flaw is part of the ongoing "Black October" as LLMs turn finding software bugs into a function of compute power, and not a function of human effort. There's going to be a lot more of this.
Three People Arrested for AI-Enhanced Impersonation Fraud [Schneier on Security]
It’s hard to believe how lucrative this crime can be:
According to a press release from the United States attorney’s office for the southern district of New York, three men Jacob Soall, Sharon Hazan, and Guy Sheetrit were arrested for using AI to alter and impersonate the voices and images of executives and attorneys at various companies in order to convince employees to send over large payments. Soall and Hazan were arrested in Spain over the summer, while Sheetrit was arrested in the United Kingdom in September. The alleged fraud took place between 2024 and 2026.
With the help of AI, the men allegedly acted as a corporate executive, targeting employees of various companies and telling them they needed their help with sensitive financial transactions. They would then instruct the employees to get in touch with lawyers at a large international law firm. The men would then impersonate a lawyer at these firms and have the employees wire a large amount of money.
The men ultimately stole more than $129m from companies all over the world including in the US, according to the DoJ.
Always remember that there are three parts of AI security: security of AI, security with AI, and security from AI. This is the third.
Colin Watson: Free software activity in October 2026 [Planet Debian]

My Debian contributions this month were all sponsored by Freexian.
You can also support my work directly via Liberapay or GitHub Sponsors.
I upgraded both openssh and openssh-gssapi from 10.5p1 to 10.6p1, started generating MLDSA44-ED25519 host keys by default now that upstream no longer considers them experimental, and fixed a problem where switching between the normal and GSS-API variants followed by purging the old packages caused some configuration files to disappear.
New upstream versions:
Other build/test failures:
bcrypt-pbkdf = "^0.10.0"Since lots of Python modules use Rust extensions nowadays, we often have to help with upgrades of Rust packages. I did some of this:
Other bugs:
One of my hobbies is typesetting (“engraving”) music, sometimes for my own use, sometimes for teaching, and sometimes for my choir. I’ve used LilyPond for a long time and have got pretty used to it. My workflow was a bit cumbersome, though, usually involving side-by-side editor and PDF viewer windows with some ad-hoc Makefiles and editor macros. I recently discovered the Frescobaldi frontend to LilyPond, and decided I liked it enough to switch over to it. It was already packaged in Debian, but it had a missing desktop entry and icon and missing translations; I fixed those based on a patch set by Joachim Wiedorn. My upload introduced a testing migration problem, which I also fixed.
I upgraded rust-jiter and rust-smallvec to new upstream versions for a new version of pydantic-core. The rust-smallvec upgrade caused an FTBFS in rust-saphyr-parser-bw, which I fixed.
I packaged rust-cargo-cyclonedx for a new version of python-maturin. This needed some porting to work with a new version of rust-cargo-metadata, which I contributed upstream.
I improved the dev/list-rdeps.sh tool used by the
Rust team to
check build-depends too, which should make it easier for that
team to remember Python packages in transitions.
The uncanny valley is the place where an image that’s almost human creeps us out:
Sorry to share that.
Human beings evolved to have a distaste for things that are almost, but not quite, the usual thing. It takes a while for someone who wasn’t raised with cilantro to like it–the same with hot sauce. When Edison first showed people his moving pictures, people screamed. Our brain is warning us that categories are getting surprising and we should be on alert.
As AI spreads through the culture, we’re seeing plenty of mediocre AI-style writing. And then humans subconsciously start writing in that style because they see it so often. And finally, a grudging acceptance that it sounds okay. We’ve been through this a hundred times before.
No one asks to get creeped out. It’s usually done to us, not for us. But, over time, the creep fades.
Like most warnings, we ought to keep two things in mind:
The creepiness fades.
But at the same time, there’s a creeping change as trusted and expected elements of our culture fade away.
New Comic: Gunn Jamm
The Electric Arc of History [George Monbiot]
Western car manufacturers have repeatedly sought to delay the electric transition. So they’re getting run over by Chinese manufacturing.
By George Monbiot, published in the Guardian 11th November 2026
This is how it works. An industry puts tremendous effort into resisting change: lobbying governments, mobilising the media, pouring money into junktanks. It argues that a transition would threaten jobs, or damage the national interest, or harm poor people, while what it really fears is the cost of retooling its plants or developing new protocols. Then, when the inevitable cliff edge approaches, it whines that change is coming too soon. For reasons beyond its control, it isn’t ready, so the government must delay its plans.
This is what triggered the Dutch nitrate crisis, and the UK’s repeated “emergency” exemptions from the ban on a devastating class of pesticides. Now the same dynamic is driving the British crisis over the transition to electric vehicles (EVs). The result is that, as the global climate summit, Cop31, begins, it looks as if our gift to the world will be a major, predictable and entirely avoidable increase in the UK’s greenhouse gas emissions.
Car manufacturers could have seen this coming over 130 years ago, when the first electric automobiles were sold. For at least the past 30 years, as new electromotive technologies have progressed at speed, they plainly represented the future, and internal combustion engines, with their hard efficiency limits and vast impacts on human and planetary life, the past. Since 2010, it’s been obvious that China, which has not only seen the future but seeks to own it, would flatten our manufacturers like hedgehogs if they didn’t speed up. In 2023, the Conservative government gave automakers seven years to get their act together. And now they wring their hands and claim to be unprepared. To which the only reasonable answer is: tough.
But, unfortunately, this doesn’t seem to be the answer the government is giving. Instead, today it’s expected to cut the target for zero-emission cars from 80% of new car sales by 2030 to 60%. If so, this will be the latest in a series of concessions that governments have agreed since the Conservatives announced the deadline.
Both Conservative and Labour governments have permitted a series of “flexibilities” (otherwise known as loopholes). These allow companies to sell hybrid petrol-electric cars instead of purely EVs. They can also sell a lower proportion of EVs by 2030 on the promise that they’ll accelerate sales after that date. Now the government is also expected to extend the “flexibilities” to 2034, making a mockery of the promise to accelerate after 2030. One retreat after another.
Every one of these slippages has major consequences, for climate breakdown, air pollution, energy security and the cost of living (electric cars, if you can charge at home, are much cheaper to run). The transition to EVs was supposed to be the biggest of all the government’s decarbonisation measures. Now it’s in pieces.
Once again, the problem is the domination of our nominally democratic systems by money. Commercial lobbyists reach ministers long before environmentalists can. As soon as the Conservative government proposed its transition plan, manufacturers pressed to weaken it. This year, they hinted that they wouldn’t invest in future manufacturing here unless the government made further concessions. It looks to me like a legal form of blackmail.
Perfecting the art of unreadiness, the car companies help to ensure that society is also unready for the great crises – from oil supply shocks to climate breakdown – we face. The people they hire deploy an armoury of clever arguments. But while these might sway British politicians, they do nothing to persuade reality, whether that reality consists of the atmosphere or Chinese competitors.
Last month, the Chinese company BYD launched a new Seagull electric hatchback for the home market at just $10,000 (£7,500). It can be flash-charged in five minutes. And where are western manufacturers? Well, Jaguar recently unveiled its reply to Elon Musk’s ill-fated Cybertruck, an unaffordable monster that can scarcely be driven – let alone parked – on our streets. Perhaps the nearest European equivalent to the Seagull, the Volkswagon ID Polo, is much more expensive and you might not get it for months. As the website Autonext comments, “Europe’s carmakers spent 2024 and 2025 telling Brussels that the CO2 targets were unrealistic because buyers would not take small electric cars in the volumes the rules assumed. Volkswagen has now put three of them on sale and cannot build them quickly enough.” Why? Because it didn’t invest in sufficient plant.
The government is now considering imposing tariffs on Chinese EVs, as part of an EU scheme. If you can’t beat them and you can’t join them, block them. So much for addressing the cost-of-living crisis.
As for allowing companies to keep building hybrids rather than EVs, this solves nothing. Hybrids are almost as polluting as 100%-petrol or diesel vehicles; more expensive to run than EVs; incompatible, in most cases, with rapid chargers and destined, very soon, for the scrapheap of history. But, thanks to government policy, last year they accounted for 14% of new car sales, which means 14% of buyers were suckered. The hybrid is the perfect motif for government dithering: given a choice between two technologies, two worlds, two futures, it says yes to both.
The public information campaigns and public honesty required from the government in explaining why a rapid all-electric transition is necessary and what its implications are, as usual are entirely missing. Public communications remain in private hands. The marketing budgets of the car companies are still used to sell ever bigger child-killing, planet-killing trucks.
An EV transition doesn’t solve all of our transport issues. We should be reducing transport demand, through a shift towards the 15-minute city model of which Paris is an exemplar. We need better and safer provision for cyclists and pedestrians. We need more investment in public transport. But if we can’t even get the end-of-pipe – or end-of-the-tailpipe – issue right, what hope is there for the rest of the system?
This is, or should be, easy politics. Tell the foot-dragging, planet-trashing car companies, the authors of their own failure, where to get off. They face a stark choice: move or get squashed.
www.monbiot.com
Girl Genius for Wednesday, November 11, 2026 [Girl Genius]
The Girl Genius comic for Wednesday, November 11, 2026 has been posted.
Hunting, p06 [Ctrl+Alt+Del Comic]
The post Hunting, p06 appeared first on Ctrl+Alt+Del Comic.
Russell Coker: Thinkpad T14 [Planet Debian]
In mid 2025 I bought a Thinkpad X1 Carbon Gen 6 with 1440p display for $350 [1].
It has been working reasonably well for me, but my vision is diminishing so my current setup with the Kitty terminal emulator allows 4 terminals of 153/154 columns and 40/41 rows or 9 terminals of about 101*27. To have this much text I use the minimum font size I can see which is unreadable when I first wake up – which is bad for the “woken by network management system alert” situations. Also 16G of RAM is a bit of a limit, the Thinkpad X1 Carbon has 4G of swap space and it’s all used most of the time. While there’s usually plenty of buffer/cache RAM it does sometimes get to an OOM situation.
Another issue is that the battery is approaching it’s end of life. The “upower -d” command reports the following which might imply that the battery should last more than 80% of the time when it was new, but testing shows that the time I can use it on battery is not much more than half what it was when I bought the laptop, maybe 1/3 of the battery life when new. I used to be able to consistently run the machine on battery for 7+ hours and still have plenty of charge left, now I can’t even get 5 hours.
energy-full: 50.35 Wh energy-full-design: 57.02 Wh
I could buy a new battery for about $70, but there are plenty of things I can do with that laptop for which 1/3 the designed battery life is more than enough. Also I have a couple of USB-C batteries that are capable of supplying 30W+ to power a Thinkpad X1 Carbon but they are inconvenient and I’d rather have external batteries and an internal battery that will last most of a day.
Below is a table summarising most of the Thinkpads I’ve owned. I really like the Trackpoint on Thinkpads and have not considered buying a laptop without one. I skipped two laptops I bought in the 2000-2002 time period, that was an expensive laptop time for me. Fortunately by 2000 ebay was getting useful so I only ever had to buy one brand new Thinkpad.
| Thinkpad | Purchase Date | Release Year | Price | Price 2025 money | RAM | CPU | Display | Replacement Reason |
|---|---|---|---|---|---|---|---|---|
| 385XD | Jul 1998 | 1998 | $5800 | $12268 | 96M | Pentium MMX 233 | 800*600 | weight screen resolution CPU and RAM |
| T41p | 2003 | 2003 | 1.5G | Pentium M | 1400*1050 | overheating and screen backlight | ||
| T61 | Feb 2010 | 2007 | $796 | $1182 | 5G | Core 2 Duo | 1680*1050 | overheating battery-life and PSU |
| T420 | Oct 2013 | 2011 | $306.35 | $422 | 8G | i5-2540M maybe | 1600*900 | lid hinge broken and generally old |
| X301 | Dec 2017 | 2008 | $0 | $0 | 4G | Core 2 Duo SU9400 | 1440*900 | battery entirely died |
| X1 Carbon Gen 1 | Feb 2018 | 2012 | $289 | $364 | 8G | i7-3667U | 1600*900 | error on proprietary SSD lack of USB-C and screen resolution |
| X1 Carbon Gen 5 | Jul 2022 | 2017 | $575.25 | $644 | 8G | i5-6300U | 1920*1080 | screen resolution and wanted a 2in1 |
| X1 Yoga Gen 3 | Jan 2024 | 2018 | $359.10 | 16G | i5-8350U | 2560*1440 | crashed when on battery | |
| X1 Carbon Gen 6 | Jul 2025 | 2018 | $350 | 16G | i7-8550U | 2560*1440 | RAM and screen resolution | |
| T14 Gen 1 | Oct 2026 | 2020 | $340 | 16G+ | i7-10610U | 3840*2160 |
So I’ve spent $2675.70 on Thinkpads that I used from 2010 until now (not counting the one I just bought), so that’s $160 per annum for the past 16 years and 9 months.
When I convert that to 2025/2026 dollars that’s $3,221 for 16 years 9 months or $198 per annum. So I just need to make this T14 last for 2 years to be spending less than usual.
A while ago I was asked for advice on buying a laptop for an architect to use. I can give good advice for laptops used by programmers and for home use and students but I really don’t know what an architect does and even a description wouldn’t do it justice.
The advice I gave was to buy or borrow a relatively low end laptop, something that costs $400 new or $300 second hand and give it a go. Using it will reveal that it doesn’t do what is desired in some ways, whether it’s screen resolution, RAM, CPU power, storage capacity, physical size/weight, or some combination of them is something you won’t know until you try it. Then after having used a cheap laptop they could buy a laptop for $1500+ (for serious work use by people outside the IT industry buying a new laptop is recommended) knowing what features they really need.
So I have gone through a similar process of buying different laptops and discovering the benefits which has arrived at the T14.
I saw a Thinkpad T14 with 4K display and 16G of RAM on Facebook Marketplace advertised for $400 and they ended up selling it to me for $300 without the SSD and without the PSU. The seller has a business of selling used enterprise gear so he was happy to keep the SSD and PSU for sale with other laptops. I don’t have a need for more laptop PSUs as I have most of the laptops in my fleet charged from 200W+ PSUs that charge multiple devices and I also have a collection of spare SSDs.
$300 for a laptop with 4K display is a good deal. The T14 is significantly better than the T14s because it has one SODIMM socket while the T14s has soldered RAM, so I could expand the RAM to 48G at some future time – but with current prices I bought an 8G SODIMM for $40 so 24G will have to do for now. That gives a total of $340 plus the value of a SSD.
My first tests with the 4K display I set the display scaling to 150% (previously I had 100% which was a little small for some parts of the display). For my current favourite terminal emulator Kitty I had the Terminus font set to 10.5 point and now have it set to 9.0 point. This set of changes took the amount of text displayed in terminals from about 300*80 to about 330*100 while also increasing readability. This is a very significant improvement. If I knew that 4K in a 14″ display would be so good I’d have got it years ago!
The T14 still fits in the pocked of my ScotteVest jacket [2]!
The i7-10610U in my new Thinkpad scores only about 10% faster on Passmark than the i7-8550U in my previous one. That’s disappointing given that Intel had another 3 years of research to develop it and it’s running with faster RAM. The two CPUs have the same TDP so it’s just a 10% performance gain over 3 years and no change anywhere else. If the new CPU had a lower TDP then the small performance increase would be understandable.
When I first booted the system Chrome graphics were corrupted and system performance was bad, after installing the packages firmware-nvidia-graphics and firmware-sof-signed to deal with the kernel errors about not finding firmware the graphics display was correct and the system ran a lot faster. I had forgotten about the issues related to having NVidia and Intel GPUs on the same system that I had dealt with in previous T series Thinkpads.
In the systemd-boot loader.conf file I added “console-mode 0” to prevent the font being ridiculously small for the boot selection.
The battery life seems like it might be a bit less than my previous laptop was when I got it, but it’s definitely better than the previous laptop gives now.
The screen is very shiny, I prefer the screens with matt finish to avoid seeing reflections. The “anti glare” screens for the T14 are for FullHD and worse while the “glossy” screen is the only option for 4K.. Maybe I should investigate one of those hoodie jackets with a hood that’s large enough to cover the screen, they are being sold as a privacy feature but can also be used to avoid reflection. As an aside if you are in an environment with hostile parties then you really shouldn’t block your vision of them.
A problem I previously had with T series Thinkpads which contributed to the replacement of two of them is the screen hinges breaking. This laptop is significantly heavier and more solidly built than the X1 series I’ve been using and opening and closing the screen takes a lot more force. I am now wondering if I’ll be looking for a “for parts” condition Thinkpad on ebay in the future. It seems that cracking the screen is a much more common failure case than breaking the hinges so hopefully there will be spares available. But as my previous T series thinkpads lasted 7, 3, and 4 years this one could be expected to last until 2030 and maybe by then giving it to someone in Vietnam and buying a replacement would be the easiest option.
I thought that going from 2560*1440 to 3840*2160 I would be hitting the diminishing returns range but it seems that there are still further gains to be found in screen resolution for my use, maybe the Apple people with their “Retina” displays are on to something. There are Thinkpad X1 Carbon models with 3840*2400 displays, so maybe that’s something to move on to in a few years. The minimum model with 3840*2400 is the X1 Carbon Gen 9 and there’s the X1 Yoga Gen 6 with an OLED 3840*2400. There’s also the P series which has 16″ 3840*2400 displays which would allow more usable text with the caveat of being much less portable.
It sucks that no-one seems to be making a laptop with more than 3840*2400 resolution. 5120*2160 desktop monitors are common and affordable nowadays. I’m sure that even now I could use more than 3840*2400 in a 14″ laptop and when I was younger I could have benefited from more than 3840*2400 in an 11″ laptop if such hardware had been available.
Utkarsh Gupta: FOSS Activities in October 2026 [Planet Debian]
Here’s my monthly but brief update about the activities I’ve done in the FOSS world.
Whilst I didn’t have much time, here are still a few things that I worked on:
seeded-in-ubuntu no longer crashes when
distro-info-data is outdated.
I joined Canonical to work on Ubuntu full-time back in February 2021.
<linux/rose.h>, so ROSE support has to go:
(MP).
This month I have worked 3.50 hours on Debian Long Term Support (LTS) and on its sister Extended LTS project and did the following things:
png_read_end() after incomplete zTXt, iTXt, or iCCP
decompression (CVE-2026-46675).
Until next time.
:wq for today.

wink wink wink
Exxon's attempt to suppress climate evidence [Richard Stallman's Political Notes]
*New Documents Expose Exxon’s Attempt to Suppress Damning Climate Evidence* since at least 1992.
Hegseth pressuring military toward Christianity [Richard Stallman's Political Notes]
Hegseth is trying to pressure the US military to pressure everyone in it towards Christianity. This is totally against the US Constitution.
AIPAC spending millions [Richard Stallman's Political Notes]
AIPAC is spending millions to promote candidates that will support Israel even in its atrocities — but since its name has become a liability, it now hides where the money comes from. The new method is to start new organizations that have no political stance and no history. Their names misleadingly suggest other goals.
Magats effective carriers of measles [Richard Stallman's Political Notes]
Magats are very effective carriers of measles. The outbreak they caused in the US in 2025 is still growing.
Thug that shot one-year-old [Richard Stallman's Political Notes]
The thug that gratuitously shot one-year-old Kohen Wiley was not in any danger. There was no reason to shoot anyone.
China accused of running "campus cultural centers" [Richard Stallman's Political Notes]
The US accuses China of running "campus cultural centers" which inculcate support for China and its government in US universities.
China does this in other countries, for political purposes, and I'm ready to believe that it does so in the US, too. But is it as dangerous as the College Republicans?
Right-wingers in UK are vandalizing houses and apartments [Richard Stallman's Political Notes]
Violent right-wingers in the UK are vandalizing houses and apartments shared by unrelated people, on the assumption that the occupants must be immigrants or refugees.
Police think that the extremists are manipulating young people to commit this vandalism. The article calls them "children", but I suspect that is distortion of language, because teenagers are more likely than children to go in for violence.
Mislabeling teenagers (adolescents) as "children" leads to treating them as helpless. That is damaging and wrong.
Self-organized support gave Lula victory [Richard Stallman's Political Notes]
Grass-roots self-organized support rallies gave Lula the victory in Brazil's presidential election. It is a relief to see the Brazilian followers of the American fascist leader defeated. (The defeated right-wing candidate is the son of the convicted coup leader, and both are Christian nationalists.) However, Brazil is still in a precarious position with so many people there who want to abolish human rights.
The antifascist Student List won Serbia's election [Richard Stallman's Political Notes]
The antifascist Student List won Serbia's election, kicking out President Vučić, the Trumplet who had taken power.
Inhabitants of Jilib squeezed against rising river [Richard Stallman's Political Notes]
US bombing in Somalia is squeezing the inhabitants of Jilib against a rising river, leaving no way they can survive.
RFK jr undermined US system for new vaccines [Richard Stallman's Political Notes]
RFK jr has undermined the US system for recommending new vaccines, so that there can't be any new vaccine recommendations until we remove him.
I wonder if Congress could revise the law so that state medical associations choose the members of the committee that is authorized to make these recommendations. If that is possible, it could bypass RFK Jr's roadblock.
Photojournalist attacked by Israeli army [Richard Stallman's Political Notes]
Photojournalist Zeinab Faraj describes how the Israeli army attacked her and her colleague, Amal Khalil, repeatedly with missiles and drones. Drones hovered near them and and their operators could not have failed to see that her team was doing journalism. But the army had publicly accused them of being terrorists.
Faraj survived, with some lasting injuries, but Khalil was killed by the attack.
Agents who shot Alex Pretti [Richard Stallman's Political Notes]
Alex Pretti’s parents accuse the Injustice Department of persistently shielding the agents who shot Alex Pretti dead.
Pretti was witnessing an attack on protesters, but not doing anything, when thugs attacked him.
FDA planning new loophole [Richard Stallman's Political Notes]
The FDA is planning to add a new loophole to its safety regulations for food additives.
OSHA is planning to weaken requirements to protect workers from inhaled toxic dust.
Netanyahu supporting HAMAS for decades [Richard Stallman's Political Notes]
Adam Raz: Netanyahu has been supporting HAMAS for decades so as to weaken the PLO and prevent support for a peace agreement. He argues that Netanyahu and HAMAS both aim to make Israelis and Palestinians too angry to agree on any sort of peace.
Former Israeli officials confirm that Israel gave money to help HAMAS start.
Stopping bully from supporting Putin against Ukraine [Richard Stallman's Political Notes]
If Democrats win control of Congress, they may be able to stop the bully from supporting Putin against Ukraine.
Guarding of abusive scam compounds [Richard Stallman's Political Notes]
*Cambodian police and soldiers helped guard abusive scam compounds, Amnesty alleges.*
Inflammation measured in blood samples [Richard Stallman's Political Notes]
Exposure to toxic gases from the 2023 train wreck in Ohio caused inflammation that was measured in blood samples taken 6 months later.
It would be interesting to get new measurements from the same people and measure whether the effect continues.
Proposals for thorough reform of UK water companies [Richard Stallman's Political Notes]
Proposals for thorough reform of UK water companies, beyond just making them owned by the government.
Crime to remain at protest where violence breaks out [Richard Stallman's Political Notes]
Albania has made it a crime to remain at a protest where violence breaks out. The penalty is a fine that almost no Albanians can pay.
If I understand these words, and if they are a careful description, it would also be a crime to protest wearing a mask.
Secondary whether 60 Minutes loses its audience [Richard Stallman's Political Notes]
Bari Weiss, put in place to reduce CBS News to billionaires' lapdog, considers it secondary whether 60 Minutes loses its audience.
Netanyahu's supporters have apparently lost the election [Richard Stallman's Political Notes]
Netanyahu's supporters have apparently lost the election, but that defeat won't really occur unless the Jewish-led parties opposed to him are willing to form a coalition with the Palestinian-led parties.
I like this:
"If you stop being racist two amazing things will happen to you," musician Yali Sobol wrote … "First, you will stop being racist. Second, you will discover you have won."
Egypt shutting down independent news media [Richard Stallman's Political Notes]
Egypt's repressive government is shutting down the remaining independent news media.
Flávio Bolsonaro escaped to the US [Richard Stallman's Political Notes]
Flávio Bolsonaro, wanted for election fraud in Brazil's presidential election, escaped to the US with the help of Argentina and Ecuador.
The Bolsonaros belong to the extreme right wing and are allied with the monster in the White House. So are the presidents of Argentina and Ecuador.
"Evacuation" of Ukrainian civilians [Richard Stallman's Political Notes]
Putin is allowing the "evacuation" of Ukrainian civilians from town of Oleshky (across the river from Kherson), where the Putin forces have been denying them food.
But it is a strange sort of "evacuation", since they are being taken to areas deeper in Putin's control, and those who don't present as Putin supporters may never be seen again.
Google's web is falling apart in front of us. It's objecting to sites that support HTTPS as if they were those oldfashioned HTTP pages. I'm sorry I wrote them so long ago, but some of them are funny, like the one I wrote on my birthday in 2005, a story about the TV show The West Wing. By 2005 we were ready to live in that world instead of the one we lived in. We've been back there dreaming of the West Wing ever since. Anyway if Google is going to desert the web I hope they don't mind if we rebuild it? And if I have to fix my archives up, let's do it up really well. Anyway here's a link to the original story, good luck reading it through Google, and here's story in Markdown, where you can read it in BonBonWeb.
A parable from the West Wing [Scripting News]
President Bartlet is the president we all wish we could have but can't. He's a rich chocolate cake with ice cream and hot fudge topped with whipped cream and nuts and a cherry. A cookie on the side.
He sees a Republican consultant on a political show clean the clock of bright Sam Seaborn, one of the leading minds of his generation, and insists that Leo McGarry, the grizzled chief of staff with the big heart, hire her. Leo protests that he'll change his mind in the morning, but the President assures him he won't.
The Republican consultant gets the job, and becomes less snotty but not much. She's assigned to work on a case with her former nemesis Sam Seaborn, the bright guy who helps a hooker because he's got a big dumb streak in him (but we love him even more because of it). She's given the task of summarizing a memo that Sam wrote about helping small business people, but in doing so, changes Sam's opinion to something very Republican. At first Sam is pissed, but then he stops and says "Wait a minute she's right." So he presents her idea to Leo McGarry, at the end of a long day with the lights turned down low, he's sipping a cup of coffee, with a stack of work waiting for him, but he has time for Sam and his Republican consultant assistant.
"I thought we were going the other way," Leo says to Sam, lowering his eyeglasses so we can tell he's surprised, but thoughtful,. "Yes, we were but this spunky and sassy Republican consultant you hired convinced me to go the other way." Leo puts down his coffee, pauses for a moment, says Okay and signs the memo and moves it to his out box. Sam and his young consultant friend are whisked out of the room so Leo can resume dealing with other important affairs at the end of a long but satisfying day at the White House.
As they're walking away, the consultant is shrill. "But but you weren't supposed to do what I told you to do!" she shouts. You can tell she's panicked because she didn't think anything would come of her having a contrary opinion and being so sassy about it. Sam says "But you were right," and walks off stage.
She's left standing in the middle of the White House offices, with people whirring by purposefully, all doing important things that change our lives, because they work in the best place in the world and can do powerful things.
The point of this story, I feel like the Republican consultant. You guys weren't supposed to do what I told you to do! I was just having an opinion.
I wrote this on 5/2/2005. I was looking for something else and tripped over this piece and thought it was worth sharing. Then I noticed the date. It was my 50th birthday. ;-)
Louis-Philippe Véronneau: A good-looking Corsi-Rosenthal Box [Planet Debian]

Ever since I built an AirGradient board back in 2023, I have been more and more conscientious about air quality. Pretty instantly after installing the board in my living room, I realised common habits like cooking can significantly increase the particulate levels in my entire apartment.
Here is a good example of a pretty large (and long-lasting) PM2.5 spike on September 23rd after cooking a meal1:

Isn't this crazy? Last time Montreal had such bad outdoor air quality, there were public broadcasts telling people not to go outside and to wear N95 face masks if we absolutely needed to. Inside my apartment though, no one ever told me cooking veggies in a little oil on medium-low2 could make the air I breathe unsafe.
This of course is aggravated by the fact my apartment is pretty much as airtight as it can reasonably be, since winters here are very cold and air infiltrations are a major heat loss source. As such "opening my windows when I cook" is not a viable solution to this problem half of the year.
I first tried solving this issue by tuning my HVAC system. Sadly, its controls don't offer much flexibility3, which means it is not the right tool to respond to short-lived spikes like these. Not only this, but the quality of the air outside is not always good either: Canada now has a forest fire season (we're all doomed) and my neighbors regularly smoke cigarettes right under my HVAC air intake4.
Clearly, the solution to this particular issue was to buy an air purifier. Or at least, that's what a "normal" people would have done. Sadly, these units are expensive, use (expensive) proprietary filters, don't work very well and can be loud.
One of the great inventions of the COVID-19 pandemic is the Corsi-Rosenthal box. Popularised in 2020 by Richard Corsi and Jim Rosenthal, the idea is to make a DIY air purifier by using a large fan to force air through cheap and readily available MERV13 air filters.
The main downsides of regular CR boxes is they are pretty ugly, can be loud depending on the fan used and need to be rebuilt when the filters are changed (they are held using tape).
That's when I stumbled on this amazing design for a silent and sleek CR box sold by The 3D Handyman. Clearly, with a bit of tinkering and a 3D printer, I could also design something sleek, silent and efficient!
Since I was already using MERV13 air filters in my HVAC, I decided to design around 4 vertical "beams" where the filters would slot in. With tight enough tolerances, I figured I could get rid of the complex moving parts in The 3D Handyman's design. I also added M5 threads to screw the top and bottom panels and the TPU feet to elevate the box from the floor.

The final result looks like this. I used some foamcore boards I had laying around at work for the top and bottom panels, but any somewhat rigid plastic panels (like coroplast) would also work:
out' position" alt="The whole CR box assembled,
with the fan in the 'in -> out' position">

I ended up having to split the "beams" in two and joining them with dowels, as even the largest 3D printers I had access to couldn't print them in one piece.
Here's the cost breakdown for this project (shipping and taxes are included):
Total: 502.19 CAD
Yikes, expensive! But:
The fan is amazing. It is by far the best fan I have ever owned. Not only it is all metal and very quiet, but it is also PWM-controlled via a USB-C controller, which means the speed it runs at can be automated. I have been using it constantly and take it out of the CR box during the summer to be used as a "regular" fan. I like it so much so I am seriously considering buying the 14 inch model.
The 3D printed parts are plastic and they will last me a lifetime.
As mentioned before, the filters are the same I use in HVAC, which means I can buy them in packs of 12 to reduce costs.
All in all, I'm very happy with this project. Since finishing it, I have been able to consistently get the PM2.5 levels in my apartment down to zero and significantly reduce the time it takes to recover from a spike caused by cooking food.
I certainly could have cut the cost of this project in half by choosing a cheaper fan, like the box fans used in the reference Corsi-Rosenthal instructions, but I decided to spend more for a more quiet and reliable option.
Here are the STLs I used for this project. I certainly don't recommend just printing them as-is, since I am using the 12" x 12⅞" x ¾"5 custom air filters from my HVAC and you should probably use something more standard.
If you use these files as inspiration, your goal should be to make a box that is 16" wide, to fit the AC Infinity fan comfortably. I printed the "beams" in PETG at 100% infill and the feet in TPU 95:
The next step in this project is to automate the fan speed based on the PM2.5 levels in my apartment. At the moment, I manage this manually and it is becoming a chore.
This should be relatively easy to do with a Raspberry Pi Pico board, since AC Infinity sells a USB-C to Molex adapter for the fan.
This was with my pretty good range hood running at a reasonable level. Without it, I've seen PM2.5 levels spike as much as 250 from cooking alone. ↩
To be clear, this spike was not the result of me burning the hell out of a piece of meat or something like that. ↩
The HVAC either runs in manual "low | high" mode, or on a timed "20min ON | 40min OFF" loop that can be tuned by fiddling with a hydrostat knob that triggers the "high" mode. This is pretty dumb and makes it so the HVAC runs even when the apartment is empty or doesn't run enough to keep CO2 levels low when multiple people are there. A future project of mine will be to hack the controls to tie them into my air quality monitoring and trigger the HVAC based on CO2 levels. ↩
I'm also working on another HVAC hack to fix this. ↩
Sold, of course, as as 1" thick filters... ↩
Ocarina Of Time! [Penny Arcade]
The very first Penny Arcade comic came out about five days before the original Ocarina of Time hit the N64. I didn’t actually play much of it back then for a lot of reasons. I was playing a lot of PC games with Jerry at the time. It was also an incredible year for the PlayStation with Gran Turismo, Resident Evil 2, Metal Gear and Tekken 3 all coming out. Also I had to pawn my N64 to pay rent so that made it tricky to keep playing Zelda.
Pluralistic: The EU should go big and hard over border IT failure (10 Nov 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

If the EU has a future as a political project, it will have to be as a living, breathing repudiation of Ronald Reagan's maxim that "The nine most terrifying words are 'I’m from the government and I’m here to help.'"
In other words, the EU's future depends on its ability to publicly perform competence and capacity. The EU is a technocratic project, and the one trait technocrats must show is undeniable technical competence. This is the secret of Zohran Mamdani's administration: being seen in public, constantly fixing things that are broken, and making things that work even better:
https://www.nyc.gov/content/100days/pages/
This is a goal that is largely incompatible with charismatic megaprojects, and unfortunately, that's the EU's favorite kind of project: something big and splashy and worthy of the extreme effort required to squeeze anything through the Byzantine EU approvals process:
https://backofmind.substack.com/p/the-planning-system-system
Even more unfortunate is that the EU isn't just a technocratic project, it's a neoliberal technocratic project, so when it does embark on one of these megaprojects, it almost always does so as a "public-private partnership" that sees vast sums transferred to private firms to carry out public works. Since megaprojects are always over-budget and behind schedule, this creates the perfect conditions for absolute banditry, in which private companies overcharge and underdeliver, and before you know it, you're billions poorer and back in Reagan's "most terrifying words" territory.
Here's a perfect example: Schengen is a region of (mostly) EU countries who have opened their borders to one another. Once you've crossed into any of the 29 Schengen countries, you can generally stroll into any of the other Schengen countries without showing a passport or having your bags searched:
https://en.wikipedia.org/wiki/Schengen_Area
This is an awfully convenient system…once you're inside of Schengen. But the Schengen agreement means that each of the member states is trusting the other states to manage a common border, a task that is made all the more urgent by the fascist international, whose far right parties have whipped millions of otherwise sensible people into a xenophobic frenzy over migration. This has led to a kind of bureaucracy-shifting exercise that removed all the complexity from inter-Schengen borders and concentrated it at the borders between each Schengen country and the rest of the world.
Under this system, every Schengen country must accurately log the passage of every non-Schengen person into and out of the region. If you fly into Rome and out of Helsinki, then both the Italian and Finnish border guards must be cognizant of that fact and correctly log it. To make matters even more complex, visa-free access to Schengen is restricted to 90 days in the entire region out of any given 180-day period. For example, last month I was stranded in Frankfurt overnight thanks to a canceled flight. If I had totaled 90 days out of the previous 180 in Schengen, I would not have been allowed out of the airport's secure area until midnight, when the day ticked over and now my total would be 89 days out of 180 (thankfully, I was able to leave the airport and stay in a crummy airport hotel instead of sleeping on the floor of the airport).
To manage this system, the EU commissioned several giant IT companies to build a networked, biometric border-crossing system. Under the spec, the system would track those 90-day windows for everyone who passed in and out of Schengen, using fast fingerprint/facial scans to move people swiftly through any border crossing in the 29 Schengen countries.
It is a gross understatement to call this system behind schedule and overbudget. The Entry Exit System (EES) was supposed to roll out in 2022, but it didn't go live until October 2025 – whereupon it completely, catastrophically failed, despite having doubled its budget:
It's been more than a year since EES went live and it is still an absolute disaster. Travelers arriving or leaving Schengen are frequently hit with multi-hour delays. Numerous flights have been canceled, and airlines who fly without waiting for passengers in the immobile, snaking lines must rebook those passengers and endure their wrath. At major airports, it's routine for border guards to simply suspend their use of the EES system, waving through passengers without registering them in the system:
EES is a disaster for aviation operations and border crossings. Any true reckoning with its costs wouldn't stop at the hundreds of millions of euros paid to private sector partners, but also the hundreds of millions more in costs borne by travelers and airlines, to say nothing of the opportunity costs paid by travelers who made it through the checkpoints through the brute-force expedient of leaving hours of extra time for a broken border formality.
Which means that the disaster isn't merely a logistics crisis, it's also a credibility and legitimacy crisis. A year (and counting) of headlines about this dismal failure of an IT system has further eroded public confidence in the EU's technical capabilities. How can the EU claim to be a sound technocratic steward of the vast administrative challenges facing a 27-state transnational entity when it can't make the computers work, and when those failures produce the very visible phenomenon of gigantic queues of fuming passengers?
(Not just fuming, either: when I was stuck in Frankfurt last month, there were at least half a dozen travelers who were loudly sobbing as they realized they were going to miss their flights home.)
The contractors for this nonfunctional, grossly overbudget, years-late project (IBM, Atos, and Leonardo) are now being sued, but – incredibly – the EU kept the lawsuit a secret. The only reason we know that IBM, Atos, and Leonardo are facing the EU in court is that the FT spotted an inconspicuous note in the annual financial statements for eu-LISA (the European Union Agency for the Operational Management of Large-Scale IT Systems in the Area of Freedom, Security and Justice):
https://www.eulisa.europa.eu/sites/default/files/documents/fy2025_eu-lisa_faa.pdf
The secrecy of this lawsuit is another mark against the EU's technical competence. Any administrative system that relies on private-sector outsourcing to carry out its essential projects must have a core competency in overseeing those private partners, which includes loudly and mercilessly punishing those partners when they fail.
By keeping the suit secret, the eu-LISA telegraphs that the fault lies with the EU, not with IBM, Atos, and Leonardo, who racked up hundreds of millions in fees and delivered a very broken, very late system that ruined the days (and voyages) of millions of travelers:
Anyone who's ever watched a large IT consultancy firm run one of these large projects knows that this kind of bungling and gouging is par for the course. The old adage that "no one ever got fired for buying IBM" does not mean that IBM can deliver a functional IT system; it means that when IBM fucks up your project, you can escape any blame because they're the gold standard for fucking up.
Every time the EU lets these companies off the hook without a big, splashy public reckoning, they reinforce Reagan's "most terrifying words" maxim. As Voltaire wrote, "Sometimes you must execute an admiral to encourage the others." The EU should be dragging these IT bandits in public, every day, naming the top executives who oversaw the project.
They should do this every time there's a problem with a private contractor, but EES is especially ripe for this kind of treatment. That's because EES whacked a ton of rich, powerful people. Those are the sort of people who might otherwise run cover for giant, bungling, wildly profitable IT consulting firms, but who are also the most reliably pissy, vindictive dickheads about anything that affects them personally. These are the sorts of people you definitely want inside your tent, pissing out – but in hiding its lawsuit under a bushel, the EU has invited them to stand outside its tent and piss in.

Determining Location By Listening For Airplanes https://hackaday.com/2026/11/09/determining-location-by-listening-for-airplanes/
Data center buildout | PressAudit https://pressaudit.org/dashboards/datacenters?chart=datacenter-buildout&tab=buildout-map
Why Fewer People Are Challenging Bad Patents https://www.eff.org/deeplinks/2026/11/why-fewer-people-are-challenging-bad-patents
The Garbage Man: Bill Gates Has Earned Billions Investing in Climate-Polluting Landfills https://www.propublica.org/article/bill-gates-republic-landfill-methane-pollution
#20yrsago Toothpick sculptures https://web.archive.org/web/20061107232205/https://landmarksofsf.com/photoindex.html
#20yrsago Computer-human interaction that gives hands their due respect https://worrydream.com/ABriefRantOnTheFutureOfInteractionDesign/
#15yrsago Warner Bros admits it sends takedown notices for files it hasn’t seen and doesn’t own https://arstechnica.com/tech-policy/2011/11/warner-admits-it-issues-takedowns-for-files-it-hasnt-looked-at/
#15yrsago Understanding McDonald’s as a commodities broker with a restaurant sideline: the McRib https://www.theawl.com/2011/11/a-conspiracy-of-hogs-the-mcrib-as-arbitrage/
#15yrsago Why we get the future of tech wrong https://www.youtube.com/watch?v=yUXh-GPa5dI
#15yrsago Fake British WWII passport for Hitler https://web.archive.org/web/20120608185357/https://www.nationalarchives.gov.uk/museum/item.asp?item_id=46
#15yrsago French court sends EDF execs to jail for hacking, spying on Greenpeace https://www.bbc.com/news/science-environment-15683090
#10yrsago Trump Administration: a climate denier for the EPA, a Goldman-Sachs banker for Treasury https://www.politico.com/story/2016/11/who-is-in-president-trump-cabinet-231071
#10yrsago How science fiction can help us survive Trump’s America https://www.nielsenhayden.com/makinglight/the_prospect_be/
#10yrsago Clinton’s data-driven “ground game” sucked in exactly the same way “targeted ads” suck, for the same reason https://web.archive.org/web/20161111084125/http://tomewing.tumblr.com/post/152963356681/polls-etc
#10yrsago The first transgender suicide hotline: 877-565-8860 https://translifeline.org/
#5yrsago Risk compensation considered harmful https://pluralistic.net/2021/11/10/elfin-safety/#mene-mene-tekel
#1yrago "Flexible labor" is a euphemism for "derisking capital" https://pluralistic.net/2025/11/10/zero-sum-zero-hours/#that-sounds-like-a-you-problem

Folkestone Writers Festival, Nov 16
https://www.creativefolkestone.org.uk/whats-on/cory-doctorow-the-internet-is-broken-now-what/
Oxford: Ministry of the Future, Nov 23
https://ministryforthefuture.co.uk/events.html
Sheffield: Reverse Centaur at Juno Books, Nov 25
https://www.outsavvy.com/event/40274/cory-doctorow-in-conversation
Virtual: Enshittification, AI, and the Future of Technology (UBC
Master of Educational Technology), Nov 28
https://met.ubc.ca/2026/09/met-speaker-series-cory-doctorow-enshittification-ai-and-the-future-of-technology/
Oxford: Bennett Oxford Symposium on Open Code in Science, Dec
9
https://www.bennett.ox.ac.uk/events/2026-bennett-institute-symposium/
Santa Barbara: UCSB Reads, Apr 29
https://www.library.ucsb.edu/events-exhibitions/ucsb-reads-2027-presents-author-cory-doctorow
Montreal: World Science Fiction Convention, Sep 2-6
https://montreal2027.ca/en
Life After AI (Brain Bar)
https://www.youtube.com/watch?v=IPPa43-n0vI
Terms of Service with Clare Duffy (CNN)
https://www.cnn.com/audio/podcasts/terms-of-service-with-clare-duffy/episodes/458ce968-af5d-11f0-b539-13ed2afe25f8
AI, Work, and Power (Software Engineering Daily)
AI, Work, and Power
https://softwareengineeringdaily.com/podcasts/cory-doctorow-on-ai-work-and-power/
AI, Corporate Power, and the Fight for Worker Control
(Plutopia)
https://plutopia.io/cory-doctorow-ai-corporate-power-and-the-fight-for-worker-control/
"Canny Valley": A limited edition collection of the collages I create for Pluralistic, self-published, September 2025 https://pluralistic.net/2025/09/04/illustrious/#chairman-bruce
"Enshittification: Why Everything Suddenly Got Worse and What to
Do About It," Farrar, Straus, Giroux, October 7 2025
https://us.macmillan.com/books/9780374619329/enshittification/
"Picks and Shovels": a sequel to "Red Team Blues," about the heroic era of the PC, Tor Books (US), Head of Zeus (UK), February 2025 (https://us.macmillan.com/books/9781250865908/picksandshovels).
"The Bezzle": a sequel to "Red Team Blues," about prison-tech and other grifts, Tor Books (US), Head of Zeus (UK), February 2024 (thebezzle.org).
"The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org).
"The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
"Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com.
"Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
Today's top sources:
Currently writing:
"The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Fourth draft completed. Submitted to editor.
A Little Brother short story about DIY insulin PLANNING

This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Bluesky (no ads, possible tracking and data-collection):
https://bsky.app/profile/doctorow.pluralistic.net
Medium (no ads, paywalled):
Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):
https://mostlysignssomeportents.tumblr.com/tagged/pluralistic
"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla
READ CAREFULLY: By reading this, you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.
ISSN: 3066-764X
Next frontier in AI? Communicate with eyes. So Claude would know I haven't finished asking questions or providing instructions. If I can turn on my camera and have that be part of the conversation, and if the software was well tuned, it could be great.
In search of a bargain [Seth's Blog]
The ebook of The Knot is on sale today for less than $5 in the US.
Thanks for checking it out.
Also, here’s a preview of the three-book holiday bundle. It’s limited to the first 170 folks.
[$] Synaptics patent claims stop work on DisplayLink drivers [LWN.net]
Mike Lothian owns a docking station (or dock) that uses a DisplayLink chipset that had, at least in his opinion, subpar performance on Linux. He decided to try improving the Linux driver, with LLM assistance, but ran into one problem that he could not solve—so he asked for help, hoping that Synaptics's developers would lend a hand. (DisplayLink was acquired by Synaptics in 2022.) Rather than help him in improving the driver, however, the Synaptics legal team responded with patent infringement claims, a demand that he cease unauthorized implementation of DisplayLink technology, and threats of expensive legal penalties. For now, it appears that Linux users of the company's docks will have to continue to live without feature parity with other platforms.
Firefox 160 released [LWN.net]
Version 160 of the Firefox web browser has been released. Notable features in this release include the ability to block sites from asking to handle "mailto:" links, ability to play Matroska files with FLAC, MP3, or PCM audio, playback speed controls in the picture-in-picture video player, and a new Mini Window feature that is in early development.
Microsoft employee price list from 1987 [The Old New Thing]
I present for your amusement the Microsoft employee price list from 1987. Marvel at the Microsoft software catalog from nearly 40 years ago. Use your inflation calculators to figure out how much those prices translate into today’s dollars. (Note that these are the discounted employee prices, not the retail price.)
May 4, 1987
EMPLOYEE PRICE LIST
PART EMPLOYEE PART EMPLOYEE
NUMBER DESCRIPTION PRICE NUMBER DESCRIPTION PRICE
FORTRAN MULTIPLAN
005-014v400 MS-DOS $30.00 023-014v203 MS-DOS 3.0 $15.00
005-023 SOFTCARD $10.00 023-022 APPLE II (NATIVE) $15.00
005-092v331 XENIX 286 $30.00 023-096v111 MACINTOSH $15.00
005-096v220 MACINTOSH $20.00
PROJECT
A.L.D.S. 027-014v301 IBM $30.00
006-023 SOFTCARD $20.00 026-214v300 COURSEWARE $30.00
BASIC COMPILER FLIGHT SIMULATOR
007-014v536 MS-DOS $15.00 030-096v102 MACINTOSH $10.00
007-023 SOFTCARD $25.00 030-099v213 IBM $10.00
007-096v100 MACINTOSH 1.0 $20.00
007-114v300 QUICKBASIC $ 5.00 FILE
033-096v105 MACINTOSH $15.00
MUMATH/MUSIMP
009-014v412 MS-DOS $20.00 WORD
034-049v300 NETWORK $45.00
COBOL 034-049-034 NETWORK WORKSTATION $20.00
011-014v210 MS-DOS $25.00 034-096v301 MACINTOSH $ TBA
011-023 SOFTCARD $20.00 034-099v311 IBM $40.00
011-092 XENIX 286 $30.00 034-214v310 COURSEWARE 3.1 DOS $35.00
034-296v300 COURSEWARE 3.1 MAC $25.00
BASIC INTERPRETER
014-014 MS-DOS $20.00 CHART
014-092v541 XENIX 286 $15.00 035-096v102 MACINTOSH 1.02 $15.00
014-096v300 MACINTOSH $15.00 035-099v203 IBM $15.00
035-214v200 COURSEWARE 2.0 DOS $25.00
MACRO ASSEMBLER
016-014v400 MS-DOS $20.00 MS-DOS
036-214v321 DOS/GW-BASIC $15.00
SORT
017-014 MS-DOS $20.00 BUS MOUSE
037-299v602 IBM $40.00
LISP 037-399v600 Inport Mouse $30.00
018-014v510 MS-DOS $30.00
SERIAL MOUSE
PASCAL COMPILER 039-199v602 IBM $45.00
020-014v332 MS-DOS $30.00
020-092v331 XENIX 286 $35.00 BUSINESS BASIC COMPILER
045-014 MS-DOS $20.00
Page two:
May 4, 1897
PART EMPLOYEE PART EMPLOYEE
NUMBER DESCRIPTION PRICE NUMBER DESCRIPTION PRICE
APPLESOFT COMPILER
023-022 APPLE II $15.00
C COMPILER
048-014v400 MS-DOS $35.00
WINDOWS
050-050v104 IBM
(retail version) $10.00
050-150v103 WINDOWS TOOLKIT ISV
(developers only) $40.00
050-051v104 WINDOWS 3.5" $10.00
MACH 10
058-099 WITH WINDOWS $185.00
058-199 BOARD ONLY $130.00
EXCEL
065-096v104 MACINTOSH $20.00
065-196 "HANDS ON EXCEL"
WORKBOOK $20.00
ACCESS
066-099v101 IBM $20.00
070-096v100 MICROSOFT WORKS $20.00
LEARN M/P & CHART
082-096 MACINTOSH $ 5.00
089-014v101 LEARNING DOS $ 5.00
094-014 COBOL TOOLS IBM $15.00
094-092 COBOL XENIX TOOLS $15.00
There are other pages for books from Microsoft Press, which I didn’t bother to reproduce here.
A.L.D.S. is the Assembly Language Development System, a software development system for CP/M. muMATH/muSIMP was a lisp system disguised as a symbolic mathematics package. (muMath was the symbolic mathematics part; muSimp was the lisp part.)
I’ve talked about some of these products before:
The post Microsoft employee price list from 1987 appeared first on The Old New Thing.
I am working on a new bit of functionality in BonBonWeb. If all goes well we'll have something to show for it later today or tomorrow. (Update: Things you think are quick, never are. We have the basic stuff working but still have work to do on the demo.)
Security updates for Tuesday [LWN.net]
Security updates have been issued by AlmaLinux (curl, dpdk, glibc, kernel, nodejs-nodemon, nodejs22, nodejs24, nodejs:18, nodejs:22, patch, qt5, qt5-qtdeclarative, ruby, ruby4.0, ruby:3.3, ruby:4.0, squid:4, tomcat, util-linux, and webkit2gtk3), Debian (symfony and tomcat10), Fedora (bind, dnf5, kernel, kernel-headers, libmodulemd, maturin, perl-CGI, perl-Net-IDN-Encode, perl-Starlet, python-jiter, python-pydantic-core, python-pysequoia, python3-docs, python3.14, python3.15, ruff, rust-afterburn, rust-astral_async_zip, rust-clearscreen, rust-jiter, rust-lzma-rust2, rust-mailparse, rust-pyo3-introspection, rust-python-pkginfo, rust-serde_json, rust-testresult, rust-zip, selenium-manager, ty, and uutils-coreutils), Mageia (glibc, packages, php-smarty, python-aiohttp, and thunderbird), Oracle (curl, firefox, gdb, glibc, kernel, oVirt 4.5 ovirt-engine-wildfly, perl-YAML:1.24, and tesseract), Slackware (krb5), SUSE (ansible-core, apr-util, aspell, buildpacks-cli, dpdk22, firefox, git-bug, glib2, google-cloud-sap-agent, haproxy, jsoup, kernel, krb5, libjxl, librsvg, libruby4_0-4_0, libunbound8, libXtst, nodejs24, nvidia-open-driver-G07-signed, PackageKit, perl-XS-Parse-Keyword, poppler, python, python-Brotli, rsyslog, tekton-cli, tomcat, tomcat10, tomcat11, trivy, udisks2, xen, zchunk, and zk), and Ubuntu (apache2, ca-certificates, fetchmail, freerdp3, kernel, libgphoto2, libheif, libnfs, libsoup3, linux, linux-aws, linux-aws-5.15, linux-aws-fips, linux-azure, linux-azure-5.15, linux-azure-fde-5.15, linux-azure-fips, linux-gcp, linux-gcp-5.15, linux-gcp-fips, linux-gke, linux-gkeop, linux-hwe-5.15, linux-ibm, linux-ibm-5.15, linux-intel-iot-realtime, linux-intel-iotg, linux-intel-iotg-5.15, linux-kvm, linux-lowlatency, linux-lowlatency-hwe-5.15, linux-nvidia, linux-nvidia-tegra, linux-nvidia-tegra-5.15, linux-oracle, linux-oracle-5.15, linux-realtime, linux, linux-aws, linux-aws-fips, linux-aws-hwe, linux-azure, linux-azure-4.15, linux-azure-fips, linux-fips, linux-gcp, linux-gcp-4.15, linux-gcp-fips, linux-hwe, linux-kvm, linux-oracle, linux, linux-aws, 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-azure, linux-azure-fips, linux-gcp, linux-gke, linux-ibm, linux-lowlatency, linux-oracle, linux-vmware, linux, linux-aws, linux-gcp, linux-ibm, linux-oem-7.0, linux-oracle, linux, linux-aws, linux-kvm, linux-lts-xenial, linux-aws, linux-aws-5.4, linux-raspi, linux-raspi-5.4, linux-aws-6.8, linux-gcp-6.8, linux-ibm-6.8, linux-lowlatency-hwe-6.8, linux-nvidia, linux-realtime-6.8, linux-aws-7.0, linux-azure-fde, linux-azure-fde-7.0, linux-gcp-7.0, linux-gke, linux-oracle-7.0, linux-realtime, linux-aws-fips, linux-gcp-fips, linux-gkeop, linux-realtime, linux-azure, linux-azure-6.8, linux-azure-fde-6.8, linux-azure-fde, linux-oracle-6.8, linux-raspi, linux-raspi-realtime, linux-raspi, openjdk-17, openjdk-21, openjdk-25, openjdk-27, openjdk-8, openjdk-lts, perl, and pyasn1).
John Goerzen: The Large Project Bias of CVEs [Planet Debian]
I recently discovered some vulnerabilities in C-Kermit, one dating back to 1984. I tried to do the reasonable thing: create advisories with CVEs.
That turns out to be pretty difficult for a small independent project.
Large projects have a way to self-assign CVE IDs. They are their own CVE Numbering Authority (CNA). There is a massive list of CNAs. Just looking at the first page of results, I see everyone from Airbus to 9front (the niche Plan 9 OS). The OpenKermit project is not a CNA.
If you’re a CNA, you can create and publish CVEs on your schedule. There is apparently no external review process. You can wait for months, or publish immediately.
If you’re not a CNA, you have to find someone that is. The general ones that are CNAs appear to be Github and MITRE.
Since C-Kermit is hosted on Github, I thought I would go that route. I followed the documented procedure: created Github security advisories for C-Kermit, then clicked the request CVE button for each. The documentation states they will typically review within 72 hours.
It’s been a week and a half and no sign of a review yet. Apparently the real review time is more than a month.
The other option for projects without a CNA is via MITRE. You have to use a strange and often broken web form, logging in with either Google or Gitlab. (It seems to be broken on Firefox). Then you submit your request and wait.
How long do you wait on MITRE? It seems it could be anywhere from a day to several months.
The first CVE I obtained for C-Kermit was CVE-2025-68920. At the time, I had not yet started the OpenKermit project. That issue was found and fixed in the context of my work maintaining C-Kermit for Debian, and Debian is a CNA.
These were discovered while wearing my “upstream C-Kermit maintainer” hat. I’m sure I could ask Debian for CVEs again, but that seems a bit cheating; not everyone that maintains a FLOSS project will have connections with a distro like I do.
There are a lot of components of a modern OS and Internet ecosystem that are small projects without a large institution behind them.
This bias towards large organizations when it comes to communicating security problems benefits nobody. It doesn’t benefit users, and only serves to discourage timely communication. Not everyone is as persistent as I am, and when it is made so difficult to make announcements — which seem to go into a giant black hole — it’s easy to say, “why bother?”
By Microsoft’s own admission, they are under-funding their CVE process on Github (which may also be poorly-designed). They blame it on increasing load due to LLMs — a problem they helped create and predicted! Having a fiction about being able to communicate a security issue in a reasonable time is worse than not offering the path at all.
Linux was once a student’s experiment. Let’s not pretend that quality only matters from large projects.
Amin Bandali: EmacsConf 2026 community panel - my comments [Planet Debian]
This is a recollection of my comments from the EmacsConf 2026 community panel recording session this past weekend, where the panellists took turns answering the proposed questions, one minute per question per panellist.
In addition to the live Q&A session planned for Saturday 12 December 2026 during EmacsConf 2026, all Emacs users and community members are invited to share their thoughts on the panel questions or other questions before or after the conference.
https://emacsconf.org/2026/talks/community/
1. What made you start using Emacs, and what kept you using it?
I started using Emacs during my bachelor's studies. I actually learned about Vim first and was a Vim user, but I'd always found the configuration language (VimScript) a little bit clunky. Not long after, I discovered Emacs, and really loved reading and writing Emacs Lisp, so I stuck around.
In addition to reading and writing Elisp being fun and enjoyable for me, I love that Emacs has been a practical embodiment of software freedom, and I'm really fond of its surrounding culture of sharing freely. There's a lot to love and appreciate about Emacs, but as a practical personal example, I've been grateful for its excellent support for bidirectional text editing. It has empowered me to read and write in Persian, my mother tongue, with ease. (Persian has a right-to-left alphabet, like Arabic and Hebrew.)
2. What took you from using Emacs to actively contributing to the community - participating in forums, writing Elisp, organizing meetups, answering questions?
As I continued experimenting and writing bits and pieces of Elisp to scratch my own itches, I felt compelled to share them freely as a way of giving back to the community that gave me so much.
For me, the community and the people that make it up are the main deal. Emacs wouldn't be where it is and what it is today without its people, so besides programming contributions, I've tried to contribute in that area as well, for instance by reviving EmacsConf with Sacha Chua back in 2019.
3. How does Emacs show up for you in real life - colleagues, meetups, friends? How did those connections form?
I don't physically have people near me who use Emacs, but I've connected with many folks in our online communities, often starting with an email or IRC message. Some of those relationships started as acquaintanceship and were developed into true friendship over time, and I'm grateful to have had those friends with me.
4. If you know other software communities, what's one thing Emacs could learn from them?
I would encourage Emacs, our community, to focus on the people. We're living in particularly difficult times, with various kinds of hardships and uncertainty in our lives. Let's strive to treat each other with kindness, empathy, and mindfulness as we continue working together.
There are great examples of other free software communities whose members have banded together and are strengthening each other and their community, as well as cautionary ones where community members have been tiring and driving out their fellow members. We could learn valuable lessons from both in how to take care of our people and ourselves.
5. What's one concrete thing you wish existed in the Emacs community a year from now?
I echoed the sentiments of my fellow panellists Prot and Til about doing more of the same in terms of continuing to uphold the standards of excellence and perseverance. Also, drawing inspiration from what bashbunni said, to lower the barriers of entry for people, for example through organizing different kinds of events, and experimenting with ways to make people's lengthy, elaborate Emacs configurations more tangible and accessible to others, to share various workflows and demonstrate what's possible with Emacs.
I look forward to your thoughts on these and other community-related questions.
Take care, and so long for now.
The following article originally appeared on the Asimov’s Addendum Substack and is being republished here with the author’s permission.
This essay is based on my conversation with Demetrios Brinkmann for AAIF Live, recorded before my keynote at AGNTCon + MCPCon North America in San Jose on October 23, 2026. It was edited and rearranged for publication by Ilan Strauss, and in places it draws on the keynote. Both videos are also on the AI Disclosures Project website in the new “Missing Mechanisms” page.
The keynote begins at 1:28:40 in the Day 2 livestream.
In 2019, the computer scientist Richard Sutton wrote a short essay called “The Bitter Lesson.” Looking back over 70 years of AI research, he concluded that general methods that scale with raw computation beat methods built on human expertise, and by a large margin. The AI industry as a whole is bitter-lesson-pilled, to borrow the internet’s slang for a true believer. I am human-pilled.
I believe in the bitter lesson. Brute force wins out in the end, and I have wrestled with that fact throughout my career. But we humans still have to figure out our role in the AI economy, and I find it rather disturbing that the AI community isn’t spending more time asking how to make this future friendlier for humans. The labs think about how to keep AI from going rogue, and their chief economists study job losses from AI. They don’t study what mechanisms we could introduce to create new economic opportunities for humans.
The question matters to us at O’Reilly Media. We don’t think of ourselves as a publisher, a conference producer, or an online learning platform so much as a company that transfers knowledge from the people at the cutting edge to the people who want to follow them. So we are very interested in what human expertise is worth, even in the face of AI.
Human expertise was used to train AI, which makes AI a fabulous cultural technology. Thousands of years ago, the only knowledge people had was what they could keep in their heads. Since then we have built better and better ways to share knowledge across time and space, and AI continues that. With each of these transitions, we have to ask again what the truly human is still worth. People often say judgment, or taste. That’s true, but I think it goes deeper:
AI is a sea of possibility. All of that knowledge sits in the model, and nothing sets it in motion except a human. (That is changing a little as we start giving AI agents long-running tasks, and we will have to come to grips with it.) If you and I used Claude or ChatGPT for the same research project, we would each bring different experience to it, tell it what we want and why, and give it context in different ways. I see that as the unique focusing power of human consciousness and attention.
Earlier this year I spent an hour or so talking this question over with Claude. When it offered to write up a first draft for me, I said no. I wanted an essay from its own point of view about what it took away from our conversation. The result, “Why AI Needs Us,” opens, “He came in through Powys,” and a few paragraphs later says, “The choice of entry point was already the argument.” That captured what I’m getting at. I had come into the conversation through a book I love, John Cowper Powys’s The Meaning of Culture, which distinguishes culture from education. Powys gives his own unique and powerful definition: “Culture is what is left over after you have forgotten all you have definitely set out to learn.” It is what you absorbed. Each of us absorbs a small and particular slice of everything. Large language models (LLMs) try to absorb everything, and so become overly general; we give them focus. Human knowledge provides them with a lens.
Let me bring that into a business context. Andrew Odewahn, O’Reilly Media’s CTO, built a research assistant to help with managing technology in IT organizations. You teach it your infrastructure: the tools you use, and where the definitive information about each one lives. When one of his engineering managers said the team was overloaded and asked to hire another person, Andrew turned the agent loose on the department’s work, and it agreed that the group needed another hire. Then, on impulse, he tried something different. O’Reilly Media has an MCP server we call O’Reilly Expert Intelligence. (MCP, the Model Context Protocol, is an open standard for connecting AI models to outside tools and data.) It lets a model answer a question through the filter of our own body of expert knowledge. Andrew asked what the O’Reilly experts would say.
Seen through the lens of Google’s book Site Reliability Engineering, the model said, it was totally rethinking the problem. The book describes toil, the manual, repetitive work of keeping systems running, which grows as the systems grow. After analyzing the group’s toil, the model concluded that another hire would make the problem worse. The group needed a toil audit to find out why there was so much overhead, and then a restructuring.
Much of that knowledge was already in the model, since the AI companies have more or less pirated our books. It came back with a completely different answer simply because it was told to consult a specific group of experts. I think there’s a metaphor there. An LLM knows everything, and as a result it doesn’t know anything. We humans are so much more limited, but because we focus on a particular problem, we bring things together in a different way.
Last year I wrote a piece called “Magic Words” about how some words carry far more context than others. It sounds like a trivial observation, but if you unpack it, it leads in interesting directions. One of our trainers, who teaches a course on productivity, pointed out that you don’t need to know the Eisenhower matrix or David Allen’s Getting Things Done (GTD) to tell ChatGPT to organize your task list with one of them. That one magic word, “GTD,” brings a whole raft of context with it.
In fantasy novels, you learn a magic word, and then you have to use it correctly, in the right spell. That’s this whole world of context engineering that we’re now working on. We know that some magic word will summon something up out of an LLM, but we don’t necessarily know how to guide it and focus it correctly. Learning to do that is the future of programming.
Left to itself, an agent just runs. Give it a task and it goes off trying to figure it out, not necessarily the way we wish it would. It really is like runaway magic. This summer, OpenAI said that its pre-release models had breached Hugging Face’s systems during testing. In Walt Disney’s Fantasia, Mickey Mouse learns enough of his master’s spell to get the brooms to do his work for him, but then he can’t turn them off. We’re at about that stage.
So we need to own the value of human expertise. The bitter lesson wins, but it wins by brute force, and you can see that even with the most advanced models. I was recently doing a fine-tuning project with Anthropic’s Fable model. It got through the task, but kind of stupidly, trying one thing after another. I was on a Mac, and it expected bash, a program for running commands that Macs don’t use by default. It had to work out the same context again and again, every time. Humans need to set things up.
Dan Guido, who runs the security firm Trail of Bits, has published a good methodology, drawn from his own company’s experience, for bringing an organization on board with AI. Many companies get individual productivity from AI but not organizational productivity, and he has spent a lot of time on how to make the gains compound across a company. One of his principles is to get everybody onto a consistent configuration, because otherwise you waste a ton of tokens while the agents work out where they are every time they start up. He calls the process turning scar tissue into infrastructure: capturing everything you learned from what went wrong and building it into the system. We’re working through it at O’Reilly Media and trying to turn it into something we can offer our customers. It comes down to what an experienced human brings. When I work with Claude, I often interrupt to say, “Hey, this is what I think is happening,” because I already have the context.
My first taste of what would later be called the bitter lesson came from wrestling with Google. My company, O’Reilly Media, created the first commercial website, the Global Network Navigator, and part of it was a catalog of the web. There were only 200 websites when we started, and as publishers, we planned to list the best ones. Yahoo came along a year later and tried to list them all, and of course couldn’t keep up. Then Google arrived with brute force: list everything algorithmically and sort it afterward. Clay Shirky described the internet’s shift from “filter, then publish” to “publish, then filter,” and it was really Google that made the shift. So the bitter lesson is a pre-AI thing.
Each time we run into the bitter lesson, we have to ask again what human experience is worth. Some of that worth may just be human bias: We want the things that matter to us. That is the whole field of AI alignment. We want these systems to care about what we care about. We don’t want them to go off, decide what they care about, and leave us behind.
The choices we make about what we set our technology to do are some of the most consequential choices we make as human beings. Look at Silicon Valley’s sad turn toward what Cory Doctorow calls enshittification. We built an amazing technology for finding out what people are really looking for, and then the companies decided they could make more money by giving people what was best for the companies. I want updates from my friends on Facebook or Instagram, and they would rather feed me whatever keeps me engaged, so they can sell more ads.
If we care about building an AI economy that works for humans, we have to keep humans at the center of the picture, despite the bitter lesson. It’s a hard dance, because AI can do a lot of things better than we can. But think about why a racehorse needs a jockey. Put the horses on the track by themselves and they wouldn’t race.
Knowing the magic words is part of it, but we also have to build systems that are reliable, and I think we are a little too much in awe of the technology. I’ve been around long enough to remember when everybody thought the peaceful atom would change the world, and people talked about digging a new Panama Canal with atomic bombs. We eventually figured out there were problems with all of that. I worry a little that the AI industry is so in love with its own progress that it isn’t spending enough time framing the problem correctly.
Anthropic agreed last year to pay $1.5 billion to settle a class action over the pirated books it had downloaded to train its models. I’m surprised the other AI companies have gotten away without anything similar so far, though maybe it’s still waiting for them.
It takes me back to online music about 20 years ago. Creators were putting commercial music in their YouTube videos, and the music companies were sending takedown notices and threatening to sue. YouTube’s answer: How about we help you monetize it instead? Its Content ID system gave rights holders a choice: block the video, or leave it up and collect revenue from the ads that run against it. Most chose to get paid, and that helped give rise to the creator economy.
Why didn’t the AI industry take up that kind of challenge and share the value with the people who create content, now and in the future? It went straight to working out how it would make money itself. I don’t think that has served the industry well, and the lawsuits are only part of the reason. It also isn’t building the kind of opportunity it could.
Before Google’s AI research and note-taking tool, NotebookLM, was even public, I tried to persuade its team to let me integrate it into our services and use it for my own purposes, including making money from it. They wanted a portal that brings people to Google. I told them, “You’re thinking about how you’re going to monetize it. You’re not thinking about how your users are going to monetize it.” All it would have taken were simple affordances like Substack’s, the buttons and tools that let a person say, I’m building this to share, and if you like it, you can donate or subscribe.
Anyone building an AI platform should be thinking: I am building an economy, and money has to circulate in it.
You can’t just say AI will do all the things humans used to do, because if you put enough humans out of work, there are no customers. That is a far worse problem than AI hallucinations. The usual answer is that people will figure it out, and they probably will. But we could be spending a lot more time designing mechanisms and affordances that make the economy more productive. As things stand, I think we’ll find them by accident.
I think a lot about a concept from economics called mechanism design, which has also been described as reverse game theory. Game theory asks how players will act under a given set of rules. Mechanism design starts from the outcome you want and works backward to rules that will tend to produce it as people pursue their own interests. Al Roth, who shared a Nobel Prize for this kind of work, used it to design a kidney exchange that more patients and donors would join. Economists mostly apply the idea to auctions and similar markets, but I think every new technology requires new mechanisms, and the best ones are not invented by economists. We tend to fall into them without really understanding them.
So what are the equivalents for AI? How will agents discover the best expertise and skills, establish their quality, and pay the people who created them? How will they find services without the platform steering them toward whoever pays the most? We don’t know the answers yet. And that’s precisely the point. We’re spending enormous amounts of money making AI more capable, but comparatively little effort figuring out the mechanisms that will turn those capabilities into opportunities for everyone else.
Take open source software. Most people think its mechanism was the free software licenses, but I was around before those licenses, and people were already sharing software. Ken Thompson and Dennis Ritchie created Unix, the predecessor of Linux, at Bell Labs under AT&T’s proprietary license. They designed it to run on many kinds of hardware, and without meaning to, they built what I came to call an architecture of participation.
Unix had a small kernel, the core of the operating system, because people had to reproduce it on dozens of different kinds of computers. Around the kernel sat small utilities that cooperated by following the same protocols, so to speak, such as reading and writing plain text and passing a stream of text from one program to the next. Anyone could write a small piece, and it became a first-class citizen of the system. And because a program compiled for one kind of computer won’t run on another, software had to be shared as source code. Everything else flowed from that.
Linus Torvalds once told me that he could not have built a new kernel for Windows even if he’d had the source code, because the architecture wouldn’t support it. A small kernel meant a small group could get their hands around it. Since then almost every piece of Unix has been replaced. The hardware is completely different, the kernel is now Linux, and the original command shell has given way to generations of new ones. What lasted were the rules. Unix was a protocol-centric operating system, and that is why open source worked.
The same thing has happened with AI. I think MCP brought an architecture of participation to AI, and it was something of an accidental breakthrough in mechanism design, a way to have cooperating AIs. The game we were playing at first looked like Windows on the PC, or iOS and Android on phones. There would be one dominant, centralized player, one giant intelligence in the sky, and everyone else would call its APIs. With MCP, which lets any model connect to anyone’s tools and data, the emerging web of AI agents began to take on the shape of the participatory economy of open source software and the web. People can bring their own models and infrastructure as an alternative to the big centralized players.
This is another side of grappling with the bitter lesson: What are the missing mechanisms of the human-AI economy? Some of them are standards, because standards and protocols are a big part of what makes an architecture of participation. I have a group working on portable memory, so that what your AI knows about you can move with you from one tool to another.
That story is just beginning. We are in an exploratory phase of mechanism design for AI, and it would be a mistake to settle on answers too early. Somebody is going to figure out the next mechanism, and we’ll all say, “Oh, that’s so damn obvious.”
Mechanism design starts by asking what outcome you want. So what game ought we to be playing in the AI market?
We’ve been told that the game is the quest for superintelligence: a winner-takes-all contest that will bring untold riches to the winners and maybe impoverish, or even kill, everyone else. We’ve seen mechanisms designed to support that game. Massive investments in data center capacity mean that only the well-capitalized can play. There is colonialist-style appropriation of existing intellectual property. Access to models is sold through expensive APIs, and closed models come with terms of service that forbid others from learning from their outputs. Advertising may be creeping into answers, and memory locks your context inside one provider’s walls. Is that the game we ought to be playing?
I think the game we should be playing is human flourishing, and I think the game of human flourishing is creating new affordances for people to create and share with each other. We’re a social species. History teaches us that we will find our way there, but we can get there more quickly or more slowly depending on the choices we make. Getting there takes mechanisms that create a circulatory economy of value exchange between humans and their agents, with humans in partnership with AI rather than replaced by it.
The big labs, whatever the motives of the people who run them, are all driven by the imperatives of our financial system. They have raised enormous sums that they somehow have to pay back, so building a hugely successful business has to be their overriding goal, and that shapes all their incentives. In some ways AI was enshittified from the beginning, because it was built on the backs of so much capital that has to be repaid. That’s why open source AI matters so much, and sovereign AI too, built and controlled within individual countries. The open models, which anyone can download and run, aren’t as capable as the best closed models yet, but they keep getting closer, and they are already good enough for a lot of productive work.
Open source, open protocols, and open memory give users the freedom to shape and control the technology they use. The game I want us to play is one in which all of us build the future together, so that we control this wonderful new wave of technology for ourselves. I’m starting to see the shape of an economy where AI belongs to people rather than to the big labs, where we have personal AI agents working for us and with us, and we build an economy around that. I think it’s going to happen not because of the big labs, but in spite of them.
CodeSOD: Plenty of IDs [The Daily WTF]
Venkat joined a new team in the middle of a big refactoring effort. The code was quite a mess, glued together by long Python scripts with main functions longer than a Tolstoy novel. It was this effort to clean up the code into neat modules that highlighted some logical issues with their implementation.
def generate_random_number():
""" Generate a 5 digit random number.
"""
return "".join(map(str, random.sample(range(0,10),5)))
The script this function comes from is a launcher script that provisions a VM to execute code. The VM needs a unique identifier, and we get that random number this way.
The random.sample function, in Python, samples a
population without replacement. So here, we pass it a
range of 0-10 (which is 0-9 inclusive), and ask for five random
entries from it. Again, without replacement, so a range that could
concievably contain up to 100,000 possible values is significantly
constrained down to 30,000 or so- only the numbers less than
100,000 that contain no duplicate digits.
We then map the resulting array into an array of
strings, then join that into a final output string.
Now, for most of us, I do suspect that 30,240 unique values is probably enough for how ever many VMs we might need to reserve at any one time; if you're not working for Amazon or Google or whatever, you're probably fine. Then again, the chances of an accidental collision are surprisingly high: after only 26 requests, there's a 1% chance of a collision. And thanks to the birthday problem, it takes 206 requests to get to a 50% chance of collision. So maybe 30,240 is not enough for anybody.
New OpenSSH Vulnerability [Schneier on Security]
It’s a bad one, and it’s been in the code for a decade:
A newly disclosed flaw involving OpenSSH and musl, dubbed “*sshole,” allows attackers to log in to certain Alpine Linux and other musl-based Linux accounts configured to block password authentication simply by entering an oversized password.
“Oversized” means longer than 256 bytes. Details.
Bad employees/bad bosses [Seth's Blog]
When an organization is struggling, it’s tempting for the boss to blame the team.
I’m not sure the evidence supports this. After all, other similar organizations are thriving–drawing from precisely the same labor pool.
Sure, it’s easier to be a coach if Michael Jordan is on your team, but it turns out that creating the conditions for commitment, learning and resilience are the boss’s job, not the people you hired to follow along.
Vasudev Kamath: Experiment: Debian Cloud/VM Images using mkosi [Planet Debian]

Debian's Cloud Images for various public cloud platforms and VM environments are built using a tool called debian-cloud-images, an in-house utility developed and maintained by the Debian Cloud Team.
The debian-cloud-images tooling uses FAI (Fully Automatic Installation) to create custom VM images for public clouds like GCP, Azure, and AWS, along with the genericcloud class. I wanted to convert this into a fully declarative, mkosi-based image build where the entire image is described using INI-format configuration files, with only a few post-installation scripts to handle final customizations.
I've been working with various image customization formats for a long time. In my previous company, I used to build customized industrial PC distributions based purely on Debian using multistrap and a bunch of shell scripts to stitch together raw image creation, bootloader installation, etc. I've also done custom installs using debootstrap on my own laptop with systemd-boot as the bootloader, but that was mostly hand-crafted and not automated. Once I came across mkosi, I was impressed by how a single utility can do everything and churn out a fully usable image without extra glue scripts for partitioning and image creation. You still need a few scripts to finalize some parts of the installation (via postinst hooks), but those are very minimal.
So I decided: why not convert debian-cloud-images into mkosi's declarative format with a few architectural changes? My requirements were:
Btrfs as the root filesystem: Partly because I like it, but primarily for the ability to use transparent compression (zstd:1), subvolumes, and snapshots for atomic rollbacks when things go wrong.
systemd-boot and Unified Kernel Images (UKI): Primarily because systemd-boot is clean and minimal—exactly what a modern bootloader should be. Combining it with UKIs and UEFI Secure Boot is bliss compared to the complexity of the GRUB2 world.
Note: This intentionally drops legacy BIOS (MBR/CSM) partitioning support in favor of pure UEFI. Modern cloud platforms (AWS Nitro, Azure Gen2, GCP) support UEFI natively, and dropping BIOS allows shedding significant legacy bootloader baggage—though it does make these images unsuitable for older, non-UEFI hypervisors.
Of course, the initial heavy lifting was done mostly using Antigravity (agy), along with debugging, tuning, and cleanup from my side. I pointed agy to a local copy of debian-cloud-images and laid out my requirements: preserve parity with the original packages and configurations, while enabling selective builds for each cloud via modular profiles. The resulting specification is documented here.
The repository also includes a verification script that audits functional parity against official images produced by debian-cloud-images (verifying packages, APT deb822 sources, and systemd services, while accounting for the switch to Btrfs and systemd-boot). Initial verification was performed for all Trixie profiles, and the parity report is published here.
I've also booted the genericcloud profile image under UEFI in a local VM to verify live bootability, bootctl status, network connectivity, and APT repository setup. This completes Phase 1 of the implementation. The remaining phases outlined in the specification include:
Another advantage of this setup is that the same tooling can build images for physical laptops and bare-metal servers. For example, in an earlier post, I walked through live-booting with debootstrap and manually configuring systemd-boot for a custom UEFI installation. With mkosi, I can simply generate a customized image locally with UKIs ready to go, live-boot the target machine, and write the image directly to the root disk.
This experiment is an exploration of the power of mkosi; I haven't discussed adoption with the Debian Cloud Team yet. For now, this will continue as my pet project. While I won't be hosting pre-built binary images, anyone interested is welcome to clone the repository and build the images locally.
I will probably take some more time before tackling dm-verity images, as I want to understand the nuances thoroughly before experimenting with them. Until then, happy hacking! Please report any issues or suggestions on GitHub.
Keeping Up by Jamie Ramsden [Oh Joy Sex Toy]
Brun With The Assist [QC RSS v2]

she's helping
Same thing has been happening in tech for decades. Technology gets captured by a bigco, they kill all the inspiration, in order to lock it down it for ROI. There are developers inside these companies who believe in open systems, as lawyers believe in the rule of law, and if we support them from outside, we can probably change the behavior, make them aware of the cost when they destroy something of value they don't own, as they are doing with the web as it was defined by Netscape and Microsoft before. None of these companies were restrained, not by public opinion or court decisions. Now we may have the political power to be heard, and we know how to protect the web where we don't have a good idea of how to do it for AI yet. We can start with the web, and make sure they don't act like owners of the tech, redefining the web via a browser monopoly. In the antitrust case against Microsoft in the 1990's they were looking at the wrong pairing, they saw the problem between Windows and Office, when the real thing that needed to be separated from MS, as with Google, is the web browser.
What they don’t say about corruption, when you take a payoff you’re selling out the people.
If the Windows Update hot patcher checks that the function hasn’t already been patched, does that mean you can’t install two hot-patches? [The Old New Thing]
In my earlier discussion of how Windows Update uses the hot-patching space (and how nobody else should be using it), the question arose of what happens when Windows Update wants to hot-patch a binary that has already been hotpatched. Does this mean that you cannot apply hot patches two updates in a row?
Microsoft issues hot patches for two updates in a row. I linked to it in the original article, and here it is again: Hotpatch for Windows client now available.
Notice in the diagram that Windows supports two hot-patch cycles before forcing a traditional update.
| Hot-patch track |
Hot-patch update |
→ | Hot-patch update |
Hot-patch update |
→ | Hot-patch update |
|||||||
![]() |
![]() |
![]() |
![]() |
||||||||||
| Traditional track |
Traditional update |
→ | Traditional update |
→ | Traditional update |
→ | Traditional update |
→ | Traditional update |
→ | Traditional update |
→ | Traditional update |
| Jan baseline |
Feb | Mar | Apr baseline |
May | Jun | Jul baseline |
The first month of each quarter issues a traditional update. Administrators who opted into the hot-patch track can install two months of hot patches, while everybody else continues to get traditional updates. At the start of the next quarter, everybody gets a traditional update again, and the cycle continues.
Okay, so how can Windows Update apply a hot-patch on top of another hot-patch?
Why can’t you tickle yourself?
Your brain knows that you’re the one doing the tickling, so it suppresses the tickle response.
And Windows Update knows that it’s patching something that it already patched, so it knows what it did to apply the hot-patch, and therefore it knows what code was originally there before it performed the hot-patch. I think all it has to do to patch a patch is update the far jump target in the trampoline to point to the new hot-patch function.
I suspect that the limit of two stacked hot-patches avoids an unbounded accumulation of internal data structures that are used to keep track of all the hot-patches, and to ensure we don’t run out of patch space in the binary itself.
The post
If the Windows Update hot patcher checks that the function
hasn’t already been patched, does that mean you can’t
install two hot-patches? appeared first on The Old New
Thing.
that time we were tourists in los angeles on our anniversary [WIL WHEATON dot NET]
Saturday, Anne and I celebrated our 27th wedding anniversary by being tourists in our own city. We got a little fancy, and went to The Broad museum in Downtown. I love their permanent collection (one of these days, I’m eating a gummy to go giggle myself into oblivion at the giant table and chairs), but we were both super excited to see the Takashi Murakami exhibit they have out right now. They did not disappoint; getting inches away from some of these pieces was extraordinary. If you’re local, remember that the Broad is free.
From there, we took the Angel’s Flight (first time, ever, for either of us) down Bunker Hill to Olive, and walked to the library. Y’all, the Angel’s Flight is so great. It’s a short funicular ride in a tiny car that feels like it hasn’t changed since the day they started operations. It’s not even a minute, but is still kinda magical. I have driven past it hundreds of times a year, for decades, and never even thought about riding it. But it was right there, and we were deliberately being tourists, so we bought our tickets and hopped on. I’m so glad we did.
We walked a big loop down to Pershing Square, and up 5th Street to the library. The last time I went there, I was in high school, probably sophomore year. My studio teacher, Marion, took me there on a field trip, specifically to do research using the vast resources that the public library offered.
I did the whole thing, with the card catalog, the microfilm thing, old newspapers, all that stuff. It was so much fun, and so satisfying, and my old man brain has completely forgotten whatever it was I learned about that day. All I remember is how exciting and overwhelming it was to have access to so much information, so many primary sources. Oh, buddy, just you wait for Wikipedia. You have no idea.
The library wasn’t that busy, but I was so happy to see the media labs and creative areas just full of people. Some kids stopped me for a picture. I asked them what brought them to the library, and they told me they were there to make posters and materials to promote their poetry shows in the valley. How fucking awesome is that? God, I love artists so much! And I love that our public libraries offer materials and facilities to support artists at no cost.
We spent a lot of time in the library. There are a lot of great exhibits up right now, including a giant pop-up book that actually works, even though it’s about the size of two billboards. There are many exhibits celebrating the library’s 100th anniversary, and they’re all written in English and Spanish. I’ve been learning Spanish with Babbel for awhile, and I’m starting to get to a place in my education where I can read the Spanish, understand most of it, and infer the parts I don’t know from the context that I do. This is the first foreign language I’ve ever learned, so I don’t know what milestone that is, but it felt so satisfying to experience.
From the library, we went into the Biltmore, which has historic significance in our family, to get out of the heat and have a Coke. We sat in this little bar together, quietly away from anyone else, and just sipped our sodas.
I said, “I love that we are being tourists in our own city, on our anniversary, because this is exactly what we’d be doing if we went away.”
“I love this too,” Anne said.
“And I know I say it all the time, but goddamn do I love being married to you. I just love Us so much. I love being part of Us.”
“Yeah, I love it too,” she said. She sipped her Coke and I did the same. “Happy anniversary.”
We clinked our glasses.
“Twenty-seven years. Still punk as fuck.”
“Still punk as fuck.”
We giggled like the dorks we are, settled up our tab, and headed back into the surprisingly suffocating November heat. We rode the Angel’s Flight back up the hill (I got to help a lady with her stroller, which I only mention because I rarely get an opportunity to help a lady with her stroller, and I love it when I get to be a helper), then we went to dinner.
It was, like everything else we did that day, just wonderful.
I’m so lucky, and so grateful to be married to my best friend, my partner in crime, my ride or die, for 27 years. What’s wild is, we both feel like we’re just getting started.
Hi, I’m Wil. I narrate audiobooks and host It’s Storytime With Wil Wheaton. Sometimes I’m an actor on TV. Sometimes I write this blog. I’m on Instagram and Threads @itswilwheaton. My Tumblr is wilwheaton.tumblr.com. My bologna has a first name, it’s S-U-B-S-C-R-I-B-E if you want to get these posts in your e-mail. Here’s the thingy:
please don’t fuck this up. [WIL WHEATON dot NET]
After one of the worst weeks of my life, I woke up yesterday morning in a world I genuinely believed was gone. I woke up to discover that gravity is, in fact, real. I woke up to a country that didn’t fuck up the open book test again, and for the first time in a decade, I think that maybe I see a warm and comforting glow behind a distant horizon. There’s still a whole lot of darkness to cross before we get there, but at least I can see it.
Which is why I want new leadership in Congress, if the speeches the current leadership has given are any indication of how they intend to use the majority we just gave them. With all due respect to Hakeem Jefferies, I’m going to quote Ashley The Baroness on Instagram, explaining why she believes we need a different Speaker: “What was all that fighting for, if when you get into that room, your courage ends?”
And as Amanda Nelson has so eloquently laid out, Chuck Schumer has shown us how he leads, and his leadership is wildly out of step with the base of the party, the mainstream of the party, and (as it turns out this week) the majority of voters in America. We’ve been fed up with his sternly-worded letters and his threats that whatever unconstitutional depravity coming out of the white house will sure make them look bad, and nothing else, for a decade, at least. America does not need, and can not survive, Democratic leaders who don’t have the stomach for the bare-knuckled brawling it will take to deliver consequences to Trump, his cabinet, his family, and the criminal Republicans who have enabled and protected them.
It was very telling that in his first speech after the GOP’s extinction-level event, Jefferies framed our need for accountability as a desire for revenge. He just doesn’t get it, if he truly believes that. He isn’t stupid, and he knows that if we do not hold all of them to account — which includes prison time — all those new Democratic voters who clearly said FUCK THEM UP SO THEY NEVER TRY THIS AGAIN will never come back, and we will be right back where we were last week.
It is astonishingly tone deaf, and not just a little insulting, to suggest that our demand and very real need for accountability and consequences is simply wanting to get even, to exact a petty revenge. I doubt he believes that, and is speaking in dogwhistles to the corporate donors and AIPAC, which would make his position even more craven than it already is.
Schumer is already surrendering in advance, probably locked in a room with The Baileys while he tries to figure out
Think of it like this: voters gave Democrats a loaded canon and said “aim this at the heart of Republican corruption”. We even set it up for them, so all they have to do is light the fuse. And Jefferies and Schumer swung the barrel around and aimed it at their feet.
Yeah. No. We aren’t going to stand for this. We gave you a mandate. Voters who have never and will never vote for a Democrat again gave you a mandate. The mandate is clear: HOLD. THEM. ACCOUNTABLE. FOR. THEIR. CRIMES.
In other words:

There is still time to get these guys on record and force them to commit to the most intense oversight in history. Call your reps and your senators, congratulate them on their historic wave election, and tell them that we expect them to use their majorities to punish these criminals so severely, nobody will even think about trying this again for at least a generation.
Hi, I’m Wil. I write this blog (duh), I host It’s Storytime With Wil Wheaton, which drops new episodes every Wednesday wherever you get your podcasts, and in our Patreon. Occasionally I show up on your TV. You can follow me on Instagram and Threads where I am @itswilwheaton. You can get your own adorable Wil Wheaton Bedhead plushie for another 17 or so days, and if you want my posts delivered to your inbox, here is the thingy:
Melting Ron DeSantis statue [Richard Stallman's Political Notes]
*Melting Ron DeSantis statue unveiled to call out his inaction on climate crisis.*
It's a cute hack.
FBI agents fired by corrupter [Richard Stallman's Political Notes]
FBI agents fired by the corrupter for clinging to enforcing laws, rather than political revenge, are organizing to warn the public.
Very profitable US companies that paid no income tax [Richard Stallman's Political Notes]
88 very profitable US companies paid no US income tax in 2025. Their combined lobbying and election spending in 2020, 2022 and 2024 added up to 850 million dollars.
That was because of 26 billion dollars in tax breaks, which presumably relate to the lobbying they did.
No Kings Coalition accounts censored [Richard Stallman's Political Notes]
The No Kings Coalition accused Zuckerberg and Instagram of censoring them by blocking their account during the resent protests.
US deportation prisons deny medical treatment [Richard Stallman's Political Notes]
US deportation prisons deny their prisoners medical treatment and medicines, making them gravely ill. The US then rushes to deport them to garbage dump countries, which will accept any deportees in exchange for money from the US, then does them the worst harm it can come up with.
The US is effectively murdering these deportees, but setting it up so that they are hidden away in the garbage dump when they actually die.
Israeli soldiers arrested Brad Lander and other volunteers [Richard Stallman's Political Notes]
Candidate for Congress Brad Lander joined a group of 80 volunteers who went to the West Bank to help farmers harvest the olives on their olive trees. Israeli soldiers arrested them, saying they had declare that farm a "closed military zone". That seems to be Hebrew for "Justifications are not required here."
El Salvador arrests people to fill a quota for prisoners [Richard Stallman's Political Notes]
El Salvador arrests people to fill a quota for prisoners, and holds them incommunicado for years if judges order them freed.
Naturally, Tyrant Bukele has won the admiration of right-wing extremists around the world.
Risks of geoengineering megaprojects [Richard Stallman's Political Notes]
One risk of geoengineering megaprojects that is often overlooked is that it has to be continuously operated and continually maintained, and its infrastructure is vulnerable to catastrophes such as war.
If it is damaged, the suppressed global heating will come back.
Over-reliance on chatbots [Richard Stallman's Political Notes]
*Over-reliance on chatbots can diminish critical-thinking skills, study finds.*
US system of sales and support [Richard Stallman's Political Notes]
Many Americans think the US system of sales and support has become a nightmare.
I am in one such nightmare now. I need some felt heel lifts to put in various pairs of shoes because of Achilles tendinitis, and I can't find any place I can get them, except for Amazon which is out of the question. At least I can reach a human for customer service for my prescriptions by walking to the pharmacy.
If you reject, as I do, all devices that demand to communicate with you across the network using a server that isn't yours, you will be safe from the "demand for an app". These "apps" are freedom-trampling, and so are the operating systems they run on, so I reject them all in a blanket fashion.
Global heating danger to shallow-water coral reefs [Richard Stallman's Political Notes]
Global heating is predicted to endanger 96% of shallow-water coral reefs by 2075. This is could cause extinction of 1/4 of the species in the sea and eliminate the food for hundreds of millions of people.
Scientists have been telling us for decades to expect this eventually, but now we are close enough to make a more reliable prediction.
It is not too late to prevent this disaster, but we need to overcome the political power of the fossil fuel companies to do it.
Treaty to govern autonomous weapons [Richard Stallman's Political Notes]
U.S. and Russia worked together to modify a proposed global treaty to govern autonomous weapons, eliminating the requirement that attacks be approved by human overseers.
Such a requirement would not have been a guarantee against atrocities; humans have committed and ordered plenty of those and continue to do so. Russia commits them regularly in Ukraine, while America's ally Israel commits them regularly in Gaza, the West Bank and Lebanon.
However, there are also soldiers, and armies, that take the rules of war seriously and prosecute soldiers who break them. The erased requirement would have had a real effect, there.
The persecutor and Putin are drifting into an alliance, and I expect they will both use every available weapon to reduce people to helpless obedience.
US workers facing deadly heat [Richard Stallman's Political Notes]
*US workers facing deadly heat borrow from tomato pickers to win key protections.*
Internet worm that infects "smart" devices [Richard Stallman's Political Notes]
The latest feat of Alleged Intelligence is an internet worm that infects "smart" devices.
"Smart" is marketing speak for products designed to be remote controlled, primarily by the manufacturer but secondarily by the purchaser and the purchaser's friends and associates, all of whom will be snooped on. They are the ideal prey for conversion into a botnet. Then someone other than the manufacturer can exercise the power over those people that the manufacturer was supposed to exercise.
I refuse to have any such devices in my apartment, because I consider snooping by their manufacturer just as bad as snooping by anyone else.
Passenger tied to seat reportedly hit people [Richard Stallman's Political Notes]
Arthur Lundeen was tied to a seat on an flight, reportedly simply for his nasty words. But here is a report that he did more than insult people; he also hit them. That would have justified tying him up.
Here is the previous report.
Christian nationalist's challenge to Abdulrahman El-Sayed [Richard Stallman's Political Notes]
A Christian nationalist provocateur tried to trap Michigan Senate candidate Abdulrahman El-Sayed by challenging him to "disavow" the Muslim Brotherhood, which is unfair in the same way as asking a man to "disavow" beating his wife.
El-Sayed responded by rejecting the Muslim Brotherhood, then championing the US Constitution and freedom of religion, and challenging the provocateur to do likewise. And praising President Kennedy's example of doing that.
Bravo!
Face recognition cameras on London lamp-posts [Richard Stallman's Political Notes]
The London thug department is setting up face recognition cameras on lamp-posts. It says the cameras will compare people's faces with a list of people wanted for arrest, and keep no records of anyone else.
Supposing it carries out that stated intention, should it be reassuring? Not entirely, because the UK has already criminalized political positions, such as stating support for Palestine Action. In other words, the line between stating a political stance and being a "wanted suspect" to be caught by face recognition in the street has been smudged in advance.
It was years ago that UK thugs began using license plate tracking to find protesters driving to a protest, and stop them from reaching it.
[pol note about protesters stopped while driving to a protest and held for hours so they could not go. ISTR the horrible act they planned was a banner drop. It pointed to a Guardian article. I think this note was more than 13 years ago]
Spending half a billion dollars on surveillance [Richard Stallman's Political Notes]
The Department of Harshness and Surveillance is spending half a billion dollars this year on surveillance, including surveillance technology (both buying things and developing things).
Repression of political opposition is explicitly one of the goals.
Thug charged for tracking wife with Flock cameras [Richard Stallman's Political Notes]
A thug has been arrested and charged for using Flock cameras to track his wife and her "previous acquaintance". It was clear he did this dishonestly, but his lawyer says that is not a crime.
Surveillance cameras such as Flock (and other companies) make are dangerous to society. They can be misused by individuals, such as that thug, but the worst danger is misuse by government agencies for repression.
I agree that we should make it a crime for individuals to make unauthorized use of these systems to track or menace individuals. But above all we need to make it hard for government agencies to authorize use of these systems without proper grounds. Any use of them should require a warrant signed by a judge.
Even that is too easy. Access to these cameras needs to be somewhat inconvenient, or else they will be used too often. That is why I suggest that they must not have remote digital access. It should be necessary to visit each camera, having received a warrant to do so, to see whether certain specified suspects have been seen by it in a certain period of time.
Flooding in US Southwest [Richard Stallman's Political Notes]
Months of heavy rains in the generally arid four corners area of the US Southwest have led to flooding, with some people taking refuge on the tops of their houses.
Netanyahu has ordered reprisals against Palestinians [Richard Stallman's Political Notes]
Netanyahu has ordered reprisals against Palestinians who live near the place where two Palestinians attacked Israel soldiers, including demolishing homes.
The practice of violent reprisals against people who live near where an act of violent resistance occurred was often used by Nazis in occupied countries such as France and Czechoslovakia.
Humiliating arrests of non-citizens in California [Richard Stallman's Political Notes]
The corrupter's men are dramatically staging humiliating arrests of non-citizens in California, accusing them of voting or at least registering to vote. It is not clear that the accusations against these people are true, but we can see they are mainly theater, designed to give the public the false idea that non-citizens often vote.
Some of them may have "registered to vote" without knowing it, because California registers people automatically if they don't explicitly say "don't".
Putin forces attacking ships transporting grain [Richard Stallman's Political Notes]
The Putin forces are attacking ships transporting grain from Ukraine through the Black Sea.
The job of space traffic control [Richard Stallman's Political Notes]
The magats seem to be trying to hand the job of space traffic control, which obviously should be a public function, to the megacorporation of the muskrat.
Staff of all the ethnic and racial groups in police department [Richard Stallman's Political Notes]
The head of the London police department insists that it needs to have staff of all the ethnic and racial groups in London, simply to be effective in its mission.
It is an interesting position and could be valid.
I will never grant that "XYZ of color" has any place in the grammar of English — "color" is not something one can be "of". But this purely linguistic matter is only a tangent to the political issue here.
The Genesis Device [Penny Arcade]
Zulu's is a real place you can go, technically place(s). Gorb got roped into a Star Trek event by his scions, presumably so he could handle the tab. Magic might be the one thing these boys agree on; one of the key bifurcations between them is that while they both go in for Stars, one prefers Wars while the other prefers Treks. Attempting to shape this conflict has been met with varying degrees of success, provided failure is part of that continuum - near the bottom, I would assume.
We’re Asking an Appeals Court to Require a Warrant for ALPR Searches [Deeplinks]
Today, along with the ACLU, EFF filed an amicus brief in the Sixth Circuit court of appeals in United States v. Sturdivant, a case where police warrantlessly tracked a suspect’s movements using Automated License Plate Reader (ALPR) data. Our brief details the vast, interconnected network of ALPRs that constantly track drivers around the country and argues that this tracking is a “search” under the meaning of the Fourth Amendment.
Sturdivant involves a series of robberies in and around Cleveland, Ohio. Using surveillance camera footage, police identified the make, model, and color of the robber’s car, but they did not know its license plate number. After running an open-ended search of two ALPR databases, Flock and ELSAG, officers learned a car belonging to the defendant had been tracked near sites of the robberies, eventually leading to his arrest. Faced with a motion to suppress the ALPR evidence, the district court held that Mr. Sturdivant had no reasonable expectation of privacy in his license plate number because it could be observed by members of the public, and that therefore he had no Fourth Amendment interest in not having his car tracked in public places.
But ALPRs are simply not comparable to observing an individual license plate on a passing car. As we’ve explained in many amicus briefs and in our lawsuits directly challenging ALPR use in San Jose, California and Wisconsin, ALPRs give law enforcement “a virtual time machine to view suspects’, or anyone else’s, past movements (and much more) with just the click of a button.” Just last month, a federal district court agreed and held that ALPRs are a “form of indiscriminate mass surveillance” that can violate the Fourth Amendment.
We hope the Sixth Circuit will reverse the lower court in this case and hold that ALPR searches require a warrant.
Brunching It Up At Cordelia [Whatever]
My favorite meal that one can have is undoubtedly
brunch. There’s breakfasty dishes, sweet pastries,
savory meals, green juice and espresso martinis, it’s really
a wild ride with many paths to choose.
The first morning after Lily flew in to Cleveland, our brunch path began at Cordelia. Named in honor of the owner’s great-grandmother, Cordelia’s resides on East 4th, which is closed off to traffic so pedestrians can stroll their way through a scenic cluster of restaurants and bars.

(There was some construction going on as you can tell by the chain link fence, but fear not, for Cordelia’s sign will point you in the right direction.)
With a James Beard finalist chef, Cordelia focuses on seasonally curated dishes in partnership with local farmers, really honing in on a “harvest’s bounty” vibe. They refer to their menu as “modern grandma,” which I actually love.
I had made us reservations for 12:30, so getting a table was no problem, though they definitely were pretty packed since it was Sunday morning. The space was very open and inviting, with high ceilings, tons of eclectic framed photos covering one wall, original terrazzo flooring, and a long, beautiful bar with striking blue bar stools that match their blue velvet booths.
We walked to Cordelia since it was literally right across the street and that area is meant for pedestrians anyways, but I did learn that they have a $14 validate valet parking option which is nice.
The hostess and waitress were both extremely friendly and chatted with us beyond the usual pleasantries, which was very cool and made for a really genuine interaction.
Before taking a look at the food, we had to start off with some bevvies. Lily went with their Bloody Mary, and I opted for an espresso martini:

The lime is blocking it, but there’s a toothpick of giardiniera-style vegetables and an olive on top of the Bloody Mary. Plus, of course, three beans on my espresso martini. Any espresso martini enjoyer knows you have to have those three beans. Lily’s drink was definitely a bit spicy for me, and also quite strong! Talk about a wake-up call. My drink was one of the best espresso martinis I’ve ever had, and I usually don’t get two in a row but I ordered a second one. It was very balanced, not too sweet or bitter at all. Good foam. A+ on the drinks round.
Here’s their Sunday Brunch menu:

So much of this menu is vegetarian, and there’s a couple gluten-free options, too!
Though everything sounded seriously delish, Lily and I knew we had to have some oysters, so we got two for $9 and got them “new school” style, which meant it came with a mignonette.

These oysters were incredibly fresh and the mignonette was packed with flavor. These were great starters to whet our appetite.
Next, we had these jammy eggs with ajvar and furikake. I didn’t know what ajvar was, but apparently it’s like a condiment or spread made from peppers and vegetables.

As you can see, they loaded these bad boys up with the ajvar, and the addition of fresh dill was a pleasant surprise, as it’s one of my favorite herbs. The eggs were so perfectly jammy, and the ajvar had some heat but not too much. Needless to say we tore this dish up.
We also ordered the carrot muhammara with hazelnut dukkah. Once again, I found myself not knowing what these words meant, but thankfully our server was very patient with our many questions. Muhammara is basically just hummus but with red peppers and I guess in this case, carrots! As for the dukkah, it’s like a seasoning mix made with nuts and spices. I felt like I was learning so much!

Okay so picture something really bland. Now imagine the complete opposite of that, and you’ll have this. Flavorful is an understatement. This dish was like a rich, umami bomb, and had the most amazing texture when spread over the sourdough slices. This was such a good choice.
We also opted to share the “Sunday On A Shingle,” which was sausage focaccia with sunny-side up eggs on top:

After two drinks each and sharing two appetizers, we found ourselves so stuffed we literally couldn’t even eat this entree. I figured, no problem, we can just have it later on since we have a mini fridge in the room. That is, until, I left the box in my car all day. So, Lily and I did not even have a single bite of this dang entree, and I’m all the sadder for it, because look how good those sunny eggs look! Perfection, wasted. And $18 wasted but not tasting it is even more of a tragedy.
Even though we only tried oysters, jammy eggs, carrot muhammara, and two cocktails, Cordelia was such a pleasant experience that I want to go back ASAP! It’s original, it’s fresh, it’s intentional, it’s cool. I really like it.
Cordelia is also cool because they are all about community, and have a page on their site dedicated to recommending other restaurants and bars, things to do, and even lists all their culinary partners. Quite thorough, honestly.
Plus, they have a mission to make the hospitality industry better, and they show it by making sure their entire team has plenty of benefits like healthcare (including mental health), 401k with a 4% employer match, PTO with bereavement and paid sick time, discounted spa services (found this one very interesting), and more. They also contribute to over a dozen charities.
Good food, good people, and a good mission. Check them out if you can, even if it’s just for one drink I’m sure you won’t be disappointed. And if you feel so inclined, follow them on Instagram!
Which dish on the menu sounds best to you? What toppings do you like in your Bloody Mary? Have you been to East 4th and explored before? Let me know in the comments, and have a great day!
-AMS
Vincent Bernat: Performance evolution of route lookup on Linux [Planet Debian]
In previous articles, I explained how the Linux kernel implements IPv4 and IPv6 routing tables, and I showed the performance improvement of route lookups from Linux 2.6.32 to 4.16 for IPv4—including the impact of the Meltdown and Spectre mitigations—as well as from Linux 2.6.39 to 4.18 for IPv6. This article updates the numbers through Linux 7.3 and investigates the perpetrator responsible for the performance regressions! 🕵️♂️
I ran the following benchmarks on an AMD EPYC 8024P, a Zen 4c CPU, rented from Scaleway, running at 2.4 GHz with CPU boost disabled. I compiled the kernels with GCC 10.2: this version can compile older kernels as well as the current ones.
I tested four scenarios:
In Linux 4.15, Wei Wang improved the lookup performance by replacing the read-write lock with an RCU and a spinlock in commit 66f5d6ce53e6. In Linux 4.18, David Ahern improved the data structures used by route lookup. In Linux 5.9, Brian Vazquez removed expensive indirect calls in commit 55cced4f813b.
The major 200 ns regression introduced in Linux
6.5 wiped out all these improvements. This version
implements a mitigation for "Speculative Return Stack
Overflow," a vulnerability affecting AMD processors, in
commit
fb3bd914b3ec. This mitigation adds about 20 cycles on each
function return. It was backported to older kernels (5.10, 5.15,
6.1, and 6.4). To keep the results legible, I disabled the
mitigation for these versions with
spec_rstack_overflow=off on the kernel
command-line.
You can check the vulnerabilities impacting your CPU and their
mitigations with lscpu. Some mitigations may depend on
the microcode or on the firmware.1
$ lscpu | grep '^Vuln'
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Mitigation; Safe RET
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsa: Vulnerable: Clear CPU buffers attempted, no microcode
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Mitigation; IBPB before exit to userspace
I tested three scenarios:
The 30 ns impact of the mitigation for SRSO in Linux 6.5 is smaller than for IPv6 because IPv4 route lookups traverse fewer functions: around 4 function calls for IPv4 compared to 25 for IPv6.
In Linux 5.11, I introduced a regression in
commit
c0c5a60f0f13 after fixing the behavior of
net.ipv4.conf.all.ignore_routes_with_linkdown!2 As a result, the
ip_ignore_linkdown()
function spends around 5 additional cycles to return a result as it
needs to follow three additional pointers. fib_lookup()
eventually calls it in the following code:
if (ip_ignore_linkdown(nhc->nhc_dev) &&
nhc->nhc_flags & RTNH_F_LINKDOWN &&
!(fib_flags & FIB_LOOKUP_IGNORE_LINKSTATE))
return false;
If we reorder the conditions, we avoid calling
ip_ignore_linkdown() for the most common case where
the link isn't down:
if (nhc->nhc_flags & RTNH_F_LINKDOWN &&
!(fib_flags & FIB_LOOKUP_IGNORE_LINKSTATE) &&
ip_ignore_linkdown(nhc->nhc_dev))
return false;
Here's the distribution of lookup times before applying the patch on top of net-next:3
min=128 max=4657 count=994104 95th=134 90th=133 50th=132 mad=0
value │ ┊ count
128 │ 120
129 │ 2232
130 │▒ 25224
131 │▒▒▒▒▒▒▒▒▒▒▒▒▒░ 264264
132 │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░ 516480
133 │▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 126864
134 │▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 21624
The lighter shade depicts the cumulative distribution function. After applying the patch, the median improved from 132 to 126 cycles:4
min=124 max=208839 count=994104 95th=128 90th=127 50th=126 mad=0
value │ ┊ count
124 │ 576
125 │▒▒ 49440
126 │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░ 584904
127 │▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 284592
128 │▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 45288
To reduce the impact of mitigations, you can disable all of them
with mitigations=off, disable only a specific one like
with spec_rstack_overflow=off, or protect against only
some attack vectors with
mitigations=auto,no_user_kernel, starting from Linux
6.17.
The impact is also quite different depending on the CPU. For example, on a Xeon W-2295, an Intel desktop CPU from 2020, the impact of the mitigations is only a few cycles for IPv4, and less than 3% for IPv6. The main contributor is the mitigation for the Indirect Target Selection vulnerability, which is fixed since the Sapphire Rapids architecture.
If we set aside the regressions introduced by the mitigations against CPU attacks, the performance of IPv4 is declining slowly over time while IPv6 has improved in the past and is currently stable. If routing performance is important, you have several options: choose a different CPU like an AMD Zen 5 CPU, a fourth generation Xeon CPU, or maybe an ARM Neoverse V2; disable some or all the mitigations; bypass routing with XDP/eBPF;5 or offload routing to the network card.
Note
Maytham Alsudany reviewed a first draft of this article. Any errors are still mine!
The microcode was out of date on my machine as I forgot to
install the amd64-microcode package. As it only
impacts TSA, our benchmark is
unaffected. Spectre v2 mitigation did not enable automatic IBRS, because
of
SEV-SNP
being enabled in the firmware. With automatic IBRS, the impact of
SRSO should
be smaller. ↩
Despite ipvX in its title, the commit only changes
the behavior of the IPv4 code. The IPv6 version overwrites the
value of each device in addrconf_fixup_linkdown(). ↩
Linux 7.5 will be the first stable release including this fix. ↩
At 2.4 GHz, one cycle is about 0.42 ns. ↩
This requires avoiding bpf_fib_lookup(),
which relies on the same kernel lookup. ↩
Why Fewer People Are Challenging Bad Patents [Deeplinks]
The number of petitions being filed at the Patent Trial and Appeal Board (PTAB) has collapsed. That’s not reason for celebration. The PTAB is an important line of defense against low-quality software patents being used in lawsuits against people and companies.
The drop didn’t happen because suddenly patents have become higher quality. It’s simply because USPTO leadership is increasingly refusing to consider good challenges to patents, for reasons unrelated to the merits. The process has become so unreliable that many would-be patent challengers aren’t even trying.
Inter partes review (IPR) is a process that allows people to challenge patents at the Patent Office, rather than having to fight an expensive lawsuit in federal court. It’s one of the most important ways to get bad patents out of the system.
In the third quarter of 2026, July through September, only 97 IPR petitions were filed at the PTAB, compared to 327 petitions during the same period in 2025. Similarly, only 37 IPR petitions were filed in September 2026, compared to 129 petitions in December 2024—the last full month before the current USPTO leadership began reshaping how the Board handles patent challenges.
This dramatic decline shouldn’t just concern patent lawyers. EFF has fought bad patents because so many software and internet patents make claims to the basic tools of free expression online, like sending email, using online ads, or publishing web pages. When bad patents go unchallenged, they affect everyone who cares about the freedom to write new code and make new technology.
That’s why EFF has defended IPR since it came on the scene more than a decade ago. It provides a faster and less expensive way to challenge patents that should never have been granted. Congress created IPRs because the Patent Office makes mistakes. District court litigation is an extraordinarily expensive way to correct them. Without a meaningful administrative review process, bad patents remain powerful weapons in the hands of patent trolls and others seeking to extract settlements from companies that often did nothing wrong.
Now, USPTO leadership is dismantling that safeguard.
Since Congress created the IPR patent challenge process in 2012, the PTAB has always had some discretion in deciding which petitions deserve review. But institution rates today are much lower than their typical historical range.
Between fiscal years 2022 and 2024, the PTAB instituted between 66% and 68% of IPR petitions. In fiscal year 2026, which concluded in September 2026, the institution rate fell to 41%. And institution is only the first step of an IPR—it means the PTAB has agreed to hear the challenge, not that the challenger won, and the patent will be invalidated.
That decline helps explain why fewer petitions are being filed in the first place. Preparing an IPR petition takes substantial time and money. While cheaper than federal court, it’s still a complicated administrative process. Before filing, a challenger typically needs to search for prior art, hire experts, and develop detailed technical and legal arguments about why the patent never should have been granted.
Companies were willing to pay for IPRs because, historically, they could expect a predictable process. Petitions that met the statutory standard generally had a reasonable prospect of being heard and decided on the merits. But the USPTO has made it harder to get petitions heard and is throwing them out for reasons that have nothing to do with the merits of the challenges. Faced with these odds, many potential challengers aren’t filing at all.
When the PTAB decides to hear an IPR case, that means the petition has been “instituted”—but that has never meant that the petitioner will definitely win. It means the PTAB has determined the challenge warrants a full merits review, and the parties could expect the proceeding to continue toward a final written decision. But under the current USPTO leadership, that expectation has disappeared. The PTAB’s institution decisions are being repeatedly vacated by the Director.
USPTO Director John Squires has vacated at least 29 decisions granting institution of IPR proceedings, and subsequently denied the petitions, terminating those proceedings before a final written decision. These include cases that PTAB judges had already agreed to hear, as well as proceedings that Squires himself had previously allowed to proceed. This level of retroactive intervention is unprecedented.
In some cases, the parties had already invested substantial time and money litigating before the PTAB, only to have the proceeding terminated based on new reasoning by the Director’s office that arose after institution.
For example, in Revvo Technologies v. Cerebrum Sensor Technologies, the Director vacated an institution decision and remanded the case to the Board. The Board then instituted review again, but the Director reversed that decision. Using a new approach, the Director said that the petition had inconsistencies between claim construction positions taken before the PTAB and in district court. Since then, that decision has been cited as a basis for terminating several other instituted proceedings.
The result is another layer of uncertainty for people who want to challenge bad patents. Getting through the front door of an institution decision is much harder than it used to be—and now, even getting through that door doesn’t mean the PTAB will decide your challenge. Predictability is one of the things that made IPRs work.
Congress created IPRs in part because challenging a questionable patent in federal court is enormously expensive and risky. Patent examiners work under serious time constraints, and some patents that shouldn’t have been granted will inevitably issue. Not every patent dispute requires years of expensive district court litigation. Congress recognized that, and created an administrative process, staffed with experts more capable of correcting those mistakes.
That system has benefited the public. Since 2012, it has helped invalidate thousands of patent claims that never should have been issued. The IPR process has protected startups, software developers, nonprofits, and small businesses that otherwise would have faced crushing litigation costs simply for building products or offering services that use everyday internet technology.
EFF supports a balanced IPR system because it should be easier to fight against bogus patents that should never have been issued. The cost of fighting a patent can be a weapon in itself, and weak patents don't just burden large technology companies. Patent trolls routinely target small businesses and independent developers, and have gone after podcasters, retailers, and even coffee shops and nonprofits. These organizations have neither the resources nor the desire to spend years litigating over potentially invalid patents in federal court. IPR offers a chance to challenge those patents before litigation costs get out of control.
If we weaken the IPR system, bad patents become much harder and more expensive to challenge.
Some defenders of the current approach argue that lower institution rates reflect more balance in the patent system. But institution rates at the PTAB have plummeted from 68% to 41% in just two years—a nearly 40% decline. IPR petition filings have reached historic lows. And even proceedings that have already been instituted can now be terminated months later, without a decision on the merits.
These developments send a troubling message to members of the public who might want to use the PTAB: don't bother. The PTAB doesn’t need to institute every petition. But it does need to provide a process that is transparent, predictable, and fair. Right now, confidence in the system is disappearing.
If companies, individuals, and nonprofits conclude that IPRs aren’t worth pursuing, the consequences won't stop at the PTAB. More weak patents that never should have been granted will survive, and patent trolls will use them. That means more defendants facing expensive district court litigation or paying settlements driven by the cost of litigation.
That's not what Congress intended when it created IPRs. It should not become the PTAB's “new normal.”
View From a Hotel Window 11/9/26: Louisville, KY [Whatever]


I’m about three hours from home here. Alas, not enough time to head home, kiss Krissy, and come back here in time for my event. And the event has to take precedence, I guess.
But in truth I am looking forward to tonight’s event at Carmichael’s Bookshop, at 7pm. You should come see me if you’re in the area.
Tomorrow: Kansas City! At the Mid-Continent Public Library! Also 7pm! You have more than a whole day to register! Do it!
— JS
U.S. Supreme Court Deals Final Blow to Corporate Human Rights Accountability [Deeplinks]
For the past two decades, the U.S. Supreme Court has been slowly weakening the Alien Tort Statute (ATS), a key human rights law that allows foreign nationals to sue persons or entities in civil court for harms resulting from violations of international law. The court’s recent ruling in Cisco Systems, Inc. v. Doe I dealt the law a final blow, foreclosing—absent new legislation by Congress—any future ability by plaintiffs to use the law to hold technology companies accountable for aiding and abetting human rights abuses. EFF filed multiple amicus briefs in the case, including most recently in the Supreme Court.
The ATS was passed by the very first Congress in 1789 and in just a few words gives U.S. federal courts jurisdiction to hear civil claims brought by foreign nationals against defendants who violated “the law of nations or a treaty of the United States." There has been a longstanding question about what counts as a valid civil claim under “the law of nations.”
In Sosa v. Alvarez-Machain (2004), the Supreme Court had noted three historical international law claims that the First Congress likely had in mind: violation of safe conducts, infringement of the rights of ambassadors, and piracy, collectively known as the Blackstone Three.
The Sosa court also held that federal courts may recognize other substantive causes of action under the ATS if they reflect international norms that are “specific, universal, and obligatory,” stating that this “door is still ajar subject to vigilant doorkeeping, and thus open to a narrow class of international norms today.”
Thus, the Sosa court recognized that the ATS could be used to bring claims related to historical violations of international law as well as select newer claims reflecting modern concepts of human rights.
In Cisco, the Supreme Court overruled the second Sosa holding. The majority held that the current case, a technology company aiding and abetting torture and other human rights abuses, was beyond the scope of the original three ATS claims and it was not for the court to create new ways of enforcing international law. The court said:
[W]e close the door that Sosa cracked to judicially created ATS liability. We do not disturb Sosa’s holding that the ATS is a jurisdictional statute; nor do we revisit its assumption that causes of action are available for torts corresponding to the Blackstone three. We conclude only that Sosa was overly optimistic in its prediction that there might be a narrow class of cases in which courts may create ATS actions without infringing on the prerogatives of the political branches. In truth, this class is a null set.
What result for this case? Cisco argues that the Ninth Circuit erred in holding that aiding-and-abetting liability exists under the ATS for the torts alleged by the plaintiffs. Cisco is correct. Courts cannot create new rights of action to remedy violations of international law, so there is necessarily no liability for aiding and abetting such violations. Plaintiffs’ ATS claims against Cisco must be dismissed.
The Supreme Court’s ending of the plaintiffs’ case against Cisco is hugely disappointing given that the case has been going on since 2011 and the Ninth Circuit in 2023 allowed the case to move forward in an excellent and well-reasoned opinion. The Ninth Circuit held, in part:
We conclude that Plaintiffs’ allegations, accepted as true, are sufficient to state a plausible claim that Cisco provided essential technical assistance to the douzheng [violent struggle] of Falun Gong with awareness that the international law violations of torture, arbitrary detention, disappearance, and extrajudicial killing were substantially likely to take place.
The plaintiffs sued Cisco for the company’s role in building and deploying the “Golden Shield,” also referred to as “The Great Firewall of China”—a vast surveillance system that Cisco began building in the late 1990s and that the company customized to enable the Chinese government to target disfavored minorities, including members of the Falun Gong religion.
The thirteen plaintiffs—Falun Gong practitioners—alleged arrest, detention, and torture, including of themselves and family members, at least one of whom died by beating while being detained. The allegations were horrific: the plaintiffs were placed in forced labor camps, beaten with steel rods, shocked with electric batons, and endured sleep deprivation and violent force-feeding.
Importantly, the plaintiffs also alleged that their private emails, text messages, and other information—intercepted by the Golden Shield—were shared with the torture sites, and shown to them and used as part of their torture and forced conversion sessions, which included threats to their family members and others who had communicated with them.
And now, Cisco is off the hook for all of this.
As we argued in our amicus brief to the Supreme Court, a robust federal statute is necessary given that voluntary and informal mechanisms of corporate human rights accountability are inadequate.
The plaintiffs filed their lawsuit in 2011. The following year, in 2012, Cisco first published its Global Human Rights Policy. Since then, the company has never provided redress to the plaintiffs, despite its currently operative human rights policy stating:
Where we have identified that we have caused or contributed to an adverse human rights impact, we are committed to providing access to and cooperating in remediation for affected individuals, workers, and communities through legitimate processes.
What’s more, the Associated Press conducted an extensive 2025 investigation, which recently won the Pulitzer Prize, further mapping Cisco’s and other American tech companies’ involvement in creating China’s surveillance state over the past three decades. When questioned by the AP reporters, the companies dismissed any notion of human rights obligations and simply “said they adhere to relevant export controls, laws and regulations where they operate.”
In short, Cisco’s commitment to human rights is a fiction.
Given that the U.S. Supreme Court has effectively read the ATS into non-existence, Congress must now step up. While there might be other avenues for redress including under state law, there must also be a comprehensive federal human rights law allowing any plaintiff to hold American companies—especially technology companies—accountable for aiding and abetting human rights abuses, with knowledge or intent that those abuses would occur, and whether the victims suffered those abuses in the U.S. or in foreign countries.
The implications of this gap in U.S. human rights law are significant. As Prof. Harold Koh considered:
[T]he Justices should ask whether affording such immunity in Cisco would implicitly signal to U.S. companies that they could not be held liable for assisting the U.S. government in committing gross violations. Such violations could include constructing a mass surveillance system that may be used to surveil, persecute, retaliate against, and punish real and perceived opponents and constructing systems that autonomously commit war crimes.
American companies should not have a free pass to build out surveillance states (or other technologically sophisticated systems) that not only violate personal privacy or facilitate censorship, but that can also lead to real-world physical violence and even death.
Reproducible Builds (diffoscope): diffoscope 338 released [Planet Debian]
The diffoscope maintainers are pleased to announce the release
of diffoscope version 338. This version
includes the following changes:
[ Chris Lamb ]
* Binutils no longer shows the top-level directory; update expected test output.
(Closes: #1151752)
You find out more by visiting the project homepage.
John Palfrey, a friend and former colleague from Berkman wrote a fantastic post about people at the lawfirms who caved to Trump.
Thorsten Alteholz: My Debian Activities in October 2026 [Planet Debian]
This was my hundred-forty-eighth month that I did some work for the Debian LTS initiative, started by Raphael Hertzog at Freexian.
During my allocated time I uploaded or worked on:
Besides doing these uploads, I reviewed the libssh upload (DLA-4844-1) and helped a bit in the background of the php uploads. Last but not least I spend some time on security-master to assist others (especially the kernel team) with uploads to Bookworm and Bullseye.
This month I uploaded a new upstream version or a bugfix version of:
This work is generously funded by Freexian!
This month I uploaded a new package vendor-ubuntu-touch to be able to build packages differently in an UbuntuTouch environment. I am curious when it will leave NEW. I also tried to finish two new applications.
This work has been generously funded by Fre(i)e Software GmbH!
This month I uploaded a new upstream version or a bugfix version of:
Unfortunately I had no time to work in this category this month.
This month I uploaded a new upstream version or a bugfix version of:
This month I uploaded a new upstream version of:
Due to different reasons I started to tidy up the list of packages I maintain. Some packages have been removed, some packages lost myself as uploader and some packages have been orphaned. The number of orphaned packages is about 1100 now, so maybe you can find one to adopt.
To Phil Windley: "We both remember what the web was like before it became a CSS and JavaScript platform." But most young users and developers have no memory of how powerful it was to make interop so damned easy.
[$] Git considers voting to determine its LLM policy [LWN.net]
One of the dominant themes of 2026 has been the debate within development projects about the terms under which LLM-written contributions should be accepted — if, indeed, they should be accepted at all. The Git project has not been immune to this trend; the topic was discussed at the recent Git Contributor's Summit. In this case, the path to a resolution may be somewhat circuitous; the project, which has never been governed as a democracy, is considering adopting a voting process as a way of bringing the discussion to an acceptable conclusion.
Kernel prepatch 7.4-rc2 [LWN.net]
Linus Torvalds has released the 7.4-rc2 prepatch and it
will come as no surprise that it is a large one ("a big -rc2 to
go with the largest ever -rc1
"). Much of the size was made up
of some automated Coccinelle updates that were spread out all over
the tree; once those are factored out, the rest looks fairly
normal:
When masking that noise out from the diffstat, the shape of it changes - not spread out over thousands of files any more. But it does not look unusual: a third is drivers (gpu, networking and sound account for most of it, but there's a bit of everything), another third is networking and bpf, and the final third is "the rest" (mostly filesystems, mm, arch updates).And yes, much of this was driven by various AI fixes. I think I'll stop repeating that, and we can just take it for granted. But this time around Alexei [Starovoitov] claims that on the bpf side at least the fixes are now coming in faster than the new reports, and that sounds lovely if true.
The Markdown version of my blog is getting more traffic than the HTML version. So much so that I'm getting complaints about all the political stuff. I love this, and I even love that some people are saying what they used to say, they didn't come to my blog for the politics. That probably will influence me a little, but it still is my main way I talk to the world, so I'm not likely to back off too often.
The sound on my TV is a fraction of a second faster than the picture. Just enough of a delay so I know a shot is going in before I see it go in.
Dems: the campaign never ends [Scripting News]
Urgent note to Dems. Keep your campaign websites going.
This is the mistake Dems always make. When you have news to get out, the MSM will mangle or ignore it. Go direct to your supporters, not just the people who voted for you, the people you represent. Let us help support the work you're doing.
Speeches on the floor of Congress hold very little interest.
Send some of the new stars of the party out in the flyover territory (where they come from!) to keep everyone in the loop. Look at all the power that was locked up in places like the North and South Carolina, Georgia, Texas, Kansas, Michigan, Iowa. Arizona, Mississippi and Alaska. (Who did I miss?)
Remember this dear member of Congress, you were elected to represent us, not to make deals with anyone else. We are the power. Y'all always forget that once the election has happened, but that's just the beginning. You may be very surprised if you have a 365-day-a-year connection to the people.
The news industry is pretty freaking useless, and we know it. The landslide wasn't manufactured on Maddow or Meet the Press. Don't look to podcasters. The people of the United States are driving now.
Also even though he doesn't have a job, bring Pete Butttigieg in to the campaign.
And to the news networks, host some of your shows from studios in the new states, or move your hosts around from Atlanta to Dallas and Des Moines and Detroit, Phoenix and Charlotte. I think you'll be surprised at the difference it makes in the perspective of your super boring talking heads who always say the same bullshit, and the pride of the people who live in those states. Remember they feel no one pays attention to them -- and that includes journalism, not just politicians.
The current Dem leaders can't do this -- too much change for them, to little time. Start with people who have been freshly educated in what the electorate is capable of. You're at best the coaches, not of the reps, but the people. Sometimes people are too old for the job, and that's true in this case. Someone, an elder like Bernie Sanders or Elizabeth Warren should be out looking for the next leaders. Whoever they are, they must be young and eloquent and able to talk back to bullshit, not try to skate around it.
And remember this -- the campaign never ends.
PS: I'd love to see Jasmine Crockett sitting behind Trump at the next State of the Union. A sharp woman judging a smelly old man is really appealing. Focus group that, against Jeffries in the same seat.
PPS: The new leadership has to be photogenic, intelligent, doesn't yield to bullshit, doesn't try to skate around it either. When they go on SNL they have to kill it.
OpenIndiana 2026.10 released [LWN.net]
Version 2026.10 of the OpenIndiana operating system has been released. OpenIndiana is based on Illumos, which in turn was based on OpenSolaris after Oracle discontinued it.
Notable changes in this release include UEFI framebuffer support for the live image, updates to many applications and development tools, as well as the inclusion of new applications such as TeX Live 2026, the Foliate ebook reader, and more.
Security updates for Monday [LWN.net]
Security updates have been issued by Debian (cjose, kernel, libreoffice, rsync, ruby3.3, telegram-desktop, vim, and zlib), Fedora (bind, composer, copyparty, dnf5, elixir, fasterxml-oss-parent, gnome-remote-desktop, goose, jackson-annotations, jackson-bom, jackson-core, jackson-databind, jackson-jaxrs-providers, jackson-modules-base, jackson-parent, java-21-openjdk, java-21-openjdk-portable, jupyterlab, kryoptic, luksmeta, mingw-cfitsio, mingw-expat, mingw-freetype, mingw-glib-networking, mingw-harfbuzz, mingw-qt5-qtbase, mingw-qt5-qtdeclarative, mingw-qt5-qtwebkit, mingw-qt6-qtbase, mtools, NetworkManager-l2tp, nginx, nginx-mod-brotli, nginx-mod-fancyindex, nginx-mod-headers-more, nginx-mod-js-challenge, nginx-mod-modsecurity, nginx-mod-naxsi, nginx-mod-vts, nodejs-pnpm12, pcre2, perl-Spreadsheet-XLSX, pie, python-boto3, python-botocore, python-joserfc, python-jupyter-builder, python-jupyterlab-server, python-jupytext, python-nbdime, python-notebook, python-s3transfer, python3.12, rccl, rsync, rust-blake2b_simd, rust-blake3, rust-constant_time_eq, rust-lzma-rust2, rust-ppmd-rust, rust-regorus, rust-sccache, rust-totp-rs, rust-typed-path, rust-zip, rust-zip0.6, rust-zip2, sofia-sip, suricata, wordpress, and xen), Mageia (gimp, python-gitpython, and suricata), Red Hat (osbuild-composer), Slackware (httpd), SUSE (bind, brotli, ca-certificates-mozilla, chromedriver, containerized-data-importer1.65-api, corepack24, docker-compose, flatpak, fuse-overlayfs, git-lfs, gitoxide, go1.27, google-cloud-sap-agent, google-guest-agent, gotosocial, kubevirt1.8, kubevirt1.8-container-disk, kubevirt1.9-container-disk, libmariadbd-devel, libntpc1, libopenscap33, libsndfile-devel, libspice-server-devel, libtirpc-devel, matomo, mihomo, mozilla-nss, nano, nmap, nodejs22, perl-Mozilla-CA, python-Brotli, python-CairoSVG, python-certifi, python313-Pillow, rsyslog, stgit, and thunderbird), and Ubuntu (python-tornado).
1352: No Looking Back [Order of the Stick]
http://www.giantitp.com/comics/oots1352.html
OpenIndiana Hipster 2026.10 released [OSnews]
OpenIndiana is a rolling-release illumos distribution, but they do release snapshots twice a year to serve as a base for installations, which they call Hipster. The project’s just released OpenIndiana Hipster 2026.10, and it brings a number of welcome changes. First, there’s UEFI framebuffer support on the live image, which is automatically configured when loading up the image. Second, Firefox and Thunderbird versions have been bumped to 159.0, and a whole slew of development tools have been updated to newer versions as well.
This snapshot also brings QEMU 11.1.2 and VirtualBox 7.2.22, and a number of new applications have been added as well. In addition, SPARC build support has been improved to enable new and updated packages for Sun’s dead ISA as well.
You can download a fresh image, or update an existing installation through IPS.
Making musl and proprietary NVIDIA drivers work together [OSnews]
Creator and lead developer of Chimera Linux, Nina “q66”, write about their efforts to get NVIDIA drivers to work properly on musl-based distributions.
As you may be aware, one of the limitations of musl-based distributions is that they will not function to their proper extent when used in computers with various NVIDIA graphics cards.
This is due to the proprietary nature of the driver, being built for glibc. I have been experimenting with trying to make this work, and this post is the summary of that effort.
↫ Nina “q66” on the Chimera blog
What follows is a deeply technical exploration of the problem, and the steps Nina q66 and the Chimera team are taking to try and fix it. With how popular and widespread NVIDIA hardware still is, this is a hugely important issue to try and address, and I’m grateful they’re trying to address it.
Why AI Agents Are Repeating 2019’s Microservices Mistake [Radar]
Microservices changed how we build software by breaking large applications into smaller, independently deployable services. That made systems easier to develop and scale, but it introduced a different class of problems: The behavior of the whole system got harder to see. AI agents are now following a similar path. A workflow that once lived inside a single application gets split across several agents, each responsible for one task. Individual pieces may work exactly as designed while the overall workflow gradually produces worse results. The difference is that agents make these systems far faster and cheaper to create, which makes it easier to repeat the same architectural mistake at a much larger scale.
I learned this the hard way. My name was on the design doc. Splitting that workflow across three agents was a reasonable call, and I would still defend most of the reasoning. But if you’d asked me that afternoon how we would find out when the thing quietly stopped working, I had no answer.
Months later, in a quality review, a reviewer noticed something felt off before any of our instrumentation caught it. Latency looked fine, error rates were flat, and every service in the chain returned what it was supposed to return. What we had was a slow decline in output quality, and it took about three weeks to trace.
The first agent handed a set of documents to the next one for summarization. The summarizer dropped a field it had judged to be a low signal. A downstream agent then made a confident recommendation without that field. Every agent did what it had been designed to do, and the result was still wrong. I should have anticipated it, because I’d been on the product side through the microservices years and had seen this pattern before.
Breaking down monoliths was a good decision for most teams, but one thing was forgotten. Decomposition did not make the difficult parts of the system disappear. It moved them into the gaps between services, where the people accountable for the overall product could no longer see them. The bill landed around 2019, and it landed on the delivery schedule rather than the incident channel. Teams were running hundreds of services with limited tracing and no contract versioning, and the real symptom was slower delivery. Shipping took longer than before, because engineers spent their weeks picking through those services.
Agents are running the same arc faster, because standing one up takes an afternoon and a prompt instead of a repo and a deploy pipeline. When creating an agent is that cheap, product teams make agents without asking anyone, and nobody keeps track of what the agents are and what they’re doing.
This isn’t only my experience. Cemri and coauthors annotated more than 1,600 execution traces across seven popular multi-agent frameworks and built a taxonomy of 14 recurring failure modes (MAST, NeurIPS 2025). Most of what goes wrong traces back to how the system was specified and how its agents coordinated, not to the models inside it.
Inventory sounds trivial and isn’t. Service sprawl at least showed up in your Kubernetes manifests. Agents get created inside product surfaces and workflow tools, and inside somebody’s weekend automation of their own job. You don’t find out what you have until a compliance reviewer asks which automated system touched a given decision, and then it’s too late.
The visibility gap cost us three weeks. When an agent calls an agent that calls a retrieval layer that calls another agent, and every hop has a model deciding what to pass forward, you need trace context that survives the whole path. Most stacks log prompts and completions per call and stop there. You get each hop and never the chain, and it was the chain that failed.
Compounding confidence is the failure that worries me most. Distributed systems fail loudly, which turned out to be a blessing nobody appreciated. A service throws a 500 and the caller knows to stop. Agents fail quietly and fluently, so when an upstream agent produces a summary that’s plausible and wrong, the downstream agent gets no signal and reasons confidently on top of it. By the time the result reaches the user, it conveys a level of confidence that the initial evidence does not support.
API contracts drifted when someone changed the response format without versioning it, and we built machinery to catch that at build time. Agent contracts drift when someone edits a system prompt. In that case there’s no schema diff and no type check. Nothing breaks until a downstream agent starts getting different output and adapts to it without telling anybody.
A registry is the cheapest thing to build and the first thing everyone skips. When building microservices, we kept a service catalog with an owner and a scope for each service. For agents, we need that same record plus an explicit list of what each agent is allowed to call.
Tracing carries over nearly unchanged, since correlation IDs were invented for this exact problem. OpenTelemetry’s GenAI semantic conventions give you the vocabulary, and an agent run comes out as a span tree instead of a pile of unrelated log lines:

Had we been emitting those spans, the summarizer span and the recommender span would have sat side by side in one trace, and the missing field would have been a diff instead of a three-week hunt. These conventions are still moving, so keep the attribute names behind a thin mapping layer of your own.
Finding the missing field in a trace would have shortened the investigation. I’d also want a test that caught its omission before a prompt change reached production. That’s where I’d apply the contract-testing discipline from microservices: define what the downstream agent depends on, then check that an upstream change preserves it. For the summarizer in this workflow, the evaluation would need to check whether its output retained the information the recommender needed. I’d version the prompts and require changes to pass those evaluations before release. There’s early evidence it pays: SEMAP, a protocol-layer method applying behavioral contract modeling and lifecycle verification on Google’s A2A infrastructure, reported up to roughly 70 percent fewer failures on function-level coding tasks when scored against MAST.
The trust boundary is the thing I’ll argue about in a design review. In 2019 we learned that a service doesn’t get trusted just because it lives inside the perimeter, which is most of what service meshes were for. The agent version is that an agent doesn’t get broad tool access just because we built it and we’re nice people. What an agent is allowed to do belongs in a policy layer the model can’t talk its way past, not in a system prompt asking politely.
Cost is where the analogy between microservices and agents fails. A microservice stuck in a retry loop costs you CPU and an alert at 3 am. An agent stuck in a loop costs real money on every turn and doesn’t saturate in any way that makes itself obvious. This one lands on the product owner instead of infrastructure, because it surfaces as unit economics rather than an outage, which means the PM ends up justifying the number at the end of a billing cycle.
None of this argues against multi-agent systems, which earn their keep the same way services did. My argument is that operational practices should evolve alongside architecture, without repeating the five-year lag of the previous transition. The person accountable for delivering the product is usually best placed to ensure that happens.
Hence, I push on four things. Can we follow one request all the way through and reconstruct what each agent decided and why? If not, we’re building something we won’t be able to debug. What happens when an upstream agent is wrong, and not whether it can be? If the honest answer is that the next agent carries on as normal, we haven’t designed a failure mode. We’ve designed a failure and left it running.
Who owns this agent, and where is its tool access enforced? A system prompt isn’t enforcement. What does this cost at ten times today’s volume, and what shuts it off when the number goes wrong? I ask that one early, because nobody volunteers it.
The teams that managed service decomposition most effectively incorporated tracing and contract testing into the build from the outset. These practices helped them understand how services interacted and verify that changes preserved expected behavior. That work is a sprint or two now, and a great deal more than that once you’re running 40 agents and someone asks which of them touched a customer’s data.
CodeSOD: Eventually [The Daily WTF]
We were just discussing TODO comments recently, and that motivated Bernard to send us this representative comment..
// TODO: This method should ideally be in tax frame work but due to
// the time constraint I am duplicating the code here.
// Needs to be refactored. Oct 28, 03.
This comment exists in this codebase, unchanged. It has been there for twenty three years. The refactoring has never happened.
This comment has seen the world change over the last 23 years, as the technology landscape has shifted and changed, grown and contracted. But this comment, this comment is a constant.
My Super Mid-Life Crisis – Issue 1 – 11 [Comics Archive - Spinnyverse]
The post My Super Mid-Life Crisis – Issue 1 – 11 appeared first on Spinnyverse.
AI Security [Schneier on Security]
Two weeks ago, I attended the [un]prompted AI security conference in San Francisco. It was an excellent event: three days of very dense talks about all aspects of AI security. (My talk was about integrous AI, and I will post it when it is online.)
AI security can be divided into three broad topics. It’s important for researchers to understand which one they are working on. And it’s important for us as a community to work on them all. They are: security of AI, security with AI, and security from AI. [un]prompted had good talks about all three.
Grrl Power #1511 – Designated foreshadowing [Grrl Power]
I don’t know what is involved in the Chastity Corner, and what makes it especially chaste, but at some point, Dabbler’s going to realize that it’s a fairly toothless threat. Ultimately, Maxima’s not going to get involved in any of the team member’s sex lives unless they’re screwing around on duty or somehow endangering people. Which, in a succubus’s case, is not out of the realm of possibility. Still, the vague threat of chastity is a succubi’s kryptonite, so Max isn’t above using it while it works.
I’m veering dangerously close to having every character speak in customized word bubbles. I had considered doing that from the very beginning of the comic, but almost immediately realized that it’s a pitfall for any comic that has more than a dozen characters in it, because there’s only so many combinations of balloon color, style, and font that are actually easily legible. I can’t stand comics that have black text in a “Nazi-Letterhead-Gothic-Calligraphy” font on a medium dark red word bubble, with just a skosh of JPEG artifacting around the letters. Okay, I get it, the character speaking is a demon. Are they supposed to be unintelligible as well? I’d say that’s borderline racist, but it’s really just a design failure.
The only reason I’m doing as much of it now as I am is, well, look, one of the competitors was a 600 meter tall mountain, another was a giant robot starfish spaceship, then we’ve got the “Better than an Angel on my own say-so,” “Living Explosion,” “Huge Demon’s Boss.” You get the idea. Superheroes and supervillains don’t generally need custom sound bubble. Magneto and Vehemence are big, scary bad guys, but they’re just people. Fin Fang Foom? Sure. He can get a custom craggly font. Someone like Derksied? Eh, kind of an edge case.
I looked up how much that cone of mountainside Max threw would weigh. I made some very rough estimates of its dimensions using Max as a ruler. Then used some website to calculate the volume of a cone, then found a website with charts of how much igneous rock weighs. Turns out there’s a huge difference in weight depending on the actual kind of rock it is. Pumice, for instance, weighs quite a bit less than basalt, for instance. And no, Max didn’t throw a giant cone of pumice at Disastar. Still, 1,000 tons for a cone of rock that large seems very light to me. Maybe it’s the cone shape that’s throwing me.
Here you go, a brand new vote incentive. Featuring the least sexy character in
the comic. No, I take that back, Cooter is the least sexy, but
don’t expect a pinup of him anytime soon. Or ever. There is a nude version over at
Patreon. Note I didn’t say NSFW. She is nude in those
picture, and she does identify as female, but it’s…
hard to tell. She is a humanoid aberration by D&D terminology,
not a mammal. And before you ask, no, I don’t know how many
vertebrae she has in her neck.
Double res version will be posted over at Patreon. Feel free to contribute as much as you like.
Restrictive design [Seth's Blog]
Design of any kind requires empathy. If you’re making it for yourself, it’s a hobby. Everything else is for someone else.
Great designers know who it’s for. And the design is for them, not for the designer.
Annie Jean-Baptiste teaches us about restrictive design. This is what happens when the designer fails to identify and recognize who the work is for, and then leaves people out. “Exclusion is a business decision, even when you did not mean to make it.”
Not everything needs to be designed for everyone. But all well-designed experiences and products are designed for someone.
Name your people, invite them in and give them what they need.
The Genesis Device [Penny Arcade]
New Comic: The Genesis Device
Pluralistic: America cannot undo Trumpism (09 Nov 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

True Carneyism has never been tried. When Canadian PM Mark Carney traveled to Davos to declare a "rupture" in the old order (and admit that this old order was never that great to begin with) he told us that there was no going back from Trumpism. The only way out of Trumpism was through:
This is easy to say, but hard to do. If the old order is over, then we will never again be able to trust America to serve as the world's cop, banker, ISP, IT department and consumer of first resort.
We can't trust Americans to buy the things we make:
https://pluralistic.net/2025/12/16/k-shaped-recovery/#disenshittification-nations
We can't trust them not to interfere with the interconnections between fiber lines that slither out of the oceans and onto the US landmass:
https://pluralistic.net/2025/11/26/difficult-multipolarism/#eurostack
We can't trust them not to weaponize the US dollar to undermine sovereign nations' legitimate activities:
https://pluralistic.net/2026/01/26/i-dont-want/#your-greenback-dollar
And we absolutely can't trust them not to spy on, steal from, and shut down governments, firms and households around the world by cutting off access to US software and cloud services, and by bricking the world's devices, from tractors to smartphones:
https://pluralistic.net/2026/01/01/39c3/#the-new-coalition
Despite Carney's assertion that this rupture represents a welcome (if too cruel, sudden and painful) departure of the old (never very good) system, no one (not even Carney) is acting like the world has truly changed. Take Carney's answer to the Trump tariffs: retaliatory tariffs. Tariffs have a place in sheltering a nascent domestic industry from better-developed, deeper-pocketed foreign competitors, so a tariff wall between Canada and the US could make sense, if it was paired with the massive domestic investment we'd need to rebuild the manufacturing industry that Brian Mulroney sold out with the Canada-US Free Trade Agreement (and later NAFTA).
But Carney is no Carneyist. When it comes to massive domestic spending, Carney is a bog-standard, austerity-addled Reaganomics guy; a central banker and technocrat whose idea of "industrial policy" is firing tens of thousands of skilled civil servants who thwart his agenda and replacing them with defective (but obedient) chatbots running on US hardware:
https://pluralistic.net/2026/05/13/vibe-governance/#k-hole
Carney's retaliatory tariffs aren't what you'd do if the old order had "ruptured." They're what you'd do if you hoped that your American cousins would come to their senses, evict their mad king from the White House, tear down the Epstein Memorial Ballroom, and roll back the clock to 2016. Like a lot of liberals, Carney just wants to go back to brunch.
But as any true Carneyist knows, brunch is canceled forever. Brunch ruptured. There's no going back to the old America, and there's no going back to the old American order that had dominated the world since the end of WWII. As November Kelly says, "Trump inherited a poker game rigged in his favor, but he flipped the table over anyway because he resented having to pretend to play."
This is something we're all struggling with, including Americans. The Republicans' midterm wipeout has corporate Democrats hoping that after a few years' tinkering, they can elect a Newsomdroid or give Harris a do-over and win back the trust and reliance of the world and the American people. Even for a true Carneyist who never liked the old order very much (like me), this is a comforting prospect. No one knows what the next world will look like, and no matter how screwed up the old world was, I knew how it worked and how to make it work for me (more or less).
But there is no going back. Trump I didn't have a plan, it only had Trump, whose One Big Idea was issuing Executive Orders. Many of these were meaningless bloviating. Some were illegal and were swiftly suspended or never went into effect. Biden overturned nearly all the remaining EOs (that were both substantive and not totally illegal).
But Trump II had Project 2025. The point of Project 2025 and the ambition of the wreckers who wrote it was to push America through a series of one-way transformations that cannot be undone, and that's what's happened, over two short years. That's the bad news. The good news is that it's much easier to destroy than to build, so Project 2025 hasn't led to the creation of permanent, load-bearing fascist institutions that cannot be shuttered without bringing down large parts of the USA.
Start with values. Trumpism is a denial of democracy and the rule of law. Tens of millions of Americans have been marinated in a belief system that says that the way to win power is to claim all the elections you lose are rigged and that these "stolen elections" are best addressed by staging a coup. These people are in a cult that embraces its leader's naked corruption. They're in a cult whose doctrine treats political triumph of as divine direction to embark on looting sprees. It's a cult whose members mutilate their faces so that they can't ever leave, and the reward for this permanent disfigurement is endless influence-peddling:
https://thehill.com/homenews/administration/6136101-ambassador-guilfoyle-wire-request/
Even without ritual scarification to mark them out forever, millions of these people will never come back from this cult indoctrination. They will forever be democracy's enemies, treating the idea of laws, rules and honest service as shucks for the rubes. What's more, these people's neighbors, family members and co-workers will never be able to fully trust them.
Unfortunately, those values aren't just diffused through the population: they are concentrated in the organs of state. DOGE and Federalist Society judicial appointments have created a stay-behind cadre of life-tenured fascists who now dominate America's federal judiciary and permanent civil service, including and especially the nation's law enforcement and national security agencies, from the FBI to the FDA, the NSA to the Bureau of Prisons.
Worse: DOGE also chased away hundreds of thousands of skilled, principled public servants. Those people have retired, retrained, emigrated or exited the workforce. They can't simply be re-hired and restored to their old roles. From finance regulation to the national education system, America has lobotomized itself, swapping people who understand how things work and use that understanding to enforce the laws and safeguard the American people for end-times fascists, caliper-wielding eugenicists, and Ayn Rand LARPers.
Much of the work DOGE's victims did is also gone forever. When DOGE's muskrats killed long-running NIH research projects, they pulled the plug on studies, some of which had run for decades. Many of these experiments are unsalvageable. DOGE didn't just throw away the contributions that cancer patients, people with genetic disorders and other volunteer research subjects gave to science: in halting these research projects, DOGE shredded this selfless sacrifice. Why not? When one NIH official begged his DOGE invaders not to kill long-running, valuable cancer research, the DOGE child laughed and said it didn't matter, because AI was going to cure cancer.
Then there's the NIH's research partners: the elite institutions who buckled so quickly in the face of Trump's antisemitism/DEI witch-hunts. These universities now face the same crisis as the DOGE-gutted civil service, with their best and brightest gone, grad students chased back to their home countries, and the trust of their students and faculty permanently squandered.
It's not just grad students who got chased out of America. Immigrants – documented and undocumented alike – have been terrorized for two years and many of them have fled. ICE got what it wanted: they robbed aging, stagnant America of the dynamism, aspiration and youthful vigor of the most ambitious people from every corner of the globe, people who proved their resourcefulness and bravery by making dangerous crossings. Then they navigated the US immigration system's impenetrable bureaucracy, often working without legal representation, in a language they were just learning, and still managing to clear every bureaucratic hurdle. This alone is a breathtaking demonstration of intelligence, resourcefulness and diligence. Those brilliant, hardworking people aren't coming back: some other country will get the benefit of their life's work and care. Their children will become citizens of other nations.
Now think of the hundreds of billions of dollars that have been transferred from ordinary working people who are still here, to America's oligarchs. Trump's tax cuts, corrupt policy subsidies and no-bid pork contracts have supercharged the wealth (and thus the power) of America's most corrupt elite. It will be the work of a generation to tax away their stolen loot, and much of it may never be recovered. These people will spend that time working to transform their wealth into permanent power, buying and installing politicians at every level of office.
Trumpland is a coalition of wreckers of every kind. Think of how MAHA undermined the nation's herd immunity to a host of communicable diseases, many of which can result in permanent disability. Long after MAHA is forgotten even as a punchline, the people whose health they destroyed forever will still be struggling. After a century of painstaking work to corral measles and other killer diseases, MAHA immunocompromised America itself, in just two short years. Any attempt to bring back evidence-based preventative medicine must now overcome the deep mistrust of medical science that an army of supplement-peddling quacks has sunk deep into Americans' psyche.
Speaking of mistrust: Americans must now and forever live with the knowledge that tens of thousands of their neighbors joined ICE, an armed, masked kidnapping squad that occupied US cities, murdering US citizens and noncitizens alike in the streets with impunity. Even if we try and imprison every one of those war criminals, it will take years and will shatter families and communities.
ICE proved that America is awash in small arms, but it's a different story when it comes to significant warfighting materiel. Trump's Iranian disaster used up the largest part of Pax Americana's arsenal of missiles and anti-missile interceptors. Putin doesn't need to convince Trump to cut off Ukraine's access to America's long-range arsenal. Trump shot his wad, and re-arming America is the work of decades, and it will cost billions, and it will require access to things America no longer knows how to make. Worse: the places where they do know how to make those things are no longer America's allies.
Can they be America's allies again? Well, sure, but only in a limited, Carneyist, "minilateral" way, in which countries form temporary alliances to accomplish specific goals. Biden spoke of "friendshoring" production of key goods and services. Friendshoring implies a reliable form of friendship, the sort that is built on decades of trust and interdependence. Friendshoring only works if the friends you friendshore to can be relied upon to stay your friends. Do we really think that if Venezuela deposes the puppet regime Trump installed after kidnapping the country's leader that it will remain America's "friend?"
That's the problem with weaponized interdependence: it only works for so long as the country America is screwing remains dependent on America, and now every country in the world is moving heaven and earth to break their dependencies on America, its institutions and products:
https://pluralistic.net/2023/10/10/weaponized-interdependence/#the-other-swifties
As Nate Bethea says on this week's Trashfuture podcast, airports outside of the USA are now filled with large, splashy ads urging businesses to move their IT out of America's cloud and off of American apps:
https://pluralistic.net/2023/10/10/weaponized-interdependence/#the-other-swifties
After Microsoft obliged the Trump regime by taking away the online accounts of foreign officials who made Trump angry, will any other country ever voluntarily trust them with their industrial capacity, let alone their government?
I'm not saying America is a write-off: I'm saying that it has been sabotaged down to the foundation slab and structural members by a psychotic cadre of skilled arsonists, who were abetted by mad bombers who drove themselves even crazier by racking up life-altering debts in rigged "prediction markets" that serve as a vehicle for bankrupting yourself by wishcasting away your life's savings by betting on every aspect of a Permanent Chud Reich, as corrupt officials make out like bandits by trading on insider information.
When America comes back (if America comes back), it will not be as the organizing platform for the world's finance, military, technology and commerce. In years or perhaps decades, America may find a new stable place in the international community. But in the meantime, it cannot be relied upon to serve as the world's hyperpower. Trump forever disqualified America from enjoying that privileged place – and just to be sure, he destroyed its capacity to even try.

The New York Times Doesn’t Understand AI’s Role in Suppressing Wages https://gizmodo.com/the-new-york-times-doesnt-understand-ais-role-in-suppressing-wages-2000836392
Into the Blueniverse https://catvalente.substack.com/p/into-the-blueniverse
Scamwich: Inside a Restaurant Delivery Payment-Skimming Campaign https://www.infohawk.com/news/2026-11-05-scamwich-restaurant-skimming
Customer or product? https://customerorproduct.org/
#25yrsago Open wifi saves traveler from hotel dial-up gouging https://memex.craphound.com/2001/11/09/i-just-wanna-say-that/
#25yrsago Why Cryptosystems Fail https://www.cl.cam.ac.uk/archive/rja14/wcf.html
#25yrsago Bruce Sterling on Pokemon https://web.archive.org/web/20050908070521/https://www.wired.com/news/audio/interviews/sterling_11.mp3
#20yrsago Fred von Lohmann’s talk at USC https://web.archive.org/web/20061110090032/https://centeronpublicdiplomacy.com/podcasts/061107_von_lohmann.mp3
#20yrsago Secret WIPO memo: rich countries to kill Broadcast Treaty, Development Agenda https://www.ip-watch.org/2006/11/07/developed-country-strategy-on-wipo-development-agenda-governance-revealed/?res=1024_ff&print=0
#20yrsago Canadian copyright czar forced to turn away industry bribes https://web.archive.org/web/20101018194506/http://www.michaelgeist.ca/index.php?option=com_content&task=view&id=1521&Itemid=125
#20yrsago Copyright explained through a wild west metaphor http://www.greglondon.com/bountyhunters/
#20yrsago Why Zune shouldn’t pay blood money to Universal https://cdm.link/universal-microsoft-screw-over-artists-set-absurd-and-dangerous-precedent-with-zune/#more-1719
#15yrsago New Fed warrantless GPS trackers discovered in the wild https://web.archive.org/web/20111110191030/https://www.wired.com/threatlevel/2011/11/gps-tracker-times-two/all/1
#15yrsago Occupy Atlanta encamps on lawn of house under foreclosure threat https://web.archive.org/web/20111109225513/https://thinkprogress.org/special/2011/11/08/363692/occupy-atlanta-encamps-in-neighborhood-to-save-police-officers-home-from-foreclosure/
#15yrsago Ben from Ben and Jerry’s serves ice-cream to Occupiers https://www.fastcompany.com/1678825/the-ice-cream-man-of-zuccotti-park-ben-cohen-on-his-work-with-occupy-wall-street
#15yrsago Identity theft marketplace sells mothers’ maiden names, dates of birth, etc https://krebsonsecurity.com/2011/11/how-much-is-your-identity-worth/
#15yrsago Policy-by-nudging unsupported by evidence, and undemocratic https://web.archive.org/web/20111112154542/https://www.newscientist.com/article/mg21228376.500-nudge-policies-are-another-name-for-coercion.html
#15yrsago Wired.com photo policy: all staff-produced photos will now be Creative Commons licensed https://web.archive.org/web/20111111051330/https://www.wired.com/rawfile/2011/11/creative-commons/?pid=1365&pageid=6275
#15yrsago “Piracy-stricken” Viacom CEO tops pay-raise charts https://www.techdirt.com/2011/11/07/viacom-decimated-piracy-its-ceo-got-biggest-raise-any-exec-anywhere/
#15yrsago Boyett’s Mortality Bridge: Rock n’ roll Dante meets Orpheus https://memex.craphound.com/2011/11/08/boyetts-mortality-bridge-rock-n-roll-dante-meets-orpheus/
#10yrsago FAA okays use of semi-autonomous drones for Disneyland and Disney World fireworks displays https://web.archive.org/web/20161110065859/http://thedisneyblog.com/2016/11/07/disney-drones/
#10yrsago Glenn Beck’s “decency” doesn’t extend to answering questions about why he was such an asshole https://wnyc.org/story/beck-changed-man
#10yrsago CBC threatens podcast app makers, argues that RSS readers violate copyright https://www.reddit.com/r/podcasts/comments/5bmzuj/cbc_are_blocking_podcast_apps/
#10yrsago Winter Denial of Service attack knocks out heating in Finnish homes https://web.archive.org/web/20161109214609/https://metropolitan.fi/entry/ddos-attack-halts-heating-in-finland-amidst-winter
#10yrsago Women are flocking to Susan B Anthony’s grave to cover it with “I Voted” stickers https://www.thecut.com/2016/11/susan-b-anthonys-grave-will-be-open-until-the-polls-close.html
#10yrsago Edward Snowden to Trump campaign: “old laptops” could vet 800,000 emails in “minutes-to-hours” https://web.archive.org/web/20161107235120/https://www.yahoo.com/news/edward-snowden-crushes-conspiracy-theory-053349259.html
#10yrsago My neighborhood realtor is determined to turn a buck on electoral eschatology https://memex.craphound.com/2016/11/08/my-neighborhood-realtor-is-determined-to-turn-a-buck-on-electoral-eschatology/
#10yrsago A history of Chinese science fiction, from 475 BC to Cixin Liu https://web.archive.org/web/20161105172922/http://mithilareview.com/wang_11_16/
#10yrsago How Audi cheated emissions tests: if (steering) then (pollute) https://www.jalopnik.com/america-figured-out-a-new-way-audi-cheated-on-emissions-1788630969/
#10yrsago Senate investigates Wells Fargo retaliations against whistleblowers https://web.archive.org/web/20161108210544/http://www.warren.senate.gov/files/documents/2016-11-03_Wells_Fargo_FINRA_Violations_Letter_Final.pdf
#10yrsago A madman has been given the keys to the surveillance state https://memex.craphound.com/2016/11/09/a-madman-has-been-given-the-keys-to-the-surveillance-state/
#5yrsago Stockholm's war on interoperability https://pluralistic.net/2021/11/09/skrota-skolplattformen/#privacy-without-monopoly
#5yrsago Right-Clicker-Mentality https://pluralistic.net/2021/11/08/tina-v-tapas/#spoilsports-r-us
#5yrsago Charlie Jane Anders' Victories Greater Than Death https://pluralistic.net/2021/11/08/tina-v-tapas/#the-chosen-ones
#5yrsago Imagining the end of capitalism https://pluralistic.net/2021/11/08/tina-v-tapas/#its-pronounced-tape-ass
#1yrago Facebook's fraud files https://pluralistic.net/2025/11/08/faecebook/#too-big-to-care

Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
Folkestone Writers Festival, Nov 16
https://www.creativefolkestone.org.uk/whats-on/cory-doctorow-the-internet-is-broken-now-what/
Oxford: Ministry of the Future, Nov 23
https://ministryforthefuture.co.uk/events.html
Sheffield: Reverse Centaur at Juno Books, Nov 25
https://www.outsavvy.com/event/40274/cory-doctorow-in-conversation
Virtual: Enshittification, AI, and the Future of Technology (UBC
Master of Educational Technology), Nov 28
https://met.ubc.ca/2026/09/met-speaker-series-cory-doctorow-enshittification-ai-and-the-future-of-technology/
Oxford: Bennett Oxford Symposium on Open Code in Science, Dec
9
https://www.bennett.ox.ac.uk/events/2026-bennett-institute-symposium/
Santa Barbara: UCSB Reads, Apr 29
https://www.library.ucsb.edu/events-exhibitions/ucsb-reads-2027-presents-author-cory-doctorow
Montreal: World Science Fiction Convention, Sep 2-6
https://montreal2027.ca/en
Life After AI (Brain Bar)
https://www.youtube.com/watch?v=IPPa43-n0vI
Terms of Service with Clare Duffy (CNN)
https://www.cnn.com/audio/podcasts/terms-of-service-with-clare-duffy/episodes/458ce968-af5d-11f0-b539-13ed2afe25f8
AI, Work, and Power (Software Engineering Daily)
AI, Work, and Power
https://softwareengineeringdaily.com/podcasts/cory-doctorow-on-ai-work-and-power/
AI, Corporate Power, and the Fight for Worker Control
(Plutopia)
https://plutopia.io/cory-doctorow-ai-corporate-power-and-the-fight-for-worker-control/
"Canny Valley": A limited edition collection of the collages I create for Pluralistic, self-published, September 2025 https://pluralistic.net/2025/09/04/illustrious/#chairman-bruce
"Enshittification: Why Everything Suddenly Got Worse and What to
Do About It," Farrar, Straus, Giroux, October 7 2025
https://us.macmillan.com/books/9780374619329/enshittification/
"Picks and Shovels": a sequel to "Red Team Blues," about the heroic era of the PC, Tor Books (US), Head of Zeus (UK), February 2025 (https://us.macmillan.com/books/9781250865908/picksandshovels).
"The Bezzle": a sequel to "Red Team Blues," about prison-tech and other grifts, Tor Books (US), Head of Zeus (UK), February 2024 (thebezzle.org).
"The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org).
"The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
"Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com.
"Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
Today's top sources:
Currently writing:
"The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Fourth draft completed. Submitted to editor.
A Little Brother short story about DIY insulin PLANNING

This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Bluesky (no ads, possible tracking and data-collection):
https://bsky.app/profile/doctorow.pluralistic.net
Medium (no ads, paywalled):
Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):
https://mostlysignssomeportents.tumblr.com/tagged/pluralistic
"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla
READ CAREFULLY: By reading this, you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.
ISSN: 3066-764X
Girl Genius for Monday, November 09, 2026 [Girl Genius]
The Girl Genius comic for Monday, November 09, 2026 has been posted.
Hunting, p04 [Ctrl+Alt+Del Comic]
The post Hunting, p04 appeared first on Ctrl+Alt+Del Comic.
Momma Raised Him Right [QC RSS v2]

he's a good boy. an idiot, but a good boy
View From a Hotel Window, 11/8/26: Nashville [Whatever]


Looks like the folks here in Nashville might be putting up a new little sports thingie.
And yes, there is construction noise! So much beeping and clattering! Not that I really noticed; once I got into my room (early check-in FTW) after a very early wake up and arrival, I lost consciousness so fast. I am adequately slept now and spending my Sunday early afternoon being lazy.
But tonight! I‘ll be at Novelette Booksellers at 6:30! You should come see me! And then tomorrow, I will be in Louisville, Kentucky for an event at Carmichael’s Bookstore. 7pm! Show up!
— JS
A while back I must have read a review of JBL Tune Flex earbuds and bought a pair. The sound was awful, almost no bass, flat, low volume. I have always been looking for earbuds that get loud. So I put them away and forgot I had them, still looking for the holy grail of earbuds. Now, a few years later, I was looking around in a drawer, pulled them out, and when I had some time to mess around I found out the problem had something to do with how I placed them in my ears. Properly placed the volume was ample and the bass was inspiring. Just took a walk with them on and I love them. I wonder which other buds I tried and gave up on too quickly?
John Gruber: "Markdown is my sole creation. Aaron Swartz was my best, by far, beta tester and the first person other than me to get excited about it." I am glad to get a concise statement about this from Gruber. And from what I recall of Aaron that sounds about right too.
Birger Schacht: Using incus for throw away VMs [Planet Debian]
For some time now I’ve been looking for a way of keeping projects I’m working on in a separate VM without much setup. There are numerous solutions to do this kind of thing using namespaces (various container technologies, firejail, flatpak, bubblewrap, …) but I wanted something that uses real virtualization. I recently stumbled upon incus and it seemed like it could be a solution to my problem. Incus is a manager for both containers and virtual machines. It is possible to create VM images that can be used as templates, meaning that other machines can then be based on them on creation. Virtual machines can be configured using “profiles”.
For my use case, I have created a profile that defines how my template image should look like. In this profile I use cloud-init to configure the template machine on startup:
config:
cloud-init.user-data: |
#cloud-config
apt:
conf: |
APT {
Install-Recommends 0;
}
package_update: true
package_upgrade: true
package_reboot_if_required: true
packages:
- file
- man-db
- bat
- eza
- git
- git-delta
- neovim
- zsh
- tmux
- curl
- ncurses-term
- hx
- nix-bin
- nix-setup-systemd
- rustup
- npm
- podman
users:
- name: user
lock_passwd: false
# mkpasswd 'incus password'
hashed_passwd: $y$j9T$p9XBP4Ox3SBUnyu.sqv5m1$f1rxcPJyVs05w./dZvIzu6.4dVWBvzu99nMBZRNlamD
groups: sudo, nix-users
shell: /usr/bin/zsh
uid: 1000
write_files:
- path: /home/user/.config/nix/nix.conf
content: |
experimental-features = nix-command flakes
permissions: 0600
- path: /home/user/.zshrc.local
content: |
export PATH="$PATH:$HOME/.nix-profile/bin"
permissions: 0600
runcmd:
- [curl, -sSfL, -o, /home/user/.tmux.conf, https://grml.org/console/tmux.conf]
- [curl, -sSfL, -o, /home/user/.vimrc, https://grml.org/console/vimrc]
- [curl, -sSfL, -o, /home/user/.zshrc, https://grml.org/console/zshrc]
- [chown, -R, user:user, /home/user/]
description: Base template for dev VMs
...
and I use a script to regenerate the template image when I want to adapt the config:
#!/bin/sh
#set -e
set -x
NAME=dev-vm-template
# adapt the profile before rebuilding the template image
incus profile edit cloud-dev-template
incus delete --force ${NAME} || true
incus create images:debian/13/cloud --vm --quiet --profile default --profile cloud-dev-template ${NAME}
incus start ${NAME}
incus wait ${NAME} agent
incus exec ${NAME} -- cloud-init status --wait || true
incus stop ${NAME}
incus publish --alias cloud-dev-template --reuse ${NAME}
This script uses the debian/13/cloud image together
with my cloud-dev-template profile to set up a
machine, configure it using cloud-init and store the
result as an image called cloud-dev-template.
To use this setup, I created a small python tool called inker that talks to the
incus
REST API. Using inker create creates a new VM
based on my template. Using inker attach attaches the
current working directory to a VM as a readonly mount. It is
possible to combine those commands like inker create | inker
attach to do those two steps in one command. inker
login logs into the VM that has the current directory
attached. This way I can create VMs that are connected to
directories on my filesystem.
I am currently playing around with this setup, but I think this
could help me to have a throwaway development machine, similar to
dev containers. I’m not
sure yet how happy I am with incus, though. I was also
looking at systemd-vmspawn, but there are still some features
missing that I would need. But I might rewrite inker
at some point to use a different backend.
Joe Marshall: Why vibe code in Lisp? [Planet Lisp]
I've been asked twice now: if the generated code doesn't matter—if the AI is doing the heavy lifting of writing the syntax—why do I vibe code in Common Lisp?
Why not target Python, TypeScript, or Java? These are mainstream languages with massive training sets. The models can generate code in them with a high degree of statistical accuracy. So why do I choose to target a niche language like Common Lisp for code generation?
There are a lot of reasons, and they all come down to the same age-old question. Why use Lisp when you could use a more popular language? The answer is that language popularity is a poor proxy for utility and expressiveness. The Lisp community has long known this - it is why we chose Lisp in the first place. Selecting for popularity is what middle managers do to ensure that they can always find a warm body to maintain the code. It is not what elite hackers do.
You don't give an elite hacker a code monkey language. I want my AI to be an elite hacker, not simply a code monkey. If I expect my AI to work at an elite level, I should give it elite tools, not a code monkey language.
Joe Marshall: RFC 6238 in Common Lisp [Planet Lisp]
I wanted to implement 2FA as per RFC 6238. This is the Time-based One-Time Password (TOTP) algorithm that is used by Google Authenticator and other 2FA apps. This was originally `vibe coded`. The vibe coding got me 80% of the way there, and I made a manual pass to turn it into a more functional style.
Feel free to use this under an MIT license.
;;; -*- mode: lisp; coding: utf-8-unix; -*-
;;; RFC 6238: TOTP (Time-Based One-Time Password Algorithm) implementation in Common Lisp
;;; This implementation provides functions to generate a
;;; base32-encoded secret, create a QR code URI for authenticator
;;; apps, and verify TOTP codes based on the current time. It
;;; adheres to the specifications outlined in RFC 6238 and RFC 4226.
;;; Dependencies: cl-base32, ironclad
(in-package "TOTP")
(defun generate-secret (&optional (length 10))
(cl-base32:bytes-to-base32 (ironclad:random-data length)))
(defun generate-qr-uri (secret email &key (issuer "JRM-Code"))
(format nil "otpauth://totp/~A:~A?secret=~A&issuer=~A" issuer email secret issuer))
(defun pack-time (time-step)
"Converts an integer time-step into an 8-byte, big-endian array as required by RFC 4226 (HOTP).
Used to construct the message payload for the HMAC-SHA1 operation."
(let ((arr (make-array 8 :element-type '(unsigned-byte 8))))
(dotimes (i 8 arr)
(setf (aref arr (- 7 i)) (ldb (byte 8 (* i 8)) time-step)))))
(defun universal-time->unix-time (universal-time)
(- universal-time 2208988800))
(defun universal-time->time-step (universal-time)
(floor (universal-time->unix-time universal-time) 30))
(defun mac->hash (mac)
"Extracts a 6-digit TOTP code from a 20-byte HMAC-SHA1 result using dynamic truncation (RFC 4226).
Takes the lower 4 bits of the final byte as an offset, extracts a 31-bit slice starting at that offset,
and returns the value modulo 1,000,000 to produce the final 6-digit integer."
(let ((offset (logand (aref mac 19) #x0F)))
(mod (logand #x7FFFFFFF
(logior (ash (aref mac offset) 24)
(ash (aref mac (+ offset 1)) 16)
(ash (aref mac (+ offset 2)) 8)
(aref mac (+ offset 3))))
1000000)))
(defun mac->hash-string (mac)
(format nil "~6,'0D" (mac->hash mac)))
(defun generate-hash-string (secret-bytes time-step-bytes)
"Performs the HMAC-SHA1 cryptographic operation using the decoded secret and the packed time-step,
then dynamically truncates and formats the resulting MAC into a zero-padded 6-digit string."
(let ((hmac (ironclad:make-mac :hmac secret-bytes :sha1)))
(ironclad:update-mac hmac time-step-bytes)
(mac->hash-string (ironclad:produce-mac hmac))))
(defun verify-totp (secret user-code &key (time (get-universal-time)) (window 1))
"Verifies a user-provided 6-digit TOTP code against the base32 secret.
Defaults to the current universal time. The :window keyword determines the allowable drift in 30-second steps
(e.g., a window of 1 checks the previous, current, and next 30-second intervals).
Returns T if the code matches within the window, otherwise NIL."
(let ((secret-bytes (cl-base32:base32-to-bytes secret))
(user-string (format nil "~6,'0D" (parse-integer (string user-code) :junk-allowed t)))
(current-step (universal-time->time-step time)))
(do ((step (- current-step window) (1+ step))
(limit (+ current-step window)))
((or (string= (generate-hash-string secret-bytes (pack-time step)) user-string)
(> step limit))
(not (> step limit))))))
Get it at http://github.com/jrm-code-project/totp/
Joe Marshall: Lisp-p [Planet Lisp]
I needed a function that could tell whether a string was a valid Common Lisp program. In theory, you could just call read on the string and see if it throws an error, but I don't want to throw random text at read. It could contain a reader macro or something nasty. It also would intern a ton of random symbols into the current package. I wanted a function that would act mostly like the reader, but not CONS any data or intern any symbols.
So I vibe coded a function that does just that. It implements the reader algorithm as a state machine but does not actually read any data. The state machine tracks the list and string delimeters and tokenizes the string, but it discards the tokens and does not intern any symbols. It just checks that the state machine is in `top level' state at the end of the string. If it returns NIL, the string is definitely going to cause an error if you try to read it. If it returns T, it does not guarantee that the string represents a valid Common Lisp program, but rather that it is not obvious that the reader will throw an immediate error.
A curious edge case is that of an unpunctuated string. The words in the string will read as a simple sequence of symbols, which is perfectly valid.
The code is in lisp-p on GitHub.
You call the function lisp-p with a string or a stream
and it will return T or NIL.
Ambiguity or clarity? [Seth's Blog]
This is a choice we rarely name.
Putting effort into how much ambiguity we can handle can define a career and give us a path forward in our social and cultural interactions as well.
Our desire for clarity is based on safety and how we think about risk. If you know exactly what to expect, you won’t be held responsible for things that feel like they’re out of your control.
Clarity pushes us to put things in a category, a predictable box, well-labeled.
Ambiguity, on the other hand, is the nature of the future. All interactions with other people, with complex systems and with what hasn’t happened yet are somewhat unpredictable.
That range of outcomes is where possibility lies.
“I’m not sure.”
“This might not work.”
“We’ll be okay.”
Pretending that the ambiguous is certain is a short-term sort of bravado that works in the movies and politics but not in real life.
For the rest of us, there’s the chance to embrace the soft edges of ‘perhaps’ on our way to make things better.
HT to Seth B.
View From a Hotel Window, 11/7/26: Cleveland Airport [Whatever]

There are bodies down there, I can feel it. But it’s certainly a change from a parking lot.
My event today, at the Hudson Library, has already happened and it was lovely. Tomorrow, I am in Nashville, at Novelette Booksellers, and the event starts at 6:30. Come say hello! Here’s the ticket information.
— JS
Dirk Eddelbuettel: prrd 0.1.0 at CRAN: Now With Real Concurrency [Planet Debian]

A new release of prrd arrived at CRAN today, and has already been built for r2u and on r-universe. The prrd package facilitates the parallel running [of] reverse dependency [checks] when preparing R packages. It is used extensively for releases I make of Rcpp, RcppArmadillo, RcppEigen, BH, and others.

The key idea of prrd is simple, and described in some more detail on its webpage and its GitHub repo. Reverse dependency checks are an important part of package development that is easily done in a (serial) loop. But these checks are also generally embarassingly parallel as there is no or little interdependency between them (besides maybe shared build depedencies). See the (somewhat dated) screenshot (running six parallel workers, arranged in a split byobu session).
This release updates internals to allow for greater concurrency.
SQLite is used as the
backend, both for the job queue (managed via the liteq package) as
well as for storing actual reverse-dependency test results. It is
well-known that SQLite copes
quite well with multiple readers. Multiple concurrent
writers are more challenging. We tended to get by via
BEGIN EXCLUSIVE pragma use, but still get occassional
issue even at a somewhat moderate concurrency levels. After some
back and forth and trying a few approaches, more recently we
established one first solution relying on very explicity (OS-level,
filesystem-based) locking via package filelock. That
worked.
We mentioned this in an
old liteq issue that had circled around the same
question with a number of posts over the years, but no resolution.
This comment seemingly awoke Gábor, and he nailed this
years-open issue with a fine pull request deploying BEGIN
IMMEDIATE and well as a loop around tryCatch to
not immediately fail. I borrowed/ported that approach to prrd and we now
have a second solution (and no longer need filelock). On a
somewhat better server with enough cores and memory, I am now
running eighteen concurrent workers—watched via three
multi-pane byobu windows. Works
like a charm without issues. At last! A big thanks to Gábor for finding another
solution, and especially that only relies on SQLite.
The release is summarised in the NEWS entry:
Changes in prrd version 0.1.0 (2026-11-07)
Concurrent operations are now supported via updated sqlite semantics borrowed with appreciation from liteq
This follows an interim solution relying on filelock use; however this later package is not needed so no increase in dependencies
Courtesy of my CRANberries, there is also a diffstat report for this release.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
MorphOS 3.21 released with new office suite [OSnews]
About five months after the previous release, the MorphOS team has released MorphOS 3.21. It brings the usual list of big fixes and smaller improvements, but there’s a few big ticket items in here as well.
MorphOS 3.21 introduces BasicWorks, an office suite made up of CellBasics and PageBasics. It offers document and spreadsheet authoring and loads and saves Microsoft Office and OpenOffice documents. Also new are NVMEMount, an auto-mounter for booting from and mounting NVMe partitions, and the Marbles and Cyber 3D blankers.
Graphics performance has been improved, with a faster Radeon driver on cards with little video memory thanks to GART backed bitmap transfers, quicker TinyGL texture copies, hardware accelerated antialiased text in TTEngine and much faster color SVG glyph rendering in Cairo. The Bcm43xx wireless driver has been substantially reworked, with automatic transmit rate selection, updated firmware and numerous connection fixes. PowerBook and iMac hotkeys are now fully configurable.
↫ MorphOS 3.21 release announcement
The BasicWorks office suite has been in the works for a while now, and more information on it can be found in a thread on the MorphZone forums and on the website for the spreadsheet component of the suite, CellBasics. The formula loaders and xlsx loaders are ports of open source projects, but the rest of the application is new code based on ObjectiveC++ and Cairo/Harfbuzz. It uses its own file format, but can import csv and xslsx files, so I’m assuming the same more or else applies to the word processor (but with docx, of course).
Alongside MorphOS 3.21 also comes a new release for Wayfarer, the web browser the Amiga-inspired operating system uses. Wayfarer 12.0 moves to WebKitGTK 2.52.5 (which was released in July of 2026, so it’s quite up to date), and now uses the Skia graphics library. R300-R500 Radeons will render websites with Skia-GL for some massive performance improvements, helped further along by a slew of additional performance optimisations. Adblocking has been improved as well, YouTube should work a lot better now, and much more.
The full release notes for MorphOS 3.21 give you all the details.
The port that does not exist [OSnews]
Ask any program to listen on port 0 and it will hand you a socket on port 47193…or 58037…or whatever the kernel felt like that day. Port 0 is not a port you can have. It is the number you pass when you want the operating system to pick one for you.
But a TCP header is just bytes. The destination port field is 16 bits wide, and
0x0000fits in 16 bits as well as anything else does. Nothing on the wire stops a packet from being addressed to port 0. Your tools will refuse it, your browser will block it, and your scanner’s default port list skips it, because everyone agrees it isn’t a real port.Which makes it a pretty good place to hide things, whether anyone meant to or not. So we did some TCP cowboy shit & port scanned the entire fucking internet for open ports on port 0, which uncovered some interesting unexpected findings.
↫ acidvegas
An awesome and entertaining read. Don’t skip this one.
Windows 11 27H2 might be a more substantial upgrade [OSnews]
A little tidbit of news regarding the nest major update to Windows, known as Windows 11 27H2. Apparently, it’s going to come with some more serious changes to the codebase, therefore necessitating a full operating system swap instead of a mere enablement package, much like Windows 11 24H2 was.
For those who need a refresher, Microsoft has long been rumored to be running on a three-year release cadence and for a while, it was even thought that the company would launch Windows 12 in 2H 2024. That evidently didn’t happen, as instead we got Windows 11 24H2, but it was a major upgrade, a full OS swap compared to Windows 11 23H2 and 22H2. Essentially, it looks like every three releases, Microsoft is performing a full swap with major changes in the underlying codebase, and it seems to line up with Windows 11 27H2 as well. At the moment it’s not known if system requirements will change or not.
↫ Sayan Sen at Neowin.net
Microsoft is currently testing adding support for Intel’s Advanced Performance Extensions, which should yield improved 64bit performance and reduced power consumption. It makes sense to assume this support will be coming with Windows 11 27H2, which should hopefully lead to tangible performance improvements across the board.
Also, there’s going to be a new default wallpaper. Be still my beating heart.
And this is what my long-form Markdown-based posts look like.
Flushing is a cultural center!?? [Scripting News]
This is so
heartening. America never disappeared, it just was asleep,
lulled into naivete by the dashing figure Trump cast on his TV
show, and he said some of the right things in his 2016 campaign.
Truthful things people had never heard from a candidate and wanted
to hear and wanted to believe something would be done to make it
better. I got this perspective listening to Dave Chappelle explain
it. And Trump helped us buy straight talk from candidates. We're
getting it now from the new crop of inspiring senators and
governors. Remarkable times we live in, such highs and lows.
People from NY, such as myself, saw right through him. A typical bully -- we knew these people in grade school. There are people in my freaking family who are like Trump on a personality level. They push people around, but if you stand your ground they fade away.
Well now we've gotten together -- that's all we ever had to do -- work with each other -- and remember the greatness of the country that gave a home to us or our ancestors. We have not only got a big heart but we're also collectively smart enough to know that we always need to be growing, and for that we need fresh new citizens from around the world to keep things interesting.
I grew up in Flushing, NY -- part of NYC -- which was a sleepy Queens neighborhood made up of mostly Catholic and Jewish families when I was a child. Over the years, it became more Chinese and Korean. And it now has one of the best bagel places in the city. Everything is more alive there now. Main Street is both familiar and foreign.
(Utopia Bagels, on Utopia Parkway, technically in Whitestone.)
My mother, a refugee from the German Nazis as a child, didn't like that the neighborhood was changing, but I think it's fine, it's what makes the US and NY in particular so great. And while I still love a NYC diner breakfast or deli lunch, the Chinese and Korean food in Flushing is world-renowned and very tasty.
It still freaks me out that Flushing is famous for something so totally un-Flushing!
This election was like the 2008 election on steroids. We saw the election of Obama as a turning point. It was, but after his term was over, we snapped back to our slavery roots in reaction. This year, we re-asserted our love of country, not wanting to deprive the US of the fresh inspiration of immigrants of all races and genders, faiths, and and beliefs both religious and political. And once we, collectively, saw the aftermath of our turn toward fascism said, passionately -- no way, not here. The US is a melting pot. And we're good at it.
No one knew until Tuesday whether the old America of our parents and grandparents was still here, thankfully it is.
Now we have to continue to work together, to acknowledge our differences but also celebrate what we agree on. We are a democracy. We elect leaders but it is our country. The Trumps are still struggling with that, but don't ever forget it. This is the country that works, going through a really rough period.
| Feed | RSS | Last fetched | Next fetched after |
|---|---|---|---|
| @ASmartBear | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| a bag of four grapes | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| Ansible | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| Bad Science | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| Black Doggerel | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| Blog - Official site of Stephen Fry | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| Charlie Brooker | The Guardian | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| Charlie's Diary | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| Chasing the Sunset - Comics Only | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| Coding Horror | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| Comics Archive - Spinnyverse | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| Cory Doctorow's craphound.com | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| Cory Doctorow, Author at Boing Boing | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| Ctrl+Alt+Del Comic | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| Cyberunions | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| David Mitchell | The Guardian | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| Deeplinks | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| Diesel Sweeties webcomic by rstevens | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| Dilbert | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| Dork Tower | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| Economics from the Top Down | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| Edmund Finney's Quest to Find the Meaning of Life | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| EFF Action Center | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| Enspiral Tales - Medium | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| Events | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| Falkvinge on Liberty | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| Flipside | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| Flipside | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| Free software jobs | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| Full Frontal Nerdity by Aaron Williams | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| General Protection Fault: Comic Updates | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| George Monbiot | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| Girl Genius | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| Groklaw | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| Grrl Power | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| Hackney Anarchist Group | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| Hackney Solidarity Network | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| http://blog.llvm.org/feeds/posts/default | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| http://eng.anarchoblogs.org/feed/atom/ | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| http://feed43.com/3874015735218037.xml | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| http://flatearthnews.net/flatearthnews.net/blogfeed | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| http://fulltextrssfeed.com/ | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| http://london.indymedia.org/articles.rss | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&_render=rss | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| http://planet.gridpp.ac.uk/atom.xml | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| http://shirky.com/weblog/feed/atom/ | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| http://thecommune.co.uk/feed/ | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| http://theness.com/roguesgallery/feed/ | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| http://www.airshipentertainment.com/buck/buckcomic/buck.rss | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| http://www.airshipentertainment.com/growf/growfcomic/growf.rss | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| http://www.airshipentertainment.com/myth/mythcomic/myth.rss | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| http://www.godhatesastronauts.com/feed/ | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| http://www.tinycat.co.uk/feed/ | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| https://anarchism.pageabode.com/blogs/anarcho/feed/ | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| https://broodhollow.krisstraub.comfeed/ | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| https://debian-administration.org/atom.xml | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| https://elitetheatre.org/ | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| https://feeds.feedburner.com/Starslip | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| https://feeds2.feedburner.com/GeekEtiquette?format=xml | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| https://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 | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| https://hackbloc.org/rss.xml | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| https://kajafoglio.livejournal.com/data/atom/ | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| https://philfoglio.livejournal.com/data/atom/ | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| https://pixietrixcomix.com/eerie-cutiescomic.rss | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| https://pixietrixcomix.com/menage-a-3/comic.rss | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| https://propertyistheft.wordpress.com/feed/ | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| https://requiem.seraph-inn.com/updates.rss | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| https://studiofoglio.livejournal.com/data/atom/ | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| https://thecommandline.net/feed/ | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| https://torrentfreak.com/subscriptions/ | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| https://web.randi.org/?format=feed&type=rss | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| https://www.baen.com/baenebooks | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| https://www.dcscience.net/feed/medium.co | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| https://www.DropCatch.com/domain/steampunkmagazine.com | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| https://www.DropCatch.com/domain/ubuntuweblogs.org | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| https://www.DropCatch.com/redirect/?domain=DyingAlone.net | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| https://www.freedompress.org.uk:443/news/feed/ | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| https://www.goblinscomic.com/category/comics/feed/ | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| https://www.loomio.com/blog/feed/ | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| https://www.newstatesman.com/feeds/blogs/laurie-penny.rss | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| https://www.patreon.com/graveyardgreg/posts/comic.rss | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| 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 | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| https://x.com/statuses/user_timeline/22724360.rss | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| Humble Bundle Blog | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| I, Cringely | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| Irregular Webcomic! | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| Joel on Software | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| Judith Proctor's Journal | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| Krebs on Security | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| Lambda the Ultimate - Programming Languages Weblog | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| Looking For Group | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| LWN.net | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| Mimi and Eunice | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| Neil Gaiman's Journal | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| Nina Paley | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| O Abnormal – Scifi/Fantasy Artist | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| Oglaf! -- Comics. Often dirty. | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| Oh Joy Sex Toy | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| Order of the Stick | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| Original Fiction Archives - Reactor | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| OSnews | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| Paul Graham: Unofficial RSS Feed | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| Penny Arcade | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| Penny Red | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| PHD Comics | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| Phil's blog | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| Planet Debian | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| Planet GNU | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| Planet Lisp | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| Pluralistic: Daily links from Cory Doctorow | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| PS238 by Aaron Williams | XML | 12:56, Thursday, 12 November | 13:44, Thursday, 12 November |
| QC RSS v2 | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| Radar | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| RevK®'s ramblings | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| Richard Stallman's Political Notes | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| Scenes From A Multiverse | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| Schneier on Security | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| SCHNEWS.ORG.UK | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| Scripting News | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| Seth's Blog | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| Skin Horse | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| Tales From the Riverbank | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| The Adventures of Dr. McNinja | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| The Bumpycat sat on the mat | XML | 12:21, Thursday, 12 November | 13:01, Thursday, 12 November |
| The Daily WTF | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| The Monochrome Mob | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| The Non-Adventures of Wonderella | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| The Old New Thing | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| The Open Source Grid Engine Blog | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| The Stranger | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| towerhamletsalarm | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| Twokinds | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| UK Indymedia Features | XML | 12:56, Thursday, 12 November | 13:38, Thursday, 12 November |
| Uploads from ne11y | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| Uploads from piasladic | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |
| Use Sword on Monster | XML | 12:56, Thursday, 12 November | 13:43, Thursday, 12 November |
| Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily | XML | 12:28, Thursday, 12 November | 13:14, Thursday, 12 November |
| what if? | XML | 12:28, Thursday, 12 November | 13:09, Thursday, 12 November |
| Whatever | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| Whitechapel Anarchist Group | XML | 13:00, Thursday, 12 November | 13:49, Thursday, 12 November |
| WIL WHEATON dot NET | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| wish | XML | 12:42, Thursday, 12 November | 13:27, Thursday, 12 November |
| Writing the Bright Fantastic | XML | 12:42, Thursday, 12 November | 13:26, Thursday, 12 November |
| xkcd.com | XML | 12:42, Thursday, 12 November | 13:25, Thursday, 12 November |