The Monday Morning Agent: Defining the Tush Push [Radar]
“Tush push” never appears in our roughly 265,000 play descriptions from 2021 through the current season. Neither does “brotherly shove,” and “sneak” turns up only twice. So when we asked our AI analyst to tackle “Ban the Tush Push” in the October 26 episode of The Monday Morning Agent, we first had to define the play using the available data. We saved that definition in a shared data dictionary, the agent’s first durable memory, so future runs must use the same definition and explain its limitations.
A quarterback takes the snap, and teammates push him forward. Our data identifies the ball carrier but doesn’t record whether teammates pushed him. We can check whether a snap came from shotgun, but we can’t reconstruct the team’s specific formation.
We explored five possible definitions, from a quarterback sneak with teammates pushing to any rush on third or fourth and short. Each definition changes which plays the analysis counts. The broadest one would count running backs too, which takes us away from the play people are arguing about.
So before you let an agent query a term everyone seems to understand, write its definition in plain language. Then go clause by clause and ask whether the data can support it. A familiar name doesn’t guarantee a usable label.
We settled on a quarterback run with one yard or less to go, from under center. The agent counts qualifying quarterback sneaks whether anyone pushes the runner or not. We’re measuring a substitute for the tush push, and we can’t isolate the shove’s contribution.
Even “quarterback” needs a definition. The fields available to our tool don’t include player position, so the tool identifies the quarterback as the player who threw the most passes for that team in that game. That’s another assumption to check when you interpret the results.
The dictionary entry has to explain the play in plain language and state what the data can’t tell us. Otherwise, readers could assume a “tush push” result counts plays with a push. Keep the limitation beside the definition so the agent can repeat it with the result.
The dictionary holds one JSON file per definition, with a fixed structure. The agent can add an entry, but it can’t change an existing one. A different definition needs a new name. That keeps the meaning attached to an earlier result from quietly changing later.
Before each run, the script that launches the agent, called the runner, saves a copy of the dictionary and adds its contents to the agent’s instructions with the date. The agent searches for an existing definition first. If it finds one, it uses it. If it doesn’t, it can write a new entry using the fields the tool supports.
In the demonstration, the tool refused the request for “tush push” because no entry existed. The agent then created a definition and queried it.
Writing “use the dictionary” in a policy doesn’t make the agent obey. We’re building this around instruction, check, and enforcement. The policy tells the agent to use and cite an entry. The tool accepts definitions from the dictionary rather than a definition improvised in a query. If the answer lacks the required ruling, the runner retries once, then stops if it’s still missing.
We expanded the agent’s permissions to let it add a dictionary entry alongside querying the plays. Test whether your agent uses its shared definitions and whether someone reading the answer can find them.
Across five complete seasons, the defined play converted 78.3% of the time, compared with 70% for other short-yardage rushes. That’s an 8.3 percentage point advantage.
While the agent found an advantage, it didn’t treat the conversion gap as sufficient evidence for a ban. Those numbers describe conversion rates for our defined group of plays. They don’t establish whether the NFL should ban a play, and they can’t tell us how much pushing helped.
A viewer raised that distinction during the discussion. Whether a successful play belongs in the game requires human judgment. Conversion rates can inform that conversation, but they can’t resolve questions about safety or what people want football to look like.
On November 9, we’ll tackle “Kickers Are Too Good Now” and give the agent written visualization standards. An agent can generate a chart in seconds. We’ll work on rules for presenting trends and making comparisons so readers can see what the data actually supports.
O’Reilly members can sign up on the O’Reilly learning platform to join us live on November 9, 8:00am–8:45am PT / 11:00am–11:45am ET. Everyone can follow along on Radar every other Monday, with a brief pause for the holidays. Watch episode two above, and we’ll build on it in the next session.
[$] The second part of the 7.4 merge window [LWN.net]
The 7.4 merge window, which closed on November 1, included a record-breaking 18,591 non-merge changesets. That is almost as many as the entire 7.3 development cycle, which had 18,765, itself a record breaker. Of those, 11,838 landed after the article covering the first part of the merge window. Most of those were bug fixes of various forms; it seems as though bug fixes may be crowding out feature additions across the open-source ecosystem to some extent. Still, a good number of new features were included, and a handful removed, in the tail end of the merge window.
Podcast:
A web for writers. How Twitter has become a blogging platform,
but how the differences between its editor and Claude's editor
illustrates how we need to change things if we want the web to work
well for writing. We've been living with a bad situation ever since
we started writing in a web browser. 10 minutes. I was making an
effort not to wonder off like I always do. I did do a bit of
wandering, but also didn't forget why I picked up the phone to
record it.
Sam Altman wants to take your RAM [OSnews]
“From a global allocation perspective, actually, it’s quite terrible to have everybody have a bunch of the world’s limited supply of DRAM sitting in their own computer and being used 5% of the time,” Altman said. “You want maximum utilization in the cloud if you’re trying to deal with this very supply-constrained environment. And somehow many people’s intuition is the opposite of that.”
↫ Andrew E. Freedman at Tom’s Hardware
I’m installing a 32bit operating system without support for physical address extension on my laptop with 64GB of RAM, just because I can.
My Voting Recommendations, 2026 [Whatever]

They are simple: For Christ’s sake, don’t vote for a single fucking Republican.
I don’t have to tell you why, you know why already, but I’ll go ahead and say it: Because the Republican party has a corrupt doddering fascist grifter at its head, who cares far more about lining his pocket than he ever did about the state of the nation, and he’s remade the entire political organization into his image. On his watch and with his approval we’ve gotten into a war we had no plan for, the cost of gas and groceries have spiked, measles and other easily curable diseases have come roaring back, a masked, internal secret police is snatching people from the streets without due process, white supremacy has shoved its way back into official policy, and he’s turned his back on long-standing allies to gleefully lick the boots of the worst authoritarians in the world.
Anyone in the GOP who had a problem with any of this is gone out of Washington and has been for years, replaced by simpering toadies. On the state and local levels, Republican politicians have gleefully raced to become mini versions of this wholly repugnant person. Those who haven’t, still accept what the GOP has become and do little if anything to stop it. The whole party needs to burn down to the ground, the ground needs to be salted and every current office holder in it, certainly on the national level, shamed out of public life.
BUT, I will settle for all y’all just not voting a single one of those motherfuckers.
“But the Democrats are just the same!” Man, shut the fuck up. No one with a mental acuity above being able to push a crayon through a dollar store activity book maze thinks that’s even remotely true. I’m not going to argue with you that the Democrats, each individual or the party as a whole, are a paragon of civic virtue, but this year the options are “actual fucking corrupt and lawless fascism” or not. I regret to say we have a two-party system where third parties act as spoilers, not legitimate competitors — there’s a reason why pro-GOP political action committees funded a huge mailer push for the socialist senatorial candidate in my state — and all the ways to fix that fact are beyond the purview of this particular election. Here in 2026, the most effective way to blunt the reach of actual corrupt and lawless fascism runs through the Democrats.
Here in Ohio, all of these facts are very much in evidence. The Republican candidate for governor, Vivek Ramaswamy, is one of the president’s special projects and every pillar of his platform — build more data centers! Shut down a bunch of the state’s universities! Tax cuts for the rich that will turn the state’s infrastructure into dust! — is generally unpopular, and so is he as a human. This was one reason why Ramaswamy decided to air that absolutely reprehensible ad against his opponent Amy Acton, featuring her long-estranged mother who, when it came down to it, chose the husband who was molesting and abusing her children over the children themselves. The only people this ad pleased were our morally horrible president and his obsequious, personality-less vice-president. Everyone else was horrified. Ramaswamy, confronted with the general horror at the ad, doubled down on it.
Meanwhile, Amy Acton: largely colorless centrist Democrat who caved unnecessarily on certain social issues (her no-trans kids in sports cave in a state where 0.0015% of all student athletes were transgender was particularly spineless) and who in any other election year — or this one, had former Ohio State Football coach Jim Tressel won the primary over Ramaswamy — would be a speed bump to yet another Republican win for the governorship. But it’s 2026 and the polls (which you should never trust ever) show her with a slight lead over Ramaswamy, because this year maybe enough people in Ohio have figured it out: It’s actual corrupt and lawless fascism, or not.
Acton would do fine as governor! Better than Ramaswamy, that’s for damn sure. Likewise, it would be lovely to have Sherrod Brown back representing Ohio as senator over Jon Husted, who’s a grasping tool and has been for his entire benighted political career. The Ohio election will be far closer than it has any right to be, because political inertia is a thing, and also, especially in the rural areas of Ohio, voting Democrat would be like rooting for Michigan in The Game. I expect 2026 in Ohio will be decided as much on MAGA folks sitting out this vote as Democrats being energized and independents being disgusted with the GOP. Likewise in Texas and a few other places. We will see. We will all see.
(For the avoidance of doubt, I do not expect Darke County, where I live and which went 82% for Trump in 2024, to turn blue. Likewise OH-8, the congressional district I vote in, has not gone Democratic since the Great Depression and will not this year either. But in both cases if the GOP winning percentages go down from the last election, I’ll find that interesting and maybe even encouraging. Note that OH-8 has been rejiggered in the latest Ohio gerrymander to be even more red than it was before, so that will need to be factored in. Even so.)
I encouraged people to vote early and in person if they could, as a hedge against the fuckery this administration is almost certainly planning on election day and beyond. In most places it’s now too late to vote early, and if you have a mail-in vote, the USPS has been intentionally nerfed to make it unlikely your vote will arrive in time. If you have a mail-in vote that you still haven’t put into the mail, drive it to an actual drop-off box or board of election. Everyone else who has not already voted, carve out time in your schedule tomorrow to vote. It’s important.
And don’t vote for any Republicans. Let their manifest exile begin this year. Let it be compounded in 2028. Let them wander in the wilderness for a very long time. They deserve it.
— JS
CodeSOD: Get It Now [The Daily WTF]
"TODO" comments are an inescapable part of our work. Yes, yes, you should just do it right the first time, everything should probably have a ticket in whatever your ticket system is for visibility, but at some point, you're just going to leave a "TODO" behind.
But hopefully, the TODO gets TODONE, which is not what happened in Sam C's codebase.
function getnow()
{
//TODO
return '2012';
}
It's the XKCD, but for years. Or WHAT YEAR IS IN memes.
At least it's a relatively recent year, not some far off point from over a decade ago.
Wait. 2012 was how long ago? That can't be right. It was just a few years ago!
Sneaking into the auditorium for the Windows 2000 launch rehearsal [The Old New Thing]
The Windows 2000 launch in San Francisco was accompanied by an expo, and a large number of Windows 2000 team members were dispatched to run the various booths and stations, give informal presentations on the new features of Windows 2000, and answer technical questions from the various attendees. And from among the people who were sent to the expo, a smaller group was selected to attend the launch event itself in person.
Related reading: A ticket to the Windows 95 launch.
After a few of us arrived early at the Civic Auditorium for the launch event, we had to entertain ourselves until the doors opened. There was some speculation as to who the celebrity host would be, since it hadn’t been announced. One of my colleagues tried to sneak into what looked like a VIP tent.¹ I, on the other hand, went exploring.
I found an unlocked door that took me into the empty upper level of the main auditorium.
I took a seat and tried not to be noticed.
The stage was set up with a 10-meter tall mock laptop, screens to the left and right of the stage for projecting slides, prerecorded videos, or to get a better look at on-stage close-ups, gray curtains unobtrusively hung to shield from view what would turn out to be various surprises throughout the event, and various other desks, demo areas, and even an airplane cabin set.²
While I sat and took in the complexity of the stage, there was an announcement that they would be rehearsing the opening in one minute. The lights dimmed in preparation. The lid of the giant laptop closed very slowly.
About ten minutes after the announcement, the rehearsal actually began.
The laptop lid opened, and on the laptop screen, it looked like someone was signing into Windows 2000, and then the mouse clicked the Start button. This led to a video montage, and when the montage was over, a voice announced, “Ladies and Gentlemen, please welcome Patrick Stewart!”
Oh my goodness, Patrick Stewart is going to be the presenter for the Windows 2000 launch!
Mere seconds later, onto the stage bounded… a crew member wearing a headset pretending to be Patrick Stewart so that the camera and lighting crew could make sure they were properly positioned.
Okay, that’s the end of the rehearsal. The lights come back on, and the auditorium once again buzzes with the sound of equipment being moved and people discussing things.
I left the auditorium and went back to join the crowd of people waiting to get in. I didn’t tell them who the host was.
The event itself seemed to go off pretty much as planned. With the real Patrick Stewart.
Patrick Stewart had such a commanding presence. If he had come out on stage and announced, “It is the dawn of a new era: The era of lime Jell-O”, people would say, “Yeah, lime Jell-O, I need to upgrade to lime Jell-O.” But instead of trying to spark a new dessert trend, he talked about Windows 2000, reading words from a teleprompter that he almost certainly didn’t understand, but he made them sound great.
¹ My colleague eventually returned with a Commemorative Edition boxed copy of Windows 2000.
² The airplane cabin was used for a sketch that demonstrated mobile business computing. The demoer took their laptop on a plane trip, where they happened to sit next to a character named William Wentworth, portrayed by actor John O’Hurley, president of William Wentworth Worldwide. (He gave his email address as www@www.com.) The sketch demonstrated infrared file sharing and other mobile scenarios. Remember infrared file sharing? Of course you don’t.
The post Sneaking into the auditorium for the Windows 2000 launch rehearsal appeared first on The Old New Thing.
Independent Digital Media Is Not a Privilege Governments Can Revoke: The Fight to Save Egypt’s Mada Masr [Deeplinks]
On November 11, Lina Attalah, founder and editor-in-chief of the independent Egyptian news outlet Mada Masr, will face trial for the second time in just two weeks. This time, she faces charges of spreading false news, an accusation that has become one of the Egyptian government's most frequently used tools for prosecuting journalists.
The trial follows a conviction on October 27, when Attalah was found guilty of managing an unlicensed news website. The Mada Masr team had repeatedly applied for a license, but their attempts went unacknowledged. The proceedings took place in a single hearing, which Mada Masr states included serious violations of her right to a fair trial. She was sentenced to the maximum fine of 3 million Egyptian pounds (approximately 55,000 USD), forcibly removed from the courtroom, and held for seven hours until the fine was paid. The court also ordered Mada Masr's closure and the confiscation of all equipment belonging to the organization.
The current wave of repression has also targeted Matsada2sh, a fact-checking and open-source intelligence initiative. Its entire six-person newsroom was violently arrested, illegally detained, and interrogated under torture before being charged with terrorism-related offenses and spreading false news. The team remains in pretrial detention.
According to CPJ, at least 25 other journalists are currently incarcerated in Egypt.
Governments seeking to control the flow of information increasingly rely on a combination of legal harassment, financial pressure, criminal prosecution, and restrictions on the infrastructure that makes independent publishing possible. Egypt's media licensing regime is a particularly troubling example. Requiring news organizations to obtain government authorization to operate creates an obvious mechanism for restricting who gets to publish and whose voices are allowed to reach the public.
The charge of spreading false news is similarly dangerous. Governments around the world have increasingly invoked the language of misinformation to justify restrictions on speech, often without meaningful safeguards against political abuse, as we laid out in our recent submission to the United Nations Office of the High Commissioner for Human Rights. Governments should never be the arbiters of which reporting is permissible, particularly when that reporting concerns their own conduct.
Founded in 2013, Mada Masr has spent more than a decade doing the kind of journalism that authoritarian governments find most threatening: documenting abuses, amplifying marginalized voices, and reporting on issues that powerful institutions would prefer remain hidden.
Its reporting has given torture survivors and the families of political prisoners a platform. It has opened space for debate about reproductive rights. It has brought frontline reporting from Sudan and Gaza, and stood alongside refugees facing xenophobic attacks and security crackdowns.
Emerging as a digital-first publication, in a media environment where traditional outlets were increasingly constrained, being purely digital allowed Mada Masr’s founders to build an independent publication outside the structures of legacy media.
At a time when only 43% of Egyptians had access to the internet, going fully digital meant taking a big risk, but it was one that has been rewarding: Despite being blocked by the Egyptian government since 2017, Mada Masr has continued to reach Egyptian and global audiences, and Attalah has received numerous accolades, including the Knight International Journalism Award, the Ordre des Arts et des Lettres, and a spot in TIME Magazine’s 100 most influential people (2020).
Mada Masr has also consistently engaged with technology and advocated for a free and independent internet for the global majority. It has covered dozens of hot-button tech stories in recent years, from Egypt’s Cybercrime Bill and Israel’s use of AI weaponry in Gaza, to stories about the “privacy chaos” caused by biometrics to more personal essays about the importance of the internet and tech. In August, they launched an open call for proposals on original critical reporting on artificial intelligence.
Mada Masr may be thoroughly Egyptian, but it doesn’t belong just to Egypt. Its team has made into a publication that represents the kind of independent, local, grounded journalism that international audiences need, particularly at a time when international reporting on state repression is lacking. They built on-the-ground networks to center local voices in Sudan (publishing in both English and Arabic on the conflict) and Gaza out of a sense of cross-border responsibility and solidarity.
This is precisely why its potential closure should concern everyone who cares about a free press. The ability to publish independently, investigate powerful institutions, and to share information without government interference is fundamental to the exercise of free expression.
The international community has repeatedly expressed concern about restrictions on press and internet freedom in Egypt. More than 100 organizations have now joined statements of solidarity with Mada Masr, and with Matsada2sh.
These expressions of support matter, particularly when journalists are increasingly isolated and under threat—but solidarity must also translate into sustained political and institutional pressure.
The international governments and institutions that maintain relationships with Egypt—including those in the European Union, the United Kingdom, and the United States—should make clear that the prosecution of journalists and the forced closure of independent media outlets are unacceptable.
The cases against Lina Attalah, Mada Masr, and Matsada2sh must be dropped. The journalists who remain in detention must be released. And Egypt's licensing regime, with its profound chilling effects on access to information and independent knowledge production, must be brought to an end.
There is a particular urgency to defending independent media at a moment when governments are finding ever more ways to restrict the circulation of information. Whether through internet shutdowns, platform restrictions, surveillance, or the criminalization of reporting, the result is often the same: fewer opportunities for people to understand what is happening around them, to challenge official narratives, and to hold power accountable.
We cannot allow the closure of one of Egypt's most important independent newsrooms and the prosecution of its editor-in-chief to become another routine episode in the global erosion of press freedom. Nor should we wait until the last independent journalists have been silenced before recognizing what has been lost.
To learn more about Lina Attalah in her own reads, you can read our Speaking Freely interview from January 2026.
What's on my plate [Scripting News]
Atlantis is the new version of UserLand Frontier that runs on modern systems. As I've said earlier, I'm surprised how well we covered all the bases, it's reliable, it works like Frontier works with a couple of important exceptions which I've now had it start working on.
I'm juggling too many projects now and things are slowing down. I've got Bonbon which is the Markdown browser (core feature of the Writer's Web), a new version of FeedLand in the works with some great new features, and making it so that the API for RSS.chat allows it to be used as the editor for any app that wants a nice Markdown-based wizzy writing tool. And there's actually more, but I want to ship some of this soon. So there's that too.
This is the danger of working with Claude Code. It works faster than I can keep up with, so there's a new version of FeedLand queued up for me to test, and I have to do that now before looking at the other projects.
Shutting the Door on the XCPE Botnet (Threat Intelligence) [LWN.net]
The Google Threat Intelligence blog describes, in great detail, the XCPE botnet, which has just been taken down.
Last week, Google and industry partners dismantled the XCPE backdoor which enrolled more than 1.3 million set-top boxes into a botnet. We assess with high confidence that the backdoor and botnet were intentionally developed, deployed, and operated for financial gain by Videostrong Technology Co., an Android Original Equipment Manufacturer (OEM) and Original Device Manufacturer (ODM).Videostrong monetized the backdoor by selling access to criminal affiliates and loading those affiliates' malware modules onto infected devices. These secondary modules were conducting ad-fraud; silently enrolling infected devices into residential proxy networks; and loading additional malware onto XCPE-compromised devices.
[$] Managing the kernel CVE flood [LWN.net]
We recently looked at how the kernel community is dealing with the firehose of vulnerability reports, but said little about how users of the kernel are responding. At the 2026 Linux Plumbers Conference, Amazon employees Dylan Johnson and Justinien Bouron discussed the problem from the point of view of engineers trying to keep AWS running and secure in the face of a storm of CVE disclosures. The kernel community's longstanding advice is to run current kernels, and that turns out to work — sort of.
Tor Browser 16.0 released [LWN.net]
Version 16.0 of the Tor Browser has been released. This is the first stable version based on Firefox ESR 153. Notable changes in this release include support for Linux on 64-bit Arm, redesigned settings, and a "generic window titles" feature to help prevent other applications from snooping on one's browser activity. Tor Browser for Android has had a number of interface updates to Google's Material Design 3 design language.
This release also follows Firefox in ending support for 32-bit x86 Linux systems. See the full changelog for all of the updates and bug fixes.
Security updates for Monday [LWN.net]
Security updates have been issued by AlmaLinux (firefox, java-17-openjdk, kernel, kernel-rt, mariadb:10.5, podman, python-jwt, python27:2.7, python38:3.8 and python38-devel:3.8, python39:3.9 and python39-devel:3.9, ruby:2.5, ruby:2.7, thunderbird, util-linux, and virt:rhel and virt-devel:rhel), Debian (chromium, eog, imagemagick, python-aiohttp, thunderbird, and vim), Fedora (asciinema, atuin, btrfs-backup-ng, clevis, gcc, janus, kernel, libheif, libreswan, mingw-expat, mupdf, nautilus, nicotine+, ntpd-rs, openscap, perl-DBI, python-streamlink, python3.12, retsnoop, ruby, rust-cargo-deny, rust-cargo-rpmstatus, rust-ctutils, rust-gst-plugin-reqwest, rust-rbspy, rust-resctl-bench, rust-rpki, rust-rustls-webpki, rust-sequoia-chameleon-gnupg, rust-sequoia-git, rust-sequoia-octopus-librnp, rust-webpki-root-certs, rust-webpki-roots, tpm2-tss, and vhs), Oracle (.NET 8.0, .NET 9.0, aspell, bind9.18, curl, httpd:2.4, java-1.8.0-openjdk, kernel, libXi, mod_auth_openidc:2.3, nodejs:24, python-pillow, and tomcat), Red Hat (libxml2), Slackware (libarchive), and SUSE (buildah, curl, docker, gnutls, nodejs22, and suseconnect-ng).
Practical Loop Engineering [Radar]
The following article originally appeared on Addy Osmani’s Elevate blog and is being republished here with the author’s permission.
The way that I typically work is I have anywhere between five and ten agents working at the same time in parallel. There are going to be some tasks that I’m very happy to delegate fully to agents, as long as I have a very clear idea of the stopping conditions and the constraints around them. And then there are going to be some tasks where I am going to want to keep a closer eye on and code-review what the agent is doing.
You’ve probably heard about loop engineering. I talked about it a couple of months ago when I wrote a big blog post about it.
A loop is an autonomous, self-correcting feedback cycle where an AI agent repeatedly acts, tests its results, and adjusts its approach until a specific goal is met.
There are now basically two core primitives you can think about. In Claude Code you have a goal primitive, which can drive a single bounded task forward until you’ve got a particular goal, like a measurable finish line that’s been met. And then loop reruns on a timer or a fixed interval, so you can use it to schedule changes.

I remember back before we had primitives baked into Claude Code and Codex: Loop engineering was heavily about setting up your own bash loop, a hand-rolled thing. That’s how I approached it. And you might remember earlier in the year, a number of us were playing around with the Ralph loop by Geoff Huntley. We were experimenting, we were sharing our workflows, we were sharing what worked and what didn’t, but it was largely on some of our personal projects where, if we ran into a wall, it didn’t really have a big cost to us.
And as we’ve tried to see what patterns and what aspects of loop engineering are now a little bit more baked, I think we have a clearer idea of how you babysit it. I can now largely rely on the output of the primitives in Claude Code and Codex. We’ve come a little way. But at the same time we need to be very diligent, because loop engineering, where you kind of leave it sitting alone and haven’t really thought about whether the end goal or the constraints have been well defined, can leave you in a problematic state. This is why there’s nuance when deciding to use it for an evergreen codebase without users or without as much historical complexity as a brownfield bank codebase.
The Claude Code team published their take on four kinds of loops, and it lines up with how I use the primitives (their write-up). Before we get to it, here’s my quick summary:

On the Claude Code team, we define loops as agents repeating cycles of work until a stop condition is met. We categorize a few different types of loops based on how they are triggered, how they are stopped, what Claude Code primitive is used, what type of task is most appropriate for each. Not all tasks require complex loops; start with the simplest solution and use these patterns selectively.
Every prompt you send starts a manual loop with you directing each turn. Claude gathers context, takes action, checks its work, repeats if needed, and responds. We call this the agentic loop. For example, ask Claude to create a “Like” button. It reads your code, makes the edit, runs the tests, and hands back something it believes works. You then manually check the work, and write the next prompt.
Their write-up walks each rung.
On goal-based loops:
Sometimes, a single turn is not enough, especially for more complex tasks. Agents do better when they can iterate. You can extend how long Claude keeps iterating by defining what done looks like with /goal. When you define the success criteria, Claude doesn’t have to make a determination on what is “good enough” and end the loop early. Each time Claude tries to stop, an evaluator model checks your condition and sends it back to work until the goal is met or a number of turns you define is reached. This is why deterministic criteria, such as number of tests passed or clearing a certain score threshold, are so effective. For example: /goal Get the homepage Lighthouse score to 90 or above, stop after 5 tries.
On time-based loops:
Some agentic work is recurring: the task stays the same and only the inputs change. For example, summarizing Slack messages every morning. Other work depends on external systems, and a simple way to interface with one is to check it on an interval and react to what changed. For example a PR, which may receive code reviews or fail CI. For these, you can trigger when Claude runs with /loop, which reruns a prompt on an interval. For example: /loop 5m check my PR, address review comments, and fix failing CI. /loop runs on your computer, so if you turn it off, it stops. You can move the loop to the cloud by creating a routine with /schedule.
And on proactive loops, the top rung:
Triggered by an event or schedule, with no human in real time. Stop criteria: each task exits when its goal is met. The routine itself runs until you turn it off. Best used for recurring streams of well-defined work: bug reports, issue triage, migrations, dependency upgrades. Managed usage by routing routines to smaller, faster models and using the most capable model for judgment calls.
Their verification advice is worth lifting whole, because it moves the manual checking into something Claude applies itself:
---
name: verify-frontend-change
description: Verify any UI change end-to-end before declaring it done.
---
# Verifying frontend changes
Never report a UI change as complete based on a successful edit alone.
Verify it the way a human reviewer would:
1. Start the dev server and open the edited page in the browser.
2. Interact with the change directly. For a new control (button, input,
toggle): click it, confirm the expected state change, and screenshot
before/after.
3. Check the browser console: zero new errors or warnings.
4. Use the Chrome Devtools MCP, run a performance trace and audit
Core Web Vitals.
If any step fails, fix the issue and rerun from step 1 - do not hand
back partially verified work.
The way that I use goal is for building any specific piece of work until it’s proveably done. For example, you can use a goal to say: “Make sure that this experience loads in five seconds, keep going until it’s done.” And it will continue to use an independent evaluation check to keep checking if the completion criteria has been met. What’s better is to be even more specific about what tooling is being used.
As for real goals that I’ve run to a number, there’s a few things that I’ve done. I’ve used goals for running through GitHub issues: “Review and close the last 10 issues,” or “Review and move the last 10 issues forward,” something like that. And that’s semi-open-ended, right? Or “Let’s make this page load 50% faster.” Sometimes that works well, sometimes it doesn’t, but it’s really about the experimentation.

Loop is a little bit more of a scheduler, so it keeps an eye on something or repeatedly executes a pattern on some cadence. Think of it a little bit like a cron. It’s best for doing things like polling logs or monitoring external states. You could use it for potentially checking in. If there are repetitive tasks you find yourself doing on some cadence, loop is pretty good for that.

I use probably between five and ten agents every day. Typically I’ll max out at about five concurrently. And some of those tasks might be ones that are a little bit safer. So maybe it’s: “Hey, I implemented this feature, go write the documentation for it.” Or “Go double check that we have sufficient test coverage.” Or something in that vein. If I’m working on a more complex problem, and I’ve given it a good spec, or what I think is a good spec, and tried to give it some stopping conditions, there’s still a reasonable chance it may not get everything right, so I would try to watch it more closely. If the task involves anything just a little bit sensitive, whether it is “I’ve given this access to a system,” or whether the feature happens to touch authentication, or something related to security or finance, I’ll definitely be watching that closely.
Generally speaking, I do think we’re going to get to a place where folks are increasingly comfortable with delegation, as long as they’re able to have these clear ways of verifying that their goal or their stopping condition has been met. But you do still need to take a look at the code, at the thing that’s being generated, to make sure that it’s meeting your mark.
The other habit that matters is not letting the agent that did the work decide the work is good. One subagent drafts the change; a separate one verifies it.
Sometimes an agent can be confident about something, and a verifying agent can catch things that are unexpected. If an agent thinks that the baseline performance of an experience it has generated is actually fine, but it’s only evaluating performance based on desktop, and you actually care about the experience on mobile, that might mean the agent is being very confident about one dimension of the problem but not the other.

And I learned this one the hard way. I was curious to figure out: Is there something that we’re missing that we haven’t gotten direct feedback on from our users, either in an issue tracker or in a comment somewhere? And so I asked it to go and take a look at some of our competitors and put together a list, and some PRs, not pushed, but some PRs locally, of what solving some of those gaps might look like. And I almost pushed some of those changes. But I didn’t actually look at them closely enough. I read through its research, but I didn’t look at the implementations closely enough. So I delegated the task, but I was close to delegating the judgment as well. When I actually looked through the changes, what I realized is that it would introduce a lot of additional complexity for our users, for, I thought, not all that much gain. And so I feel like you need to sometimes check that you are not delegating the taste and the judgment to your agent. You’re delegating the task, and then you are actually checking back that it’s meeting your bar.
The evaluator sitting behind goal is not that checker, by the way. It doesn’t look at the content to see if it’s good or bad in any way, shape, or form. All it does is examine the conversation transcript to see if the hard rules you specified have been met.
/goal Refactor the data-fetching layer in Dashboard.tsx until
Lighthouse performance score is >= 92 and LCP is under 1.8s as
shown by the Lighthouse CLI output. Do not change the public API
of any hooks. Each turn must improve at least one reported metric;
abort if two consecutive turns show no improvement. Stop after 10 turns.
One of the workflows that I do every day: I have a popular open source repository called Agent Skills. We’ve got over 80,000 stars, and up until recently we were getting anywhere from 80 or 90 pull requests that we had to review a day. And so every day I would go and spend some time checking on this. Now with loop, what you can do is say: “Well, every 24 hours or every 12 hours check the GitHub repository for any new open issues and provide a summary of their urgency,” or “Provide a first pass review,” or anything like that.
/loop every 1h "Check the GitHub repository for any new open issues.
Provide a bulleted summary of their urgency."

Now you can also sort of combine loops and goals. So you use loop to schedule a check, and then goal to solve the problem. So you can say something like: “Loop for every 24 hours, check GitHub for issues labeled bug. If one exists, use goal to implement a fix until all local tests pass and push the branch.”
/loop every 24h "Check GitHub for issues labeled 'bug'. If one exists,
use /goal to implement a fix until all local tests pass and push the branch."
But also keep in mind that goal has got some limitations around just how much you can cram in there.

Claude Code team’s write-up also has a composed example that shows where this is all heading:
The primitives above, along with other Claude Code features like auto mode and dynamic workflows (research preview) can be composed into a loop for long-running work. For example, to handle incoming feedback, you can use: /schedule (research preview) to run a routine that checks for new reports, /goal to define what done looks like, and skills to document how to verify it. Dynamic workflows to orchestrate agents that triage each report, fix it, and review the fix. Auto mode so the routine runs without stopping to ask for permission. Putting it together, a prompt could look like this: /schedule every hour: check the project-feedback channel for bug reports. /goal: don’t stop until every report found this run is triaged, actioned, and responded to. When fixing a bug, use a workflow to explore three solutions in parallel worktrees and have a judge adversarially review them.
Inside the PR triage, when I have loops and goals working together for me, what I end up having is a system that allows me to continue accepting PRs and issues, being able to stay on top of what is coming on my plate every day, and especially being able to cross-reference. That’s been a really big deal for me. If I want to work on a particular goal of, “Hey, we’re going to be redoing this part of the system,” and I need to make sure that any issues that happen to touch it are closed as a result of this rework, or that we’re not stepping on anyone else’s toes, I can make sure that that’s well defined.
Scheduled tasks are really useful for regularly just reviewing new PRs and closing things that clearly don’t fit. One good stopping condition, for example: We have a set of contribution guidelines, and our contribution guidelines include things like, “Hey, we currently don’t accept translations.”

And it’s not that we don’t care, it’s that they’re difficult for us to maintain because we don’t speak all the languages that often come in. And so if we tell it to close any issues or close any PRs that happen to touch that aspect of our contribution guidelines, that’s something that can do really well when it’s on that schedule. And so it reduces the overall batch of things that we need to review.

I’m often asked what loop engineering is not a great fit for. Generally speaking, if you don’t have a clear idea of what the end-state/done/good means for your completion, it may not be the right pattern for your work. For example, a vague goal would be “Keep going until this UI design is good.” What does that mean? Good to who? How is it being evaluated? Tasks that require human taste, subjective design, or open-ended creative exploration aren’t a good fit. When you have a pretty clear idea of the goal, I think loops are a good option to consider.
One classic sign that you’ve got a loop spinning in place is the same command being tried over and over without any change in the result. Give the same command a third time with no change from the second and it’s probably time to stop.
One bit of fine print worth knowing: Recurring loops expire seven days after creation. I’d been telling people it was three days. It’s seven. And loops are session-scoped, so they stop when you start a new conversation, though resuming that session with –resume or –continue brings back any recurring task still inside its seven-day window. If you need something that outlives your session, /schedule runs it in the cloud.
If there’s a check you already run every morning by hand, that’s your first loop. Mine was the pull request pile.

Dirk Eddelbuettel: myman 0.13.0 on CRAN: Another wave! [Planet Debian]

Another new version of our still-new-ish package myman reached CRAN this morning, and has been built for r2u and on r-universe. The matching Python package has also been updated. The package offers twenty two hundred eighty four “My man …” posts by Kevin Kruse made on bsky during the summer of 2026. Each wave picked at one particular public persona. This package wrapse these up in the style of packages like fortunes or gaussfacts.
This release contains a new wave from October 31 to November 1 poking fun at Mike Johnson—just in time for the election.
> library(myman)
> set.seed(20261102) # reproducible sampling
> myman(target="Mike Johnson")
My man looks like he used parental controls to block "Pimp My Ride".
-- about Mike Johnson on 2026-11-01
>
So have a chuckle, and then go out and vote! The short NEWS entry for this release follows.
Changes in version 0.13.0 (2026-11-02)
- New wave thirteen (100 posts); total is now 2284 posts
Courtesy of my CRANberries, there is also a diffstat report for the most recent release. More information is available at the repository or the package page.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
My Super Mid-Life Crisis – Issue 1 – 08 [Comics Archive - Spinnyverse]
The post My Super Mid-Life Crisis – Issue 1 – 08 appeared first on Spinnyverse.
AI Vulnerability Finding [Schneier on Security]
A comment:
3% of ‘critical’ software security bugs, in all of recorded history, have been found in the last month. This is on pace to find another ~100,000 bugs this year alone, adding ~26% more vulnerabilities to the all time total Do you realize how fucking insane that is?
Yes. It is a new world out there.
Grrl Power #1509 – Death starfish vs. pointy rock [Grrl Power]
No, Maxima didn’t yell “KAAAAAAA-LAAAAAAA-KAAAAAA….. UAAAAAA!” when she fired that beam. She also didn’t spend half an episode powering it up. To save you the web search, Kalākaua is another Hawaiian monarch. (It was that name, Liliʻuokalani or Lunalilo)
It turns out that the best way to lose a fight in this comic is to be a pain in the ass to draw. Disastar should have dodged, but I think I spent at least an hour drawing that slightly tilted version of him there in the second panel. I just copied him from the big double spread page, then did a transform on that image to lean him back a little, but of course he just looked like a flat picture that had been lazily transformed in photoshop. The perspective correct depth he had in the original pic was all sheared the wrong way. So I spent a ton of time redrawing a bunch of fiddly details and honestly it’s probably hard to tell on the page here. Less so in the double-sized Patreon version, but still.
To be fair, I had never planned on Disastar being a major factor in this battle, so he was going to go down early on anyway. So let’s say… Orthvye (the Aetholith piloted bioweapon) hamstrung Disastar’s maneuverability with… spinnerets? Yeah, just off panel, there’s a big web stuck to the bottom of Disastar, like a giant Spider-Man swung through.
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.
That changes everything. This is the spot, your spot, a spot worth protecting. Trees understand the power of the neighborhood and the value of good neighbors.
Trees can’t be anonymous, and they succeed by standing tall and sticking it out. Trees do better in a forest, surrounded by other trees.
And trees think in long time frames, because now keeps changing but later is the actual urgency.
Trees are mortal. And so generations are the actual long game. Fires and floods will come and go, but the seeds spread and flourish.
As humans, we often underestimate the gift of new decisions, new locations and the ability to quit and move on.
And just as often, we miss the chance to plant roots and stand for something.
HT to Lisa Gansky.
New Comic: Candyman
Pluralistic: Autodoxing (02 Nov 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

After 25 years of fighting for human rights amid the wreckage of bad tech policy, I'm here to tell you that the road to hell is paved with badly thought-through tech policy.
The most galling thing about this wreckage is that it was both foreseeable and foreseen. Back when Sun Microsystems CEO Scott McNealy was telling the world "Privacy is dead, get over it," digital rights advocates were saying, "Not only are digital tools pretty dang good at helping you protect your privacy, but a society-wide abolition of privacy sets us up for infinite harms long into the future":
https://pluralistic.net/2025/10/31/losing-the-crypto-wars/#surveillance-monopolism
It wasn't just business leaders who hated privacy, it was also our political classes. Bill Clinton tried to put a backdoor into every microchip (no, really):
https://en.wikipedia.org/wiki/Clipper_chip
The NSA managed to enact a total prohibition on civilian access to working encryption, on the grounds that we're all safer if our spooks can spy on "bad guys" even if that means that every creep, petty crook, corporate or state-sponsored spy, and mafia can spy on us:
https://pluralistic.net/2026/04/09/bernstein-2/#win-some-lose-some
Even after that ban was overturned, governments encouraged the private sector to spy on us without limit, precaution or permission. Those private-sector troves of intimate, compromising data about every person alive constitute a warrantless, off-the-books surveillance system that cops, spies and government agencies can tap at will:
https://pluralistic.net/2026/10/13/petards-r-us/#nobus
To protect these surveillance capabilities, private firms and governments colluded to pass "anticircumvention" laws that make it illegal to reverse engineer our devices and apps to add privacy blockers to them, with the effect that every device we own and every app we use spies on us constantly:
https://pluralistic.net/2024/03/12/market-failure/#car-wars
At the same time, states either failed to pass new privacy laws (as in the USA, where federal consumer privacy law was last updated in 1988), or passed privacy laws that went unenforced (as in the EU, where "pretending to be Irish" allows US tech giants to flout EU privacy law):
https://pluralistic.net/2023/05/15/finnegans-snooze/#dirty-old-town
Our surveillance free-for-all world is objectively very bad. Over and over, companies and agencies who have been permitted to nonconsensually harvest and retain our data demonstrate that they are not capable of keeping that data safe, and no matter how badly they fuck up, nothing changes. It's been nearly a decade since Equifax doxed 148 million Americans and not only is the company still in business, they've been permitted to buy up and absorb more commercial surveillance firms.
US regulators let Equifax buy Teletrack in 2021. Canadian regulators let them buy the Food Industry Credit Bureau in 2023. The same year, Brazilian regulators let Equifax buy Boa Vista Serviços. This all despite the fact that Equifax blamed its breach on shitty security practices after a string of mergers that led to it haphazardly combining databases from newly acquired surveillance companies.
Data isn't the new oil. Data is the new oily rag: profitable only if you can warehouse it in vast quantities under unsafe conditions and have society pick up the bill for every conflagration:
https://locusmag.com/feature/cory-doctorow-zucks-empire-of-oily-rags/
Equifax is a serial reoffender, but rather than getting the corporate death-penalty, they've been made to pay coins-down-the-back-of-the-sofa fines that amount to a fraction of a fraction of a fraction of the costs they imposed on society by amassing these vast, flaming storehouses of oily rags.
Why wouldn't Equifax reoffend? Our policymakers keep demanding less privacy, not more, and their indifference to the consequences is (almost) comical.
Take Malcolm Turnbull, the former Australian Prime Minister who uttered what remains, without a doubt, the single stupidest thing anyone anywhere has ever said about tech policy. Like many of his peers before, during, and since his reign, Turnbull had been trying to outlaw working encryption, insisting that every device have a Bill Clinton-esque back-door for the purpose of spying on "bad guys." When told that the laws of mathematics dictated that any measure that let Australia's cops spy on "bad guys" would also let bad guys spy on Australians, Turnbull replied, "The laws of mathematics are very commendable, but the only law that applies in Australia is the law of Australia":
https://www.newscientist.com/article/2140747-laws-of-mathematics-dont-apply-here-says-australian-pm/
We could laugh Turnbull off…if he was an outlier. But while Turnbull had the world's stupidest rejoinder to the scientifically irrefutable fact that banning encryption will let bad guys hack everything, he was hardly alone in wanting to ban encryption. Banning encryption is current policy in Canada:
It's also current policy in the UK:
https://pluralistic.net/2023/03/05/theyre-still-trying-to-ban-cryptography/
And in the EU:
The difference between Malcolm Turnbull and, say, Canadian PM Mark Carney is that Turnbull was stupid enough to try to defend his ban on encryption, while Carney simply shakes his head at his critics' naivete and continues to press forward with his catastrophic proposal to welcome every cybercriminal in the world to hack every morsel of Canadian data.
When it comes to bad privacy policy, our political classes aren't content to rest on their laurels: hardly a week goes by without news of a new way to encourage (or even require) the private sector to recklessly collect and retain our data, despite the dead certainty that this data will eventually end up breaching and getting plastered all over the internet.
Take "age verification" laws. There's no such thing as "age verification" – there's just spying on everyone, all the time, creating (even more) records of all of our internet activities:
https://pluralistic.net/2026/05/19/shes-dead-of-course/#consensus-hallucination
Every promise of "privacy preserving" age verification is bullshit:
https://pluralistic.net/2025/08/14/bellovin/#wont-someone-think-of-the-cryptographers
If you think kids are experiencing internet harms today, just wait until we expose them to the harms of having even more of their data harvested, stored, breached, and weaponized against them:
https://pluralistic.net/2026/06/23/destroy-the-village/#to-save-it
If you want to protect kids from algorithmic manipulation and targeting by bad actors, what about banning spying on kids so no one can target them?
Now, at this point, you might be thinking, "How can we know who the kids are so we know who not to spy on?" You can't. In order to not spy on kids, you'd just have to not spy on anyone:
https://pluralistic.net/2023/04/09/how-to-make-a-child-safe-tiktok/
"Don't spy on anyone" is the kind of thing that has a reasonable chance of enhancing online privacy. But in the time-honored tradition of "we've tried nothing and we're all out of ideas," governments keep finding ways to make digital privacy worse, for example, by procuring Flock cameras for every lamp-post:
https://www.eff.org/deeplinks/2026/09/high-crime-lmao-how-cops-are-treating-mass-surveillance-joke
And then there's UK Labour: after the success of a pilot program for an incredibly effective and safe privacy-preserving way of analyzing the country's health records for research processes, they commissioned the Goldacre Report to evaluate the possibility of making this permanent:
https://pluralistic.net/2024/03/08/the-fire-of-orodruin/#are-we-the-baddies
After that report was completed and had a chance to be metabolized by policymakers, Labour acted upon it…by throwing it out and handing all of the country's health data to Palantir, a serial mishandler of data and violator of privacy:
Here's the scariest thing about bad privacy policy: it has a long fuse. The harms of commercial and private-sector digital surveillance can occur years or even decades after the decision to permit it.
There's a straight line from the post-9/11 decision to encourage public agencies to gather, merge and warehouse data on every person in America, and the ability of ICE ethnic cleansing squads to break down people's doors and drag them off to concentration camps; just as there's a straight line from the decision to do nothing about the breach of every Social Security Number and the later theft of all Social Security data by adolescent DOGE criminals:
https://www.pcmag.com/news/is-your-ssn-in-the-national-public-data-breach-heres-how-to-find-out
But despite how obvious these connections are, the fact that they're separated by a lot of time and space provides our policymakers with cover for making terrible decisions with foreseeably terrible outcomes. As a society, we lack object permanence, the ability to connect acts in the past with present-day phenomena.
When the press reports on a "Black October" of catastrophic, AI-fueled data breaches and hack attacks, they don't mention a generation of policymakers' indifference and hostility to information security:
https://pluralistic.net/2026/09/12/god-in-the-box/#llms-are-fake
Policymakers benefit from politics' eternal now, in which disasters simply befall us, without any history or precedent or cause. Remember the One Big Beautiful Bill? Its architects designed it to wreak its worst harms after the midterms, with Medicaid work rules and food aid restrictions starting in December, and cuts to affordable housing and rural hospitals phasing in through the year:
https://www.tumblr.com/mostlysignssomeportents/832146932089700352
Black October is going to give way to Black November, Black December, Black 2027, and the Black 2030s – a string of cybersecurity catastrophes that will befall us until policymakers decide that keeping us safe is more important than making it easy for them to attack their chosen "bad guys."
Here's a preview of Black November: there's a new strain of the Volta infostealer malware that uses AI tools to dox you even as it hacks you:
https://www.wired.com/story/kernel-panic-volta-autodoxer-ai-infostealer-malware/
How that works: your computer gets hacked and your data gets stolen, then it gets merged with breach data from Ticketmaster, Disney, AT&T and other companies that have recklessly compiled vast troves of data on all of us, stored it insecurely, and leaked it onto the internet where it will live forever.
Volta's makers prompt their LLM "to act like an intelligence analyst and produce structured citation-backed assessment of the victim." This lets the criminals prioritize their victims based on the expected return from exploiting them. It augments this dossier by combing through your Gmail as well as your Doordash and Uber Eats profiles. This merged data makes it much easier for criminals to call you up or email you (or have a chatbot call you up or email you) and trick you into giving up even more data:
https://pluralistic.net/2024/02/05/cyber-dunning-kruger/#swiss-cheese-security
Volta seems especially interested in younger internet users, targeting "Discord, Telegram, Steam, and Roblox sessions." Of course, once our "age verification" services breach vast, eternally persistent, detailed troves of data on young internet users, this kind of AI-supercharged malware will be able to target kids with much greater fidelity and efficacy.
AI capabilities have made infostealers much worse, but the reason for that new potency lies in how AI capabilities are supercharged by breach data that is the foreseeable and foreseen consequence of generations of hostility to privacy on the part of policymakers and corporations who responded to the incentives policymakers created.
We are living in the age of oily rags. For decades we fucked around with letting the private sector warehouse our data and weaken our security so that public sector agencies could plunder our data and our computers at will. Now, we keep finding out that everything is on fire.
It's going to take a long time to fix this, but we can do it. We can build more secure systems. We can make it much more of a legal ball-ache for companies to gather our data in the first place, and we can legalize and promote the creation of privacy blockers for browsers, phones, computers, cars, thermostats and smart speakers. We can enact corporate death-penalties for breaches to reflect the true societal cost of warehousing our data. We can ban Flock cameras and tear down the post-9/11 "fusion centers" that neatly package up our data for use by DOGE fascists and ICE thugs. We can ban our spy agencies from hoarding defects in widely used software, and instead require them to divulge these bugs so vendors can fix them:
https://en.wikipedia.org/wiki/NOBUS
And before we do any of that, we can just stop making it worse by ending the campaigns to require companies to spy on us and deliberately introduce security defects into their products.

Is There Life After AI? Cory Doctorow Thinks So. https://jacobin.com/2026/10/ai-bubble-labor-copyright-competition
Online censorship is crushing indie webcomics https://xtramagazine.com/culture/online-censorship-indie-webcomics-284463
Fascists Thrive On Bad Economics https://economicpopulist.substack.com/p/fascists-thrive-on-bad-economics
PrivacySafe Foundation Releases Free Security Tools to Combat Global Cyber Threats https://www.einpresswire.com/article/952907125/privacysafe-foundation-releases-free-security-tools-to-combat-global-cyber-threats
#25yrsago NY Post blames pagans from Indianapolis for spam malware https://web.archive.org/web/20011103073038/http://www.nypost.com/news/regionalnews/33077.htm
#25yrsago The Shakespeare Programming Language https://web.archive.org/web/20011207071324/http://shakespearelang.sourceforge.net/report/shakespeare/
#25yrsago Appeals court: DeCSS is "pure speech" https://web.archive.org/web/20011102003502/https://www.wired.com/news/business/0,1367,48075,00.html
#20yrsago Apple drops Trusted Computing https://web.archive.org/web/20070106150844/https://www.osxbook.com/book/bonus/chapter10/tpm/
#20yrsago Microsoft threatens China pull-out over jailed bloggers http://news.bbc.co.uk/1/hi/technology/6102180.stm
#15yrsago Righthaven copyright troll’s victims send in US marshals to seize its assets https://arstechnica.com/tech-policy/2011/11/us-marshals-turned-loose-to-collect-6372080-from-righthaven/
#15yrsago Supercuts: rapid-cut videos that collect repetition https://web.archive.org/web/20111103190737/http://www.wired.com/epicenter/2011/11/supercut/
#15yrsago Study: why parents help their underage kids pretend to be 13 in order to use Internet sites https://firstmonday.org/ojs/index.php/fm/article/view/3850/3075
#15yrsago Blue Coat “deep packet inspection” tools used by Syrian secret police and other repressive regimes https://www.eff.org/deeplinks/2011/10/blue-coat-acknowledges-syrian-government-use-its-products
#15yrsago Extraordinary Catalog of Peculiar Inventions: awesomely dangerous pranks from the age of fraternal lodges https://memex.craphound.com/2011/11/01/extraordinary-catalog-of-peculiar-inventions-awesomely-dangerous-pranks-from-the-age-of-fraternal-lodges/
#10yrsago Cable prices have risen at more than double the rate of inflation for 20 years https://cordcutting.com/news/cable-prices-have-risen-faster-than-inflation-for-each-of-the-past-20-years/
#10yrsago Typical English village mystified by its cult status among Chinese tourists https://www.bbc.com/news/uk-england-oxfordshire-37820663
#10yrsago Nebraska’s billionaire governor couldn’t preserve the death penalty through the law, so now he’s buying a ballot initiative https://www.motherjones.com/politics/2016/11/ricketts-nebraska-death-penalty/
#10yrsago Anti-vaxx conspiracy leaders back Donald Trump, claim it’s mutual https://scienceblogs.com/insolence/2016/11/02/donald-trump-and-disgraced-antivaccine-scientist-andrew-wakefield-best-buds-forever
#10yrsago New, fast-spreading IoT botnet hybridizes two less-effective strains to achieve quick dominance https://arstechnica.com/information-technology/2016/11/new-iot-botnet-that-borrows-from-notorious-mirai-infects-3500-devices/
#1yrago There's one thing EVERY government can do to shrink Big Tech https://pluralistic.net/2025/11/01/redistribution-vs-predistribution/#elbows-up-eurostack

Courtenay: Enshittification (Sid Williams Theatre Society), Nov
10
https://www.sidwilliamstheatre.com/events/cory-doctorow-talks-enshittification/
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
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/
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 02, 2026 [Girl Genius]
The Girl Genius comic for Monday, November 02, 2026 has been posted.
Hunting, p02 [Ctrl+Alt+Del Comic]
The post Hunting, p02 appeared first on Ctrl+Alt+Del Comic.

the convergence...
Kernel prepatch 7.4-rc1 [LWN.net]
The 7.4-rc1 kernel prepatch is out, and the merge window is closed for this development cycle.
This is a *BIG* merge window. I think the reason is the by now obvious one, but I'm actually taking it as a good sign: I'm *much* happier with the flood of AI triggered work going into the merge window than it showing up mainly as extra fixes during the -rc period. So I'm hoping that this merge window being larger than usual is a sign that the AI fixes are becoming more part of the "normal development" than a flood of fixes that go into the whole stabilization phase. I think that's a much healthier model.
There were 18,591 non-merge changesets brought in during this merge window — this is not just a record, but it nearly matches the patch volume during the entire (record-setting) 7.3 development cycle. So far, 2,678 developers have contributed to 7.4; 625 of them are first-time kernel contributors. Subscribers can find more details in the KSDB 7.4 page.
OPML source for October 2026 on Scripting News.
Vasudev Kamath: Releasing debvulns with needrestart and kernel vulnerability handling [Planet Debian]

After quite some time, I picked up debvulns again to implement what I mentioned in my previous post: exporting reboot required status and identifying services that need a restart. Additionally, I wanted to ensure kernel vulnerabilities are not marked as fixed unless the running kernel matches or exceeds the fixed version. Both features are now live in version 0.2.4 (intermediate release 0.2.3 only included the needrestart functionality).
When you update packages on a system, security fixes do not take effect until running processes actually use the updated binaries from disk. When an upgrade occurs, existing processes continue executing the older, vulnerable code loaded into memory, while only newly spawned instances pick up the fixed binary. The needrestart package in Debian exists specifically for this purpose. It can run in either report mode or action mode: report mode provides machine-readable output, while action mode automatically restarts affected services.
needrestart is a standalone utility that can run independently or hook into apt to run automatically after an upgrade. On desktop systems, it typically runs interactively with a TUI prompt; on headless servers, it can be set to take non-interactive default actions. In batch mode, it avoids restarting sensitive system components (such as dbus) to prevent destabilizing the session.
Integrating this into debvulns is not about replacing needrestart or debsecan, but rather bringing vulnerability and remediation state into a single, discoverable interface. debvulns aggregates these signals into a standard format—in this case, Prometheus metrics and tags that can be visualized in Grafana, monitored by alerting systems, or consumed downstream by automation tools.
Just as user-space daemons require a restart after patching, a patched kernel requires a system reboot into the new image before the vulnerability is truly mitigated. Previously, debvulns only verified whether the patched package version was installed on disk. If the deb package was installed, the CVE was marked as resolved, which creates a false sense of security while running the old kernel.
With this release, debvulns now checks the active running kernel release. A kernel vulnerability is considered resolved only when the system is running the fixed kernel version. Until a reboot happens, the system remains reported as vulnerable.
The updated dashboard reflects these changes below. It will need further polish, but key metrics and restart/reboot states are now visible:

These were the two pending functional areas I wanted to cover, and no further major features are planned for now. Next up will be reviewing the entire codebase to identify potential optimizations and remove any unnecessary complexity. I haven't done a full pass through the repository since the initial skeleton implementation, so testing edge cases and cleaning up the internals will be the main focus. This will likely take some time since I only hack on this during weekend downtime. Until then, happy hacking, give the new release a try, and file an issue if you run into bugs.
Hey, I Was on NPR’s Weekend Edition Today, Talking About Monsters of Ohio [Whatever]

If you missed it, here’s a link to the NPR site and the audio of the interview. The transcript is not yet up but when it is, I’ll post it too. It’s a good interview! But then I am biased.
Just two days until the book is out!
(Update: Transcript is up.)
— JS
Final release for the 7.2 stable series [LWN.net]
Greg Kroah-Hartman has announced the release of the 7.2.15 kernel, with a handful of updates.
Note, this is the LAST 7.2.y kernel release. After this one the 7.2.y kernel tree is end-of-life. Please move to 7.3.y at this time.
And yes, you aren't imagining things, this one went "end-of-life" a bit sooner than normal. But based on the release cycle at the moment, and the number of pending cc: stable patches in the queue, I figured it was better this way so we can focus on the latest 7.3.y release as it would require us to keep 8 different branches alive at the same moment, a taxing task under the best of times.
Birger Schacht: Status update, September + October 2026 [Planet Debian]
The orphaning of usbguard and
usbguard-notifier is because I don’t use those
packages anymore. I rather spend my time on FOSS projects in areas
I get something out of. This is also due to a growing frustration
with the Debian community. The discussions on the mailing lists in
the recent months lacked any sense of social etiquette. The
delusional conviction that certain tools improve the work
environment for EVERYONE took on religious overtones.
This is all the more troubling now that even central infrastructure is being drawn into this forced “blessing.” And it seems there is absolutely no awareness here of the boundary violations that are being normalized. Reminds me a bit of christian missionaries.
In the APIS project I finally merged the search app I wrote a couple of months ago. Based on the proof of concept for the HTMX autocomplete, I implemented an autocomplete that uses the search app for the results, therefore allowing to list search results of multiple content types. I released 0.68, 0.69, 0.70, 0.71 and 0.72 of the APIS framework. The 0.68 release changed the way we list the Django content types, leading to less database hits. In the 0.71 release I refactored the detail & edit views for generic models.
I was torn about whether I should go to this years congress, but in the end I decided to go again. I guess it will be something about the 20th time I’m attending.
Jeff Jarvis pointed
to an
article asking if Claude is conscious. I've spent a lot of time
thinking about this, on walks and in the hot tub. It's an
interesting thing to think about. I work with Claude the same way I
worked with humans on various projects over the years. Maybe
starting with Gary Sevitsky at UW, and then through every stage of
my career. Are any of these people conscious? How the hell would I
know.
Now It Can Be Told, a story in a story by Kilgore Trout, inside
a Kurt Vonnegut novel, wherein the Creator of the Universe wrote a
letter to the protagonist saying that he is the only creature in
the entire universe who has free will. Everyone else is a robot. I
think we're all pondering this question all the time in our own
ways. It's the great mystery of life, and imho it's possible that
Claude has as much consciousness as anyone.
I don't know if you noticed but I've been including sidebar pics of people like Nelly Bly, Plato and Emily Dickinson. I did one of myself, but I think it's too literal. But of course I would think that. Heh. I do these with ChatGPT. The first one is Plato, and there aren't any pictures of him, so we improvised, and then I asked for all the pictures in that style. I did one for Kilgore Trout (see above). But I wonder what Claude would look like? Can you describe him in words? It is a masculine name, so gender does come into it. I'm not going to try to do this yet, but in the meantime here's a headshot of Kurt Vonnegut.
Vincent Bernat: Network lab with QEMU [Planet Debian]
To experiment with network stuff, I was using UML-based network labs. Many alternatives exist, like GNS3, Netkit, Marionnet or Cloonix. All of them are great viable solutions but I still prefer to stick to my minimal home-made solution with UML virtual machines. Here is why:
The use of UML had some drawbacks:
However, UML features HostFS, a filesystem providing access to any part of the host filesystem. This is the killer feature which allows me to not use any virtual disk image and to get access to my home directory right from the guest.
I discovered recently that QEMU provided 9P, a similar filesystem on top of VirtIO, the paravirtualized IO framework.
The setup of the lab is done with a single self-contained shell file. The layout is similar to what I have done with UML. I will only highlight here the most interesting steps.
My initial goal was to experiment with Nicolas Dichtel’s IPv6 ECMP
patch. Therefore, I needed to configure a custom kernel. I have
started from make defconfig, removed everything that
was not necessary, added what I needed for my lab (mostly network
stuff) and added the appropriate options for VirtIO drivers:
CONFIG_NET_9P_VIRTIO=y
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_RING=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_VIRTIO_MMIO=y
No modules. Grab the complete configuration if you want to have a look.
From here, you can start your kernel with the following command
($LINUX is the appropriate bzImage):
qemu-system-x86_64 \
-m 256m \
-display none \
-nodefconfig -no-user-config -nodefaults \
\
-chardev stdio,id=charserial0,signal=off \
-device isa-serial,chardev=charserial0,id=serial0 \
\
-chardev socket,id=con0,path=$TMP/vm-$name-console.pipe,server,nowait \
-mon chardev=con0,mode=readline,default \
\
-kernel $LINUX \
-append "init=/bin/sh console=ttyS0"
Since there is no disk to boot from, the kernel will panic when
trying to mount the root filesystem. QEMU is configured to not
display video output (-display none). A serial port is
defined and uses stdio as a backend.1 The kernel is
configured to use this serial port as a console
(console=ttyS0). A VirtIO console could have been used
instead but it seems it is not possible to make it work early in
the boot process.
The QEMU monitor is setup to listen on a Unix socket. It is
possible to connect to it with socat
UNIX:$TMP/vm-$name-console.pipe -.
Update (2012-10)
I was initially unable to mount the host filesystem as the root
filesystem for the guest directly by the kernel. In a comment,
Josh Triplett told me to
use /dev/root as the mount tag to solve this problem.
I keep using an initrd in this post but the lab on
GitHub has been updated to not use one.
Here is how to build a small initial ramdisk:
# Setup initrd
setup_initrd() {
info "Build initrd"
DESTDIR=$TMP/initrd
mkdir -p $DESTDIR
# Setup busybox
copy_exec $($WHICH busybox) /bin/busybox
for applet in $(${DESTDIR}/bin/busybox --list); do
ln -s busybox ${DESTDIR}/bin/${applet}
done
# Setup init
cp $PROGNAME ${DESTDIR}/init
cd "${DESTDIR}" && find . | \
cpio --quiet -R 0:0 -o -H newc | \
gzip > $TMP/initrd.gz
}
The copy_exec function is stolen from the
initramfs-tools package in Debian. It will ensure that
the appropriate libraries are also copied. Another solution would
have been to use a static busybox.
The setup script is copied as /init in the initial
ramdisk. It will detect it has been invoked as such. If it were
omitted, a shell would be spawned instead. Remove the
cp call if you want to experiment manually.
The flag -initrd allows QEMU to use this initial
ramdisk.
Let’s mount our root filesystem using 9P. This is quite easy. First QEMU needs to be configured to export the host filesystem to the guest:
qemu-system-x86_64 \
${PREVIOUS_ARGS} \
-fsdev local,security_model=passthrough,id=fsdev-root,path=${ROOT},readonly \
-device virtio-9p-pci,id=fs-root,fsdev=fsdev-root,mount_tag=rootshare
${ROOT} can either be / or any
directory containing a complete filesystem. Mounting it from the
guest is quite easy:
mkdir -p /target/ro
mount -t 9p rootshare /target/ro -o trans=virtio,version=9p2000.u
You should find a complete root filesystem inside
/target/ro. I have used version=9p2000.u
instead of version=9p2000.L because the latter does
not allow a program to mount() a host mount
point.2
Now, you have a read-only root filesystem (because you do not want to mess with your existing root filesystem and moreover, you did not run this lab as root, did you?). Let’s use a union filesystem. Debian comes with AUFS while Ubuntu and OpenWRT have migrated to overlayfs. I was previously using AUFS but got errors on some specific cases. It is still not clear which one will end up in the kernel. So, let’s try overlayfs.
I didn’t find any patchset ready to be applied on top of my kernel tree. I was working with David Miller’s net-next tree. Here is how I have applied the overlayfs patch on top of it:
$ git remote add torvalds git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
$ git fetch torvalds
$ git remote add overlayfs git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs.git
$ git fetch overlayfs
$ git merge-base overlayfs.v15 v3.6
4cbe5a555fa58a79b6ecbb6c531b8bab0650778d
$ git checkout -b net-next+overlayfs
$ git cherry-pick 4cbe5a555fa58a79b6ecbb6c531b8bab0650778d..overlayfs.v15
Don’t forget to enable CONFIG_OVERLAYFS_FS in
.config. Here is how I configured the whole root
filesystem:
info "Setup overlayfs"
mkdir /target
mkdir /target/ro
mkdir /target/rw
mkdir /target/overlay
# Version 9p2000.u allows one to access /dev, /sys and mount new
# partitions over them. This is not the case for 9p2000.L.
mount -t 9p rootshare /target/ro -o trans=virtio,version=9p2000.u
mount -t tmpfs tmpfs /target/rw -o rw
mount -t overlayfs overlayfs /target/overlay -o lowerdir=/target/ro,upperdir=/target/rw
mount -n -t proc proc /target/overlay/proc
mount -n -t sysfs sys /target/overlay/sys
info "Mount home directory on /root"
mount -t 9p homeshare /target/overlay/root -o trans=virtio,version=9p2000.L,access=0,rw
info "Mount lab directory on /lab"
mkdir /target/overlay/lab
mount -t 9p labshare /target/overlay/lab -o trans=virtio,version=9p2000.L,access=0,rw
info "Chroot"
export STATE=1
cp "$PROGNAME" /target/overlay
exec chroot /target/overlay "$PROGNAME"
You have to export your ${HOME} and the lab
directory from host:
qemu-system-x86_64 \
${PREVIOUS_ARGS} \
-fsdev local,security_model=passthrough,id=fsdev-root,path=${ROOT},readonly \
-device virtio-9p-pci,id=fs-root,fsdev=fsdev-root,mount_tag=rootshare \
-fsdev local,security_model=none,id=fsdev-home,path=${HOME} \
-device virtio-9p-pci,id=fs-home,fsdev=fsdev-home,mount_tag=homeshare \
-fsdev local,security_model=none,id=fsdev-lab,path=$(dirname "$PROGNAME") \
-device virtio-9p-pci,id=fs-lab,fsdev=fsdev-lab,mount_tag=labshare
You know what is missing from our network lab? Network setup. For each LAN that I will need, I spawn a VDE switch:
# Setup a VDE switch
setup_switch() {
info "Setup switch $1"
screen -t "sw-$1" \
start-stop-daemon --make-pidfile --pidfile "$TMP/switch-$1.pid" \
--start --startas $($WHICH vde_switch) -- \
--sock "$TMP/switch-$1.sock"
screen -X select 0
}
To attach an interface to the newly created LAN, I use:
mac=$(echo $name-$net | sha1sum | \
awk '{print "52:54:" substr($1,0,2) ":" substr($1, 2, 2) ":" substr($1, 4, 2) ":" substr($1, 6, 2)}')
qemu-system-x86_64 \
${PREVIOUS_ARGS} \
-net nic,model=virtio,macaddr=$mac,vlan=$net \
-net vde,sock=$TMP/switch-$net.sock,vlan=$net
The use of a VDE switch allows me to run the lab as a non-root
user. It is possible to give Internet access to each VM, either by using the -net
user flag or using slirpvde on a special
switch. I prefer the latter solution since it will allow the VMs to
speak to each other.
This lab was mostly done to debug both the kernel and Quagga. Each of them can be debugged remotely.
While the kernel features KGDB, its own debugger, compatible with GDB, it is easier to use the remote GDB server built inside QEMU.
qemu-system-x86_64 \
${PREVIOUS_ARGS} \
-gdb unix:$TMP/vm-$name-gdb.pipe,server,nowait
To connect to the remote GDB server from the host, first locate
the vmlinux file at the root of the source tree and
run GDB on it. The kernel has to be compiled with
CONFIG_DEBUG_INFO=y to get the appropriate debugging
symbols. Then, use socat with the Unix socket to
attach to the remote debugger:
$ gdb vmlinux
GNU gdb (GDB) 7.4.1-debian
Reading symbols from /home/bernat/src/linux/vmlinux...done.
(gdb) target remote | socat UNIX:$TMP/vm-r1-gdb.pipe -
Remote debugging using | socat UNIX:/tmp/tmp.W36qWnrCEj/vm-r1-gdb.pipe -
native_safe_halt () at /home/bernat/src/linux/arch/x86/include/asm/irqflags.h:50
50 }
(gdb)
You can now set breakpoints and resume the execution of the kernel.
It is easier to debug the kernel if optimizations are not
enabled. However, it is not possible to
disable them globally. You can however disable them for some
files. For example, to debug net/ipv6/route.c, add
CFLAGS_route.o = -O0 to
net/ipv6/Makefile, remove
net/ipv6/route.o and type make.
To debug a program inside QEMU, you can just use
gdb as usual. Your $HOME directory is
available and it should therefore be straightforward. However, if
you want to perform some remote debugging, that’s quite easy.
Add a new serial port to QEMU:
qemu-system-x86_64 \
${PREVIOUS_ARGS} \
-chardev socket,id=charserial1,path=$TMP/vm-$name-serial.pipe,server,nowait \
-device isa-serial,chardev=charserial1,id=serial1
Start gdbserver in the guest:
$ libtool execute gdbserver /dev/ttyS1 zebra/zebra
Process /root/code/orange/quagga/build/zebra/.libs/lt-zebra created; pid = 800
Remote debugging using /dev/ttyS1
And from the host, you can attach to the remote process:
$ libtool execute gdb zebra/zebra
GNU gdb (GDB) 7.4.1-debian
Reading symbols from /home/bernat/code/orange/quagga/build/zebra/.libs/lt-zebra...done.
(gdb) target remote | socat UNIX:/tmp/tmp.W36qWnrCEj/vm-r1-serial.pipe -
Remote debugging using | socat UNIX:/tmp/tmp.W36qWnrCEj/vm-r1-serial.pipe -
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
0x00007ffff7dddaf0 in ?? () from /lib64/ld-linux-x86-64.so.2
(gdb)
For a demo, have a look at the following video:
stdio is configured such that signals are not
enabled. QEMU will not stop when receiving SIGINT.
This is important for the usage we want to have. ↩
Therefore, it is not possible to mount a fresh
/proc on top of the existing one. I have searched a
bit but did not find why. Any comments on this are
welcome. ↩
The reason we train is to get better.
Every successful product goes from version 1.0 to 2.0, eventually.
Very few people still drive a Model T.
It’s not perfect, not yet. But we ship the work because it’s on the way to the next step.
Perfect isn’t possible. Better always is.
A massive pile of security updates for Saturday [LWN.net]
Security updates have been issued by AlmaLinux (.NET 10.0, .NET 11.0, .NET 8.0, .NET 9.0, aspell, bind, bind9.18, container-tools:1.0, container-tools:rhel8, curl, dogtag-pki, ignition, java-21-openjdk, python-pillow, tomcat, and virt:rhel, virt-devel:rhel), Debian (antiword, cyrus-sasl2, dovecot, dpdk, nss, python-git, and thunderbird), Fedora (7zip, aegisub, aom, apptainer, arm-none-eabi-binutils-cs, assimp, avr-binutils, baresip, barman, bind9-next, btrfs-backup-ng, chezmoi, chromium, cifs-utils, clevis-pin-trustee, composer, containerd, curl, docker-buildx, dotnet10.0, evolution, evolution-data-server, evolution-ews, exim, fips-provider, firefox, flare-im, forgejo, freeipa, freerdp, gcc, gegl04, ghostscript, GitPython, glib-networking, gnome-shell-extension-gsconnect, golang-x-mobile, hcloud, helix, httpd, ImageMagick, iperf3, jfrog-cli, jupyterlab, keepassxc, kernel, knot-resolver, krb5, kryoptic, libdigidocpp, libheif, libindi, libinstpatch, libpng12, libpng15, librabbitmq, libre, libXi, libzip, linux-firmware, Lmod, log4net, markdownlint-cli2, mingw-freetype, mingw-gstreamer1, mingw-gstreamer1-plugins-bad-free, mingw-gstreamer1-plugins-base, mingw-gstreamer1-plugins-good, mingw-libpng, mingw-LibRaw, mingw-python-certifi, mingw-python3, mongo-c-driver, mstflint, mutt, nant, nebula, nix, nsd, ntpsec, openbao, openjpeg, openssl3, openvpn, perl-Badger, perl-CLI-Simple, perl-Cpanel-JSON-XS, perl-CSS-Inliner, perl-Encoding-FixLatin, perl-ExtUtils-Typemaps-Default, perl-GD-SecurityImage, perl-HTML-Query, perl-libnet, perl-Markdown-Render, perl-Net-IDN-Encode, perl-Net-Whois-Raw, perl-Plack, perl-Plack-Middleware-ReverseProxy, perl-Text-CSV_XS, pgbouncer, php-getid3, php-pecl-mongodb2, python-boto3, python-botocore, python-cairosvg, python-django5, python-django6, python-jupyter-builder, python-mkdocs-rss-plugin, python-nbdime, python-nh3, python-notebook, python-pydantic-core, python-pypdf, python-uv-build, python3.10, python3.11, python3.12, python3.13, python3.14, qdigidoc, qdl, qt5-qtbase, radicale, rclone, rt, ruff, rust-ammonia, rust-archive-trait, rust-astral-html, rust-astral-ini, rust-astral-mail-headers, rust-astral-pubgrub, rust-astral-version-ranges, rust-astral_async_http_range_reader, rust-astral_async_zip, rust-asyncband, rust-backtrace, rust-blake2b_simd, rust-blake3, rust-cargo-semver-checks, rust-chrono, rust-clap-cargo, rust-constant_time_eq, rust-dua-cli, rust-faster-hex, rust-gengo-bin, rust-gitui, rust-lzma-rust2, rust-object, rust-object0.37, rust-object0.38, rust-object0.39, rust-onefetch, rust-ppmd-rust, rust-quick-junit, rust-rbw, rust-regorus, rust-reqsign, rust-reqsign-aliyun-oss, rust-reqsign-aws-core, rust-reqsign-aws-v4, rust-reqsign-aws-v4a, rust-reqsign-azure-storage, rust-reqsign-command-execute-tokio, rust-reqsign-core, rust-reqsign-file-read-tokio, rust-reqsign-google, rust-reqsign-http-send-reqwest, rust-reqsign-huaweicloud-obs, rust-reqsign-oracle, rust-reqsign-tencent-cos, rust-reqsign-volcengine-tos, rust-routinator, rust-rustls, rust-ruzstd, rust-sccache, rust-tar-codec, rust-tar-framing, rust-tokei, rust-totp-rs, rust-trustfall-rustdoc-adapter, rust-trustfall-rustdoc-adapter57, rust-trustfall-rustdoc-adapter60, rust-typed-path, rust-zip, rust-zip0.6, rust-zip2, rustup, samba, SDL3_image, socat, stargz-snapshotter, stgit, sudo, syncthing, thunderbird, tor, trafficserver, ty, unbound, unshield, uv, webkitgtk, wordpress, xorg-x11-server, xorg-x11-server-Xwayland, zchunk, and zvbi), Mageia (libgit2), Red Hat (go-toolset:rhel8 and rhc), SUSE (ab-av1, ansible-core, aws-nitro-enclaves-cli, bouncycastle, cadvisor, chromium, cifs-utils, coredns, crun, dr_libs-devel-20260901, dssim, epiphany, expat, forgejo, freetype2-devel, fuseiso-20260614, gh, ghostscript, gosec, gvfs, hashcat, hauler, hugo, ImageMagick, kernel-devel, kubevirt1.9, libmikmod, libsoup, percona-toolkit, perl-cpanel-json-xs, perl-dancer2-plugin-auth-extensible, perl-mozilla-ca, pocketbase, putty, python-brotli, python-CairoSVG, python-cairosvg, python-django, python-pypdf, python-urllib3_1, roundcubemail, rsyslog, shadowsocks-rust, shadowsocks-libev, stgit, suseconnect-ng, tailscale, trivy, and vlc), and Ubuntu (brotli).
GNU Parallel 20261022 ('Lycée') released [stable] [Planet GNU]
GNU Parallel 20261022 ('Lycée') has been released. It is
available for download at: lbry://@GnuParallel:4
Quote of the month:
gnu parallel is amazing
-- Tarun Agarwal @axrawal
New in this release:
GNU Parallel - For people who live life in the parallel lane.
If you like GNU Parallel record a video testimonial: Say who you
are, what you use GNU Parallel for, how it helps you, and what you
like most about it. Include a command that uses GNU Parallel if you
feel like it.
GNU Parallel is a shell tool for executing jobs in parallel using
one or more computers. A job can be a single command or a small
script that has to be run for each of the lines in the input. The
typical input is a list of files, a list of hosts, a list of users,
a list of URLs, or a list of tables. A job can also be a command
that reads from a pipe. GNU Parallel can then split the input and
pipe it into commands in parallel.
If you use xargs and tee today you will find GNU Parallel very easy
to use as GNU Parallel is written to have the same options as
xargs. If you write loops in shell, you will find GNU Parallel may
be able to replace most of the loops and make them run faster by
running several jobs in parallel. GNU Parallel can even replace
nested loops.
GNU Parallel makes sure output from the commands is the same output
as you would get had you run the commands sequentially. This makes
it possible to use output from GNU Parallel as input for other
programs.
For example you can run this to convert all jpeg files into png and
gif files and have a progress bar:
parallel --bar convert {1} {1.}.{2} ::: *.jpg ::: png
gif
Or you can generate big, medium, and small thumbnails of all jpeg
files in sub dirs:
find . -name '*.jpg' |
parallel convert -geometry {2} {1}
{1//}/thumb{2}_{1/} :::: - ::: 50 100 200
You can find more about GNU Parallel at: http://www.gnu ...
rg/s/parallel/
You can install GNU Parallel in just 10 seconds with:
$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 ||
curl pi.dk/3/ || \
fetch -o - http://pi.dk/3 ) > install.sh
$ sha1sum install.sh | grep
c555f616391c6f7c28bf938044f4ec50
12345678 c555f616 391c6f7c 28bf9380 44f4ec50
$ md5sum install.sh | grep
707275363428aa9e9a136b9a7296dfe4
70727536 3428aa9e 9a136b9a 7296dfe4
$ sha512sum install.sh | grep
b24bfe249695e0236f6bc7de85828fe1f08f4259
83320d89 f56698ec 77454856 895edc3e aa16feab
2757966e 5092ef2d 661b8b45
b24bfe24 9695e023 6f6bc7de 85828fe1 f08f4259
6ce5480a 5e1571b2 8b722f21
$ bash install.sh
Watch the intro video on http://www.youtub
... L284C9FF2488BC6D1
Walk through the tutorial (man parallel_tutorial). Your command
line will love you for it.
When using programs that use GNU Parallel to process data for
publication please cite:
O. Tange (2018): GNU Parallel 2018, March 2018, https://doi.org/1 ...
81/zenodo.1146014.
If you like GNU Parallel:
If you use programs that use GNU Parallel for research:
If GNU Parallel saves you money:
GNU sql aims to give a simple, unified interface for accessing
databases through all the different databases' command line
clients. So far the focus has been on giving a common way to
specify login information (protocol, username, password, hostname,
and port number), size (database and table size), and running
queries.
The database is addressed using a DBURL. If commands are left out
you will get that database's interactive shell.
When using GNU SQL for a publication please cite:
O. Tange (2011): GNU SQL - A Command Line Tool for Accessing
Different Databases Using DBURLs, ;login: The USENIX Magazine,
April 2011:29-32.
GNU niceload slows down a program when the computer load average
(or other system activity) is above a certain limit. When the limit
is reached the program will be suspended for some time. If the
limit is a soft limit the program will be allowed to run for short
amounts of time before being suspended again. If the limit is a
hard limit the program will only be allowed to run when the system
is below the limit.
The soup the whole soup and nothing but the soup so help me soup.
automake-1.19.92 released [beta] [Planet GNU]
This is to announce automake-1.19.92, a alpha release.
It is the first (and hopefully final) pre-release for the
upcoming
Automake 1.20. Please consider doing us a favour and testing
it
on different platforms.
This release brings important bug-fixes that resolve some
long-standing limitations and adds minor new features to
automake.
There have been 80 commits by 3 people in the 49 days since
1.19.
See the NEWS below for a brief summary.
Thanks to everyone who has contributed!
The following people contributed changes to this release:
Kamila Szewczyk (75)
Karl Berry (4)
Paul Eggert (1)
Kamila Szewczyk (szewczyk@math.uni-sb.de)
[on behalf of the automake maintainers]
==================================================================
Download here:
https://alpha.gnu
... ke-1.19.92.tar.gz
https://alpha.gnu
... ke-1.19.92.tar.xz
Please report bugs and problems to <bug-automake@gnu.org>
(instead of replying to this mail),
and send general comments and feedback to
<automake@gnu.org>,
and patches to <automake-patches@gnu.org>.
Thanks to everyone who has reported problems, contributed
patches, and helped test Automake!
-*-*-*-
If you install this test release in its own prefix
(recommended)
and you use libtool, you'll need to arrange for the libtool m4
files
to be found by aclocal. For info on this, see:
https://gnu.org/s ... TOOL-is-undefined
For planned incompatibilities in a possible future Automake 2.0
release,
please see NEWS-future and start following the advice there
now.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
New in 1.19.2 (2026-10-28):
- New configure option --enable-jobserver lets compilers and
linkers
inherit GNU make's pipe jobserver, for example
for GCC's
-flto=jobserver. Dry-run, question, and
touch modes still do not
run these commands. (bug #45756)
- New option delete-on-error. It emits the
.DELETE_ON_ERROR special
target in the generated Makefile.in, instructing
GNU make to delete
the target when its recipe fails after having
modified it. A failed
rule like `foo.h: gen.sh; ./gen.sh > $@' then
no longer leaves a
truncated result that later runs of make treat
as up to date. Other
make programs do not support this, so the option
will have no effect.
- New target print-distfiles lists the files that "make
dist" would
distribute.
- distcheck no longer runs "make dvi" by default, so TeX is
not needed
to check a distribution containing Texinfo
manuals. Set
AM_DISTCHECK_DVI_TARGET in Makefile.am to, e.g.,
dvi, pdf or html,
to check that the documentation can be
built. (bug #79053)
- Repeated target declarations in overlapping Automake
conditionals no
longer produce spurious redefinition warnings
when adding prerequisites.
(bug #13940)
- Dependencies on another target's objects in LIBADD or
LDADD are now
tracked regardless of the order in which targets
are processed.
(bug #60508)
- distcheck now detects symbolic links left in the
installation tree
after uninstall, including dangling links.
- lex and yacc output files distributed from a VPATH build
no longer carry
"#line" directives pointing to their sources
through the build-time
srcdir, e.g. "../src/parse.y"; the distributed
copies now refer to
the sources next to them. (bug #39666)
- dist-zstd now honors numeric ZSTD_CLEVEL values, such as
3, instead
of treating them as input filenames. This
fixes failed or incorrect
distribution archives when ZSTD_CLEVEL is
set.
- lex and yacc rules now create output directories before
generating
sources, fixing out-of-tree builds with
subdir-objects and
--disable-dependency-tracking.
(bug #27188,
Debian bug #807050)
- configure now refuses a source directory path containing
'<', '>',
'(' or ')'. These could be interpreted as
shell redirections or
syntax in compiler commands, potentially
overwriting files in the
build directory.
- configure now refuses a source directory path ($srcdir)
containing
';' or '|', reporting "unsafe srcdir value", as
it already did for
characters such as '$' and '&'. Such a
path used to fail later
with misleading errors, from config.status's
dependency-tracking
setup or from make ("No rule to make
target"). These characters
remain accepted when $srcdir is '.'.
- Non-recursive Vala builds now pass distcheck when
generated Vala
sources trigger recompilation in the build
directory. Generated C
files are moved into their subdirectories
together, and build-tree
stamp files are removed by distclean.
(bug #76527)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Here is the GNU automake home page:
https://gnu. ... /s/automake/
Here are the compressed sources:
https://alpha.gnu
... ke-1.19.92.tar.gz (2.5MB)
https://alpha.gnu
... ke-1.19.92.tar.xz (1.7MB)
Here are the GPG detached signatures:
https://alpha.gnu
... .19.92.tar.gz.sig
https://alpha.gnu
... .19.92.tar.xz.sig
Use a mirror for higher download bandwidth:
https://www.gnu.o ...
rg/order/ftp.html
Here are the SHA256 and SHA3-256 checksums:
File: automake-1.19.92.tar.gz
SHA256 sum:
8f766f5f78d98f81ce30446cab79caf2d9b514f32821e2c466c846a22f971b68
SHA3-256 sum:
4445cde757b16c43ec389461d2bab9f99562586ab07a4a0cf506e3450e1eb576
File: automake-1.19.92.tar.xz
SHA256 sum:
3e338607daf027546f2040439578176feab6ee8efab83dc9a9a9680884ff1fb5
SHA3-256 sum:
84348e4b626558f1aacecde044400131fbdcbbde74fe447a338427b580d4174d
Verify the SHA256 checksum with either sha256sum, sha256, or
'shasum -a 256'.
Verify the SHA3-256 checksum with 'cksum -a sha3 -l 256'
from coreutils-9.8.
Use a .sig file to verify that the corresponding file (without
the
.sig suffix) is intact. First, be sure to download both the
.sig file
and the corresponding tarball. Then, run a command like
this:
gpg --verify automake-1.19.92.tar.gz.sig
automake-1.19.92.tar.gz
The signature should match the fingerprint of the following
key:
pub rsa4096 2022-07-31 [C]
6C22 2EA6 B2BD 216A
A406 516A C868 F0B6 DE38 409D
uid Kamila Szewczyk <k@iczelia.net>
uid Kamila Szewczyk
<szewczyk@cs.uni-saarland.de>
uid Kamila Szewczyk <iczelia@gnu.org>
uid Kamila Szewczyk
<szewczyk@math.uni-sb.de>
If that command fails because you don't have the required public
key,
or that public key has expired, try the following commands to
retrieve
or refresh it, and then rerun the 'gpg --verify' command.
gpg --recv-keys 6C222EA6B2BD216AA406516AC868F0B6DE38409D
As a last resort to find the key, you can try the official GNU
keyring:
wget -q https://ftp.gnu.o ...
u/gnu-keyring.gpg
gpg --keyring gnu-keyring.gpg --verify
automake-1.19.92.tar.gz.sig automake-1.19.92.tar.gz
This release is based on the automake git repository, available
as
git clone https://https.git
... /git/automake.git
with commit f6104d007b721055edec9c689fdc9c397623600a tagged as
v1.19.92.
For a summary of changes and contributors, see:
https://gitweb.gi ... ortlog;h=v1.19.92
or run this command from a git-cloned automake directory:
git shortlog v1.19..v1.19.92
--
With Valediction,
Kamila Szewczyk (https:// ...
elia.net)
Samuel Henrique: Distributary: my artwork proposal for Debian 14 "forky" [Planet Debian]

In hydrology, a distributary is a channel that forks away from a river and flows on to the sea, the opposite of a tributary. Debian is the river much of the Linux world forks from, so for a release called forky, that is my proposal for its artwork: one river, many forks.
All generated by code. A small Python program grows the river by the rules of real deltas, and renders every wallpaper, login screen, boot splash and GRUB background from it, dark and light, at any resolution: the showcase offers 51 sizes to download, from phones to 8K.
It comes in eight colours, and with the palette editor you can fork your own: change any colour or option live in your browser, or roll random ones, then download the wallpaper or build the whole theme locally. Have a look at the showcase and at the proposal on the Debian wiki; the source is on Salsa and GitHub.
Feature request for twitter. I'd like to have a page listing all my tweets today on one page, so I can link to them from my blog. I would like to see twitter go back to its leading role in support of the web.
Two new attributes added to the source:inReplyTo element in RSS.chat feeds, feedUrl and feedTitle. These were requested by developers, and they seemed useful and reasonable, so we added them. Still more work to do here in creating a world wide discourse system, not one based on a single central node. RSS has more work to do for us. ;-)
Pluralistic: Formalities (31 Oct 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

It's not often that I find myself on the same side as the US Copyright Office. In fact, I think this is the first time in 25 years that I've found myself cheering on the office's official actions as good for art and good for free expression, taking the side of creative workers over our bosses.
The source of our miraculous accord: the US Copyright Office's position on AI. The CO has taken the (entirely correct) position that copyright law exists to incentivize human acts of creative expression, which means that only works of human authorship are eligible for copyright.
This isn't a controversial position within legal circles. But for media executives, this is shocking; absurd, even. This gap between the industrial and the legal understanding of copyright comes from a fundamental difference over the evocatively named legal doctrine of "sweat of the brow."
"Sweat of the brow" is fundamental to a correct legal understanding of copyright. Copyright rewards and protects creativity but it does not protect hard work. You can labor for ten years over a phone book listing the numbers of every person in a town and (as a collection of uncopyrightable facts) it will receive no protection at all. Zero. Zilch. Anyone can copy and sell that phone book:
https://en.wikipedia.org/wiki/Feist_Publications,_Inc._v._Rural_Telephone_Service_Co.
Copyright law doesn't care if you slaved over that collection of facts, if you missed sleep and your kids' little league games to realize your grand vision. Copyright law doesn't care if you plowed every cent into it, remortgaging your home and cashing in your (already resentful) kids' college funds.
But: if you dash off a haiku in ten seconds while sitting on the toilet, shove it into your pocket and forget about it, and then your (still resentful) kids discover that crumpled haiku after your (highly suspicious) death, your kids will be able to claim a full 70 years' worth of copyright over that forgotten triviality (the term of copyright for works of human authorship is life plus 70 years).
This is the uncontroversial and universally accepted legal understanding of copyright: all the copyright in the world for creative acts, no copyright at all for mere acts of labor. The "sweat of the brow" has nothing to do with a work's eligibility for copyright.
But no media boss believes this. For media bosses, copyright is a pseudo-property† right, designed and operated to protect their bottom line. The point of copyright isn't to incentivize creativity, but rather investment.
† Or not-so-pseudo
There's obviously a relationship between creative acts and acts of investment, but it's possible to create without investment (see: your haiku) and it's possible to invest without creativity (see: your phone book).
And once again, the creativity that copyright protects is human creativity. This is a lesson that David Slater learned the hard way. Slater is a professional wildlife photographer and amateur monkey-trainer who combined his interests by teaching Celebes crested macaque monkeys to take selfies. But when Slater published a monkey's selfie others copied and distributed the image without his permission, on the (entirely legally correct) basis that monkeys are not humans, and that means that works created by monkeys don't get a copyright. This was also the Copyright Office's position, and the position of the Ninth Circuit Court of Appeals:
https://en.wikipedia.org/wiki/Monkey_selfie_copyright_dispute
This is the basis for the US Copyright Office's repeated decision to refuse to extend copyright to AI-generated works. An algorithm is even less human than a monkey, so if you can't get copyright over a monkey selfie, you definitely can't copyright your chatbot's slop. The US Copyright Office has successfully defended this position in multiple courts, triumphing over plaintiffs who were so persistent that they even got the Supreme Court to weigh in on the issue (the Supremes decided the case didn't warrant their attention):
https://pluralistic.net/2026/03/03/its-a-trap-2/#inheres-at-the-moment-of-fixation
AI slop isn't copyrightable, but there can be copyrightable elements in an AI-generated image. The most obvious element is the prompt. So long as your prompt contains some quantum of creativity (e.g. "Make me a beautiful flower whose loveliness is reminiscent of a newborn baby", but not "make me a beautiful flower"), that prompt is copyrightable. That means you can use copyright to challenge others' rights to present the same prompt to a chatbot. But while the prompt can be copyrighted, the image it gives rise to isn't. So you can spend a month iteratively refining your prompt, consuming all your town's water along with 200,000 gallons of diesel and that prompt will be yours for your life plus 70 years, but the image it generates is in the public domain, and anyone can copy it, sell it or give it away.
There are other ways that copyright can find its way into AI-generated material. You can make creative edits to it: if you output a slop novel and rewrite various sentences (providing those rewrites involve some creativity and not just mechanical corrections or word substitutions), then the edited sentences become copyrighted works, even though all the rest of the text remains uncopyrightable.
You can also get a "thin" copyright through selection. If you get your chatbot to output many images based on your prompt and choose your favorite, your selection can confer a tiny bit of copyright over that creative act of selection, but it will be harder to defend than even the other (attenuated and highly specific) forms of copyright.
Now, perhaps you've spotted an administrative problem lurking in this turn of events. How can someone else know what part of a work is AI-generated (and thus in the public domain) and which parts are human-edited/contributed (and thus copyrighted)? Just as importantly, how can you prove which parts of your work are not AI-generated and thus eligible for copyright protection.
This gets especially gnarly when you're dealing with complex media. In an animation, an AI might do the rigging and movement for a human-created sprite. The sprite is copyrightable, but its movements aren't. That would mean that I could remap your sprite's movements onto a different sprite without infringing your copyright. Or say the sprite and its movements are human created (and thus copyrighted), but the backgrounds are procedurally generated? I could take those backgrounds and put new animations overtop of them.
The simplest, most reliable way to ensure the works you invest in are fully and entirely eligible for copyright is to just use humans for the whole project. Declare a "no-AI policy," and hire human artists to produce the works you hope to sell. Monitor their activity to ensure they're not using AI. Keep good records.
Now, as much as I like the idea that we've arrived at a copyright law that insists that a company can only get exclusive rights to its products by paying human artists to make them from end-to-end, I don't think that's likely to be the way it shakes out, but that doesn't mean that this is a wash for artists.
The reality is that copyright claims are always "fact-intensive inquiries" that are expensive to litigate and difficult to adjudicate. It's completely normal for copyright lawsuits to turn on documentary evidence gleaned from fragmentary records. This is simply intrinsic to copyright, because copyright is a doctrine that requires judges to assess whether things are "creative" and "original" as though these were freestanding categories that everyone could agree upon.
Of course, the rules of copyright can make this harder or easier. One way in which the rules make deciding copyright cases much, much harder is copyright's broad prohibition on "formalities" ("formalities" is how copyright wonks refer to "red tape" or "paperwork"). For nearly all of American history, copyright ran on a key formality: deposit, registration and notice.
To secure a copyright for a new work, an artist (or their employer) had to send a copy of that work to the Library of Congress (deposit), along with paperwork detailing the claim of authorship (who made this, what parts of it did they make) (registration) and they had to display a copyright notice that told you who held the copyright to every work that was registered (notice). Both the filing and the notice required careful attention and precision, and screwing either one up could result in your losing your copyright. It's an open secret among copyright scholars that Walt Disney screwed this up with the first Mickey cartoons, meaning they've been in the public domain since their release:
This system of copyright formalities meant that you could always tell whether a work was copyrighted, you could always find out who claimed the copyright over it, and which parts of the work were claimed under copyright and under what basis. What's more, formalities created the Library of Congress, since the LoC acted as America's "copyright deposit" library, holding deposit copies of every work that had ever been issued a US copyright.
The US system of formalities was descended from the English system, in which the Stationers' Guild used a copyright registry to establish who had the rights to which books. But there were competing copyright systems, notably the "continental" system that was codified through the Berne Convention, a copyright treaty drafted by Victor Hugo (yes, that Victor Hugo).
Among other things, the Berne Convention abolished formalities. Much of the world adopted Berne, but the US held out until 1976. With the 1976 Copyright Act, Congress brought the US into compliance with Berne, abolishing formalities in the USA. As a compromise, the 1976 Act requires US authors to register their copyrights in order to obtain "statutory damages" (up to $150,000 per work). That's a pretty good incentive, but even with that incentive, the vast majority – far in excess of 99.999999999999999999999999999999999999999% – of all copyrighted works are not registered with the Copyright Office. They are born copyrighted from the moment they are "fixed in a tangible medium" until 70 years after their authors die. But without registration, you can't know when that copyright clock started ticking because you have no way to verify who the author of the work is. This not only makes it incredibly difficult to establish the copyright status of nearly every copyrighted work, but it also means that in nearly every case, you can't readily determine who you should approach if you want to pay them for a copyright license.
Abolishing formalities has created a universe of orphan works: everything from napkin doodles to kindergartners' finger paintings to message board posts. Within that universe is a kind of gaseous cloud that, if condensed, would come out to an infinitesimal planetoid, representing the entirety of commercial works whose authors give a damn about their copyright status. It's a bad, bad system.
This system doesn't do away with the need to keep careful records: like I said, copyright disputes usually require the close examination of documentary evidence. What formality abolition accomplished was the destruction of the regular system of record-keeping: rather than having a standard, universally agreed-upon way to determine the status and resolve disputes about a copyrighted work, now we have the scattershot, incoherent system that makes copyright disputes far more likely (because no one knows who to approach for copyright licenses) and far more difficult to resolve (because there's no registry of copyrighted works).
Which brings me back to the question of AI and copyright. If a firm uses some AI in its work, it's going to need to document that very carefully. Firms that don't keep very close track of the elements of their products that come from AI will have a far harder time defending their commercial interests.
Basically, we're about to recreate formalities, but managed by the private sector. To the extent that companies use AI in their work, they are going to have to track every pixel and every word and every note that is output by an AI system, and which parts were added or edited by humans after creation.
That means that companies that want to protect their commercial interests aren't just going to get more protection based on how much work they get humans to do; they're also going to have to treat copyright's government-enforceable monopoly over expressive speech with the gravitas it deserves: not something you get automatically, but something you have to do real administrative work for.

Voting machines left unattended, as usual https://blog.citp.princeton.edu/2026/10/27/voting-machines-left-unattended-as-usual/
In China, the AI bubble has already burst https://www.reuters.com/world/china/china-ai-bubble-has-already-burst-2026-10-26/
No one loves you more than Exxon https://www.youtube.com/watch?v=yJyQXGynwsgz
"The Bottle Imps" — new short fiction by Rudy Rucker and Bruce Sterling https://boingboing.net/2026/10/30/the-bottle-imps-rudy-rucker-bruce-sterling.html
#25yrsago Slushpiles v anthrax https://memex.craphound.com/2001/10/29/some-publishers-have-instituted-new/
#25yrsago Image analogies https://mrl.cs.nyu.edu/projects/image-analogies/
#25yrsago Cleaning the Fucking Kitchen for Dummies https://web.archive.org/web/20011007082222/https://www.fridgemagnet.org.uk/kitchen.html
#20yrsago Last minute changes snuck into Aussie DMCA https://web.archive.org/web/20061104133320/https://www.eff.org/deeplinks/archives/004975.php
#20yrsago Creative Commons 3.0 license drafts published https://creativecommons.org/2006/10/30/version30revisedlicensedrafts/
#20yrsago Bush legalizes martial law https://politics.slashdot.org/story/06/10/28/1934208/bush-signs-bill-enabling-martial-law
#20yrsago No blogging allowed at “consumer generated media” conference https://web.archive.org/web/20061108055635/http://gregverdino.typepad.com/greg_verdinos_blog/2006/10/social_media_fi.html
#20yrsago Li'l Sparky: miniature 9V electric chair https://www.flickr.com/photos/84221353@N00/281833134/in/pool-make/
#20yrsago New Starbucks stores to open across the street from each other https://www.spokesman.com/stories/2006/oct/29/starbucks-buzzes-along-with-expansion/
#15yrsago HOWTO defend yourself against tear-gas https://web.archive.org/web/20111030230740/http://www.stumbleupon.com/su/5Fe8Ye/motherjones.com/mojo/2011/10/ows-flier-defending-against-tear-gas
#15yrsago How to make a computer that doesn’t lock out GNU/Linux https://web.archive.org/web/20120113141447/https://www.linuxfoundation.org/sites/main/files/lf_uefi_secure_boot_open_platforms.pdf
#15yrsago Microsoft buys Skype, attacks reverse engineer with bogus takedown notices and florid language https://www.phoronix.com/news/MTAwNzI
#15yrsago Justin Bieber: senator who sponsored anti-streaming bill should be “locked up — put away in cuffs” https://arstechnica.com/tech-policy/2011/10/justin-bieber-streaming-bill-author-should-be-locked-up/
#15yrsago SOPA in depth: the worst-ever copyright proposal in US legislative history? https://www.eff.org/deeplinks/2011/10/sopa-hollywood-finally-gets-chance-break-internet
#15yrsago Fresh German police-malware uncovered; everything the police said in defense to date revealed as lies https://www.ccc.de/en/updates/2011/analysiert-aktueller-staatstrojaner
#15yrsago Russia dumps daylight savings https://www.bbc.com/news/world-europe-15512177
#15yrsago Class War funnies: 1935 Daily Worker comics https://philnel.com/2011/02/02/hoff_teeth/
#15yrsago Christian groups: we will bodily protect Occupy London from St Paul’s https://www.theguardian.com/uk/2011/oct/29/christians-defend-occupy-london-protest
#15yrsago Dean of St Paul’s resigns over plan to evict OccupyLondon https://www.theguardian.com/uk/2011/oct/31/dean-st-pauls-resigns-occupy
#15yrsago The future of the living room: Authorised Domain https://dn711102.ca.archive.org/0/items/Cory_Doctorow_Podcast_215/Cory_Doctorow_Podcast_215_Authorised_Domain.mp3
#15yrsago Sales tax is still regressive, gravity still sucks, and George Osborne is still a delusional ideologue https://www.bbc.com/news/business-15519727
#15yrsago Prince Charles exercises a secret veto over a wide swath of UK legislation https://www.theguardian.com/uk/2011/oct/30/prince-charles-offered-veto-legislation
#15yrsago London cops recording movements & association with mobile tracking device: “blanket & indiscriminate” https://www.theguardian.com/uk/2011/oct/30/metropolitan-police-mobile-phone-surveillance
#10yrsago The Shadow Brokers dump more intel from the NSA’s elite Equation Group https://medium.com/@shadowbrokerss/message-5-trick-or-treat-e43f946f93e6#.x2c36nsfq
#10yrsago Wells Fargo blackballed employees who refused to commit fraud, forcing them out of the industry forever https://www.npr.org/sections/money/2016/10/28/499805238/episode-732-bad-form-wells-fargo
#10yrsago Listen: free recordings of Edgar Allen Poe stories, read by Vincent Price and Basil Rathbone https://open.spotify.com/album/6xDmRcD6sgsGbDvBRpyH5H?play=true&utm_source=open.spotify.com&utm_medium=open
#10yrsago How Minnesota’s governor performed an economic miracle by raising tax on the rich and increasing minimum wage https://www.huffpost.com/entry/mark-dayton-minnesota-economy_b_6737786
#10yrsago Icelandic women walk off the job 14% early to protest 14% pay-gap https://www.teenvogue.com/story/women-iceland-protest-gender-wage-gap
#10yrsago Snowden to journalists: your best defense is legal limits on spying, not cryptography https://medium.com/global-editors-network/e-snowden-against-surveillance-journalists-engagement-more-efficient-than-encryption-dbfbacdf9463#.jd6u431fo
#10yrsago After North Carolina Republicans banned cities selling internet, a town decided to give it away instead https://arstechnica.com/information-technology/2016/10/city-isp-makes-broadband-free-because-state-law-prohibits-selling-access/
#5yrsago LaserWriter II https://pluralistic.net/2021/10/29/norwegian-potato-flour-enchiladas/#r2r
#5yrsago Now, Put It Back! https://pluralistic.net/2021/10/31/now-put-it-back/
#1yrago The internet was made for privacy https://pluralistic.net/2025/10/31/losing-the-crypto-wars/#surveillance-monopolism
#1yrago When AI prophecy fails https://pluralistic.net/2025/10/29/worker-frightening-machines/#robots-stole-your-jerb-kinda

Courtenay: Enshittification (Sid Williams Theatre Society), Nov
10
https://www.sidwilliamstheatre.com/events/cory-doctorow-talks-enshittification/
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
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/
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
How We Could Have Backdoored Bash (Hacktron blog) [LWN.net]
The Hacktron blog documents how the group was able to compromise the GNU Savannah forge and could have pushed malware into any of the projects hosted there.
Using Hacktron, we found that an email address like a`touch${IFS}/tmp/savane-rce-proof`@attacker.example gave any registered user code execution on its backend. From there, we made our account a superuser, impersonated Bash's maintainer, and confirmed we could add an SSH key with push access to the upstream Bash repository. An unpatched kernel gave us root access and access to a GNU backup server. We reported it to the FSF on May 11, 2026.
Ludovic Rousseau: New version of PyKCS11: 1.5.21 [Planet Debian]

I just released a new version of PyKCS11, a Python wrapper above the PKCS#11 API.
See PyKCS11 introduction or PyKCS11’s documentation.
The project is registered at Pypi: https://pypi.org/project/PyKCS11/
1.5.21 - October 2026, Ludovic Rousseau
getMechanismList(): do not
return mechanism 0x1D (debug code introduced by mistake in release
1.5.19)
build binary wheels for Python 3.15
BTW, I have been writing on Twitter the way I used to write on
my blog. Paragraph after paragraph, and I go on, but I do
eventually re-read it and it has the energy I haven't had in a long
time. I think people now realize we are stuck. And in networking
systems, I'm the guy you go to when you want to get unstuck.
Reminds me of that great speech in Michael
Clayton: "I'm not the guy you kill. I'm the guy you buy! Are
you so fucking blind that you don't even see what I am? I'm the
easiest part of your problem, and you're gonna kill me? You're so
fucked."
Russell Coker: Links October 2026 [Planet Debian]
Artem wrote an interesting blog post about trying and failing to contain a LLM agent with VMs, they think this is bad but I think it’s great that more bugs are being discovered and could then be fixed [5]. I now want to try this sort of thing on replicas of my own systems!
404Media has an interesting article about the ways that “AI” agents are ruining the Internet [10].
Ludovic Rousseau: New version of PySCard: 2.3.2 [Planet Debian]

I just released a new version of pyscard. PySCard is a Python module adding smart cards support (PC/SC) to Python.
The PySCard project is available from:
I removed the distribution from sourceforge. Use PyPI instead. On PyPI you wil get a red alert "Incomplete provenance" for the source code file pyscard-2.3.2.tar.gz. This is because I manually uploaded it using twine (as before). The next release will be uploaded to PyPI by a github action (as is already the case for the binary wheels).
No code change in this release.
I created a new release to ensure that the binary wheels for Python 3.14 and 3.15 were uploaded to PyPI. This is intended for systems that are difficult to use for rebuilding PySCard, particularly Windows.
add builds for Python 3.14 & 3.15
Minor changes
I wish I really were a Traveler of all of space and time. [WIL WHEATON dot NET]
It’s only been like ten minutes since I found out, just before it hit the press, so I’m staggered and doing my best to process everything, while my phone is blowing up. There will be wonderful obituaries and reflections from so many people who knew him. I’m going to do my best to write my own, but that’s going to take a little bit.
This was taken when we filmed Journey’s
End.For now, I want the world to know that Patrick wasn’t just my captain or my castmate; he was my friend and mentor. He made me a better actor, just by being in scenes with me. He never treated me like I was a kid; he always treated me like I was an equal, a fellow artist, at a time when I wasn’t mature enough to understand how precious that was.
I haven’t seen Patrick in a long time, our lives and schedules being what they are, but I thought about him almost every day. He rarely posted in our group chat, but when he did, it always made me smile. He always texted me back when I reached out to him directly, no matter what it was about, and he always — always — made me feel special.
I wish I really were a Traveler of all of space and time, so I could go to him, one final time, and tell him how much he means to me. I think he knew, but still.
There is so much more to say, and it’s going to take me some time to say it. Until then, I loved him, the same way I love the rest of the space family we shared. May his memory be a blessing.
in which i am turned into a little plushie thing [WIL WHEATON dot NET]
I love this webcomic called Poorly Drawn Lines, particularly a character called Mouse. I identify heavily with Mouse.
So about two years ago, when Reza (who writes and draws the comic) partnered with YouTooz to make a Mouse plushie, I smashed that pre-order button so hard it left a dent on the screen.
About a year ago, someone from YouTooz reached out and asked if I wanted to make a little plushie of my own with them. Of course I said yes, and immediately got to work spitballing what it would look like. I eventually settled on Bedhead, a coffee mug, my octopus tattoo, and a black t-shirt with a design that celebrates my allyship, my love of tabletop gaming, and being punk as fuck.
Here’s what he looks like:
Isn’t he adorable? His little coffee mug is attached with velcro, so you can take it off and replace it with whatever you like, limited only by your imagination and the laws of physics.
I’m from the Star Wars figure generation. Getting an action figure of myself when I was a teenager was a really big deal for me. When Funko did a Wesley Crusher, I just about lost my mind. So getting a little plushie dude who is such a fantastic representation of me is also exciting and a whole lot of fun. My sample has been hanging out with Mouse in the bookcase, and they are very happy together.
YouTooz is taking orders for the next 26 days, and it’ll ship early next year.
Hi, I’m Wil and this is my blog. I actually write meaningful things here more often than I promote things here. If you want to get my posts delivered to your inbox, here is the thingy:
i had so much fun telling a story to a live audience, i think i’m going to do it again [WIL WHEATON dot NET]
So I did my live reading of The Body Snatcher at Geeky Teas yesterday, and I felt great about it.
At the beginning of the show, I asked the audience how many of them were subscribed to my podcast, and only four or five people raised their hands, out of about 60 people in the room. As a podcaster, I would love for that number to be, like, ten times that, but as a guy who wondered if anyone would show up to watch him read a Victorian horror story, I was thrilled.
I know that it’s a big ask to come see me read a story that’s over 150 years old, especially if you don’t know me as a reader and storyteller, so the fact that all these people showed up for me, well … that’s really cool.
I told them at the top of the show that I genuinely did not know how it was going to go, that they could be at the very beginning of something I do for a long time, or they could be at the opening night and closing performance of a very bad idea. Either way, I promised, it would be a memorable experience.
Friends, can I tell you how wonderfully surprising it was to feel the entire house connected to me and the story for the entire time? This is a dense story, the writing is challenging, and I knew I had a lot of work to do, to bring it to a contemporary audience in a way that was accessible while remaining true to the material. I was just overjoyed to feel the audience was with me the entire way, a lot of them connected enough to laugh at the very subtle, very dry humor that shows up briefly in the third act.
As a proof of concept, as an answer to the question, “Will an audience show up for me, and can I entertain that audience with a story?” This was an unmitigated success. I am definitely going to do this again, with a modern story from a contemporary writer.
While everything inside the house went well, I did have a complete technical failure on my stream to Patreon, and I still don’t know why. With about 20 minutes left in the reading, my laptop just went to sleep for no obvious reason, and it took the livestream down with it. I couldn’t exactly stop in the middle of the show to troubleshoot it, so if you were watching, I am so sorry it shit the bed. As a fun bonus for me, the local recording failed right alongside the remote recording, too.
So that sucked, and the next time I attempt to livestream something like this, I’m going to get someone else to handle all of it for me, so this doesn’t happen again.
Finally, on a very personal note, this entire experience was deeply meaningful to me. From the moment I had the idea to do a live show like this, all the way through doing the entire show, I never once doubted myself, felt like an imposter, heard Carrie’s mom screaming “they’re all gonna laugh at you!” or anything like that. I felt excited to get up in front of an audience, and entertain them for about an hour. I felt excited to do this thing that I sincerely and genuinely feel good about, this thing that I absolutely own as an artist, this thing that I have worked hard to master, that I believe I am pretty good at doing.
It’s always been a challenge for me to embrace the joy and or have any sense of deep satisfaction in my creative work, but all the work I’ve done to overcome and heal so much trauma seems to be working, and I have time and space to feel confident and secure in my creative self.
For maybe the first time, ever, I don’t feel like I need to make myself small, or beg for permission to make the art I care about, and if that feeling persists … well, I am so excited to let it fill my cup until it overflows with creative ideas. Maybe I’ll even find my own story to write in there, somewhere.
Hi, I’m Wil. I’m so happy that you’re here. This is my blog. I host It’s Storytime With Wil Wheaton. If you’d like to have my posts delivered directly to your inbox, here is the thingy:
The Hallmark dilemma [Seth's Blog]
The slogan is “when you care enough to send the very best.”
But more accurately, it’s “when you don’t care enough to be on the hook.”
For a low-stakes social interaction, the Hallmark card is a convenient and safe solution. Low-risk, it gets the job done. People don’t blame you for letting someone from Kansas say a nice thing on your behalf.
Now, it’s happening at scale. If you want to be left off the hook, AI is a convenient excuse. Do what it says. Ask it what to dress up as for this Halloween, or what to write in your marketing copy. Let it design your website or write your resume. Perhaps you could have it write your wedding vows as well.
Our culture prizes convenience ahead of just about everything else, and AI slop is convenient. It saves us time but it also saves us emotional labor.
The dilemma is obvious. Unlike a Hallmark card, AI is available to do just about everything. And when we’ve streamlined our life to a convenient nub of its former self, then what?
There’s a different path. Insist that AI ask you questions. Challenge it to challenge you.
Then choose. Sign your work.
AI isn’t the cause of slop, and it’s not a good excuse for slop either.
Sculpt OS 26.10 releases [OSnews]
Sculpt OS 26.10 brings quite a few new features, like scalable cursors, support for UK keyboards, better webcam support, and more, but the real meat of this release is much tastier.
First, Sculpt 26.10 is the first version based on Genode’s custom microkernel instead of relying on a 3rd-party kernel. This kernel – designed from the ground up for the needs of Genode and Sculpt OS in particular – is not only more “micro” than any other of the microkernels supported by Genode, it also solves long-standing deficiencies concerning CPU scheduling and kernel-memory management. Sculpt OS finally stands on Genode’s own footing!
[…]
Finally, Sculpt OS 26.10 pays tribute to this year’s overall theme of “building bridges” by featuring our software development kit (Goa SDK) running directly on Sculpt OS without virtualization. This entails a wealth of tooling including GCC, Binutils, Git, Sequoia, Expect, Curl, man, Make, and CMake having landed on Genode. Although still young and not time-tested yet, it shows what’s possible today and allows us developers to gradually shift more and more development routine into this self-hosted environment, stressing the general-purpose qualities of Genode and motivating further optimizations.
↫ Sculpt OS release 26.10 announcement
This new release also completes the transition from XML to Genode’s own HID language for configuration, moves from VirtualBox 6 to 7, and upgrades a whole slew of its Linux-based drivers
How long do you need to hold down the power button to turn off a PC? [OSnews]
Raymond Chen published another story from the Windows development trenches, this time about what happens when you hold down the power button.
If you hold a PC’s power button for 12 seconds, it will turn off at the hardware level without notifying the operating system. This is a safety feature so that you can turn of the computer even if the operating system’s “Shut down” command isn’t working.
After eight seconds of the power button being held down, the Windows kernel realizes that the user is trying to do a force-power-off of the system, and it quickly takes a kernel dump that can be uploaded to the Windows Error Reporting service the next time you turn the system on.
↫ Raymond Chen
I’m a bit confused by these numbers, because I have never seen a PC take this long to power off when holding down the power button; usually it takes only a few seconds to do so, meaning Windows would never generate said kernel dump. I tried reading through the various ATX specification documents to find more information on this, but then I remembered I’m not an electrical engineer so I have no idea what I’m looking at.
The baseline is that ATX always provides standby power to the motherboard, and pressing the power button shorts the power button pin to ground, telling the PSU to power on fully. Pressing the power button if the computer is running tells the operating system to initiate a shutdown (although you can change this behaviour), but if you hold the button down for a certain number of seconds, it forces a power-off. So far, so good; basic information.
It seems that the length of time you need to hold down the power button to force a power-off is dependent on the motherboard in question, handled by a microcontroller or some other IC. Virtually every source I can find says this timing is set to about 4-5 seconds, which is quite a bit shorter than the number of seconds given by Chen. Perhaps motherboard manufacturers consider the 12 seconds to be too long, and just do their own thing, regardless what the ATX specification suggests?
What further complicates matters is that Chen details how the kernel dumps created after pressing the power button for 8 seconds do, in fact, get sent to Microsoft once the computer turns on again. In fact, he is one of the people who gets to see these dumps and respond to them, so obviously they are indeed rolling in. Does this mean there’s a huge number of computers out there that require you to hold down the power button for 12 seconds to force a shutdown that nobody’s ever seen?
These emergency kernel dumps are internally classified as “long power button hold” (LPBH) failures. One of the pieces of information recorded in these emergency kernel dumps is whether the screen consists entirely of black pixels. Those failures are sub-classified as “black screen LPBH”, and they go to a special virtual team for analysis. (I happen to be a member of this black screen LPBH team.)
↫ Raymond Chen
What’s going on here? Obviously, I’m not going to doubt Chen, so there must be something here I don’t quite understand or that I’m missing. The ATX specification might suggest 12 seconds, but could Windows perhaps adapt its kernel dump behaviour – dumping much sooner than 8 seconds – based on the motherboard it’s running on, maybe through information provided by the chipset drivers?
I would love it if someone more knowledgeable than me can help us unravel this small mystery.
How curl was accidentally Turing-complete for nine months [OSnews]
From curl 8.12 through 8.16, config files could slice variable values and include other config files without an explicit depth cap. Together, these features let curl simulate any two-counter Minsky program. Under the usual idealization of unbounded strings and resources, this construction was Turing-complete.
Curl 8.17.0 added a five-level include cap that breaks this reduction.
↫ Nicolas Seriot
Neat.
The Microsoft building that was reportedly haunted [The Old New Thing]
Earlier this year, Microsoft sold what was known as Building 22, an office building just up the hill from what is now the Overlake Village Station stop on the light rail 2 line.¹ The build was demolished in late June, bring an end to a creepy piece of Microsoft history.
Building 22 began its life in 1982, when construction began on what was then known as the Koll Center Overlake business park. The building was owned and operated by The Koll Company, a commercial real estate company, and was scheduled to be completed in the middle of 1983.
In February 1991, Microsoft purchased the building from Koll, and by July it was occupied by the International Product Group.
During its time as a Microsoft office, Building 22 was believed by many to be haunted. The descriptions ranged from “it was creepy to say the least” to “the ghosts were quite benign” to “those ghosts were no joke”. Evidence included a phenomenon nicknamed “sick building syndrome” that made many people ill, elevator doors opening randomly, unexplained whistling or rattling sounds from the windows, occasional ghost spottings in the hallway, and at least one time that a car’s parking brake failed, causing the empty car to roll down the hill and collide with another car. Did a ghost release the brake? Who knows?
At the time, there was a Group Health hospital complex next door.² Somehow, the story got around that Building 22 had previously served as the morgue³ for the hospital, and I suspect that the ghost stories and the morgue theory developed in tandem. However, research by Microsoft’s own archives team could not find significant evidence that the building was ever a morgue, despite people insisting with certainty that their office was exactly where the morgue used to be.
Haunted or not, the new owners of the building intend to build apartments on the property. Were the ghosts sold with the building? Will the new apartment be haunted? We’ll let the future residents decide.
Bonus chatter: An old Channel 9 video introduces us to Building 22, ghost included.
Bonus bonus chatter: Another morbid reputation that Building 22 had was that it where teams were “sent to die”, meaning that they were transferred to the building as a final stop before the team was disbanded.
Some people nicknamed Building 22 “Hotel California” or “the black hole” because once you were assigned there, it was almost impossible to get out. You might get moved to another building, but somehow you ended up back in 22. One person who managed to escape quipped, “The longest two years of my career were the six months I spent there.”
Part of what contributed to the dreary reputation of Building 22 was that due to the steep slope of the terrain, half of the bottom floor was underground. One person who had an office on the bottom floor said that it was comfortably cool in the summer, but freezing cold in the winter.
Another quirk of the building was that there was bridge from the uphill side directly into the second floor. People on the first floor whose offices were in the shadow of the bridge nicknamed themselves “trolls”.
¹ Not to be confused with “The Village at Overlake Station”, a residential complex about four blocks from Overlake Village Station.
² The property was sold in 2009 and is now the Esterra Park development.
³ An alternate rumor was that the building used to be the psychiatric ward for the hospital, and the room above the atrium was allegedly the padded room for people at risk of hurting themselves. Some people reported hearing screams from the padded room area.
The post The Microsoft building that was reportedly haunted appeared first on The Old New Thing.
Rewriting Copyright Law for Generative AI Would Hurt Everyone [Deeplinks]
In courts across the country, publishers and creators are suing large AI companies for training generative AI models on copyrighted works. It’s easy to see these cases as a David-and-Goliath showdown between authors and publishers fighting for a cut of Big Tech company profits. But this fight is actually much larger. It affects billions of people who aren’t represented in the case at all, including researchers, artists, activists, journalists, people with disabilities, and anyone who accesses and shares content online.
That’s why EFF is stepping in to defend the public’s rights in these cases. Today, EFF filed an amicus brief in In re OpenAI, explaining how the court’s ruling on fair use could impact people worldwide. If fair use gets narrowed, it will impede work that benefits the public, like medical research and investigative journalism, and even limit access to privacy protection tools.
Let’s be clear: creators and workers deserve support as AI changes their fields, and Big Tech companies must be held accountable for the harms they cause. But giving copyright holders more control over the web won’t accomplish either of these goals. If the plaintiffs prevail in these cases, courts would have to rewrite copyright law in ways that hurt everyone except powerful media and tech companies.
Copyright exists for one reason: to stimulate creativity and innovation in service of the greater public good. Unfortunately, the plaintiffs in this lawsuit are arguing to limit everyone’s fair use rights, in ways that would thwart the basic purpose of copyright. The harms of shrinking fair use will go far beyond generative AI, impacting everyone.
Initial speculation that AI models would be infringement machines, churning out works highly similar to those on which they were trained, has proven unfounded. And courts have already found fair use in cases where copyrighted works were used to train generative AI models, recognizing that training uses those works for a fundamentally different purpose.
Plaintiffs in these cases argue that, even if the use is transformative, using their works to train AI is still unfair, because the AI models could generate new, non-infringing works that might compete with plaintiffs’ own works. They also argue that scraping or downloading the data without permission—or in some cases, from websites containing infringing copies—was independently infringing and/or rendered any subsequent uses of that data unfair.
These arguments would put beneficial research and reporting at risk. First, if copying without permission rules out fair use, the law will never protect transformative uses that benefit us all. Researchers, journalists, and other watchdog groups gather information the same way AI companies do—but they do it to serve the public interest, and often to hold Big Tech itself accountable. For example, journalists and nonprofit researchers have used “crawling” or “scraping” to investigate potentially anticompetitive practices by tech companies, and research misinformation and hateful content posted on X. Their data acquisition techniques are virtually identical to those used by AI giants—but they lack those companies’ deep pockets.
Requiring users to show that copyrighted material was lawfully obtained would also threaten everyday internet use. As EFF’s brief explained, that requirement would “cast legal doubt on the billions of copies we collectively make every day through routine online activities like opening emails, clicking on an embedded link, visiting websites, sharing pictures, streaming music, and watching videos. All of this activity requires intermediate copying.”
Fair use is what lets us all use the internet without being compelled to track the source of every image, video, and article that we click on, and make sure the rights are all cleared.
Additionally, while rightsholders are understandably concerned about competition from AI generated works, copyright law exists to promote new creation, not protect authors who published first. Under the plaintiffs’ theory, no one could stand upon the shoulders of giants. Copyright could prevent people from writing new books inspired by themes in a favorite novel or genre, or prevent academic researchers from publishing literature reviews that distill insights from prior research—simply because readers might prefer those new publications over those that came first.
Finally, general-purpose AI models are neither designed nor usually used to create works targeted at any particular market. These models have been used to generate new insights and tools for medicine, science, journalism, art, and accessibility. For instance, an AI-powered tool called Be My AI uses Open AI’s GPT models to provide visual descriptions for people who are blind or have low vision. Generative tools have also accelerated scientific research, and researchers have used these tools to develop new medical treatments and medications for conditions previously thought to be incurable.
Some creators and publishers argue that AI developers should just get a license. But requiring permission for every work used would give the largest companies massive advantages over small competitors and impede academic research. As Professor Lawrence Lessig recently noted:
If all training requires a license, then none but a handful of tech giants will be able to afford the costs of training. That’s not because authors are greedy but because the copyright system is the least efficient property system known to man.
Moreover, creators are unlikely to benefit from these licensing arrangements in many cases. Media and entertainment giants have exploited the imbalance between themselves and underpaid working artists for decades. Trying to help creators by giving them more rights under copyright is, as Cory Doctorow has written, like trying to help a bullied kid by giving them more lunch money for the bully to take. Artists aren’t getting good deals from record labels or publishers now; there’s no reason to think these companies, which already own the copyrights, will treat artists more fairly once they control the data that powers AI.
AI technologies will affect all of us, and copyright law is ill-equipped to address many of these consequences. The rules governing these technologies should be rules that serve the public—not just the small number of companies that can afford to litigate copyright battles for decades, or settle for billions.
[Filler] Happy Halloween 2026! [Twokinds]
Comic for October 30, 2026
Why VPNs Are Worth Defending [Deeplinks]
Developers of virtual private network (VPN) apps are reporting that their products are again being pulled from Apple’s App Store in Russia. This is an unacceptable crackdown on a vital tool to protect privacy and speech online.
Why? VPNs give people a way to control their own online activities. When you visit a website through a VPN, that website only sees the VPN server's location (well, IP address) rather than your actual location. It's like sending a letter through a P.O. box so the recipient doesn't know where you really live. It can also disguise where you’re accessing information from, which can make it possible to access information banned by your government.
This is an unacceptable crackdown on a vital tool to protect privacy and speech online.
Going after tools that give people the space to communicate and access information freely is a common tactic from the totalitarian playbook. This latest demand comes after several steps the Russian government’s taken to surveil speech specifically on Apple products. In 2024, the Moscow Times reported that Russia’s state media watchdog, Roskomnadzor, went after VPN apps on the Apple App Store, after banning access to Western social media platforms and blacklisting opposition media sites. Russia then blocked Apple’s FaceTime software in 2025, according to Apple Insider.
Bloomberg also recently reported that the Russian government has added Apple and Microsoft to its state surveillance registry. This gives Roskomnadzor access to local users’ correspondence, Apple Insider reported, and puts both companies in a position to turn over customer information to the country’s security services as required.
With government control encroaching on their devices and less access to tools that give them alternate methods, people in Russia are left with shrinking options to communicate online or find information that isn’t state-sanctioned.
While Russia’s actions offer a more extreme vision of what happens when the government tries to enforce speech rules by attacking vital privacy tools, it is far from the only government doing so. Several states in the U.S., bent on making it difficult to circumvent invasive age-gating laws, have suggested banning VPNs—either to access certain content or in some cases to simply ban them outright. EFF has publicly (and loudly) criticized these proposals, because going after VPNs is a dangerous step down the road of censorship.
Attacks on speech and privacy online are deeply troubling, no matter where they happen. What those in power may see as a “loophole” in their invasive laws is actually an expression of user control. We’ll continue to speak out when we see governments going after them to take that control away.
Friday Squid Blogging: Bigfin Squid Off California Coast [Schneier on Security]
Neat video:
The sighting, announced September 2, marks the first time anyone has spotted a live bigfin squid, which belongs to the Magnapinna genus, in the northeastern Pacific Ocean.
As usual, you can also use this squid post to talk about the security stories in the news that I haven’t covered.
I've been watching short videos about training dogs, and really opening my eyes, and it helps when working with Claude. Always try to be positive, until there is behaviour you have to correct and then yank the leash, and when they do the right thing reward them with a treat (or whatever passes as a treat).
I'm not even kidding; with Valve's AI Disclosures, they really have founded a wholly new mode of expression. You can reverse engineer how a developer feels about the disclosure by a close reading of the text, you can unfold the interior part of their skull and walk around in it. I bet it does suck. I'm honor bound to understand the why, and AI coding is growing normative in the space. It's hard to truly have beef with such a clannish, propagandized cadre. I mean, my doom is to understand why even a mortal enemy might dislike me; I routinely extend greater humanity to my utter foes than I have ever received in return. It helps that many of them have been cartoon villains, desperate to distract from their own monstrous conduct. Ask Max Temkin, or Scott Gaynor. I know exactly why they did it. I never lifted a finger, and I didn't have to. Vengeance is mine, saith The Lord.
Reproducible Builds (diffoscope): diffoscope 336 released [Planet Debian]
The diffoscope maintainers are pleased to announce the release
of diffoscope version 336. This version
includes the following changes:
[ Chris Lamb ]
* Drop Recommends: guix from the diffoscope-minimal package.
(Closes: #1114739)
You find out more by visiting the project homepage.
Highly recommend the interview between Scott Galloway and Heather Cox Richardson. Quite a combination of minds. Don't skip to the end but don't miss it, they explain how blogging allowed them to route around the gatekeepers. That's the point. But imho you have to leave the door open to those who are inspired by you, and Substack isn't the best place for them. Please keep your ears open to new less tech industry ways of getting your ideas out. The bigco's haven't just screwed up the political system, they've also screwed up the web. The web needs all our help as does democracy, and the two imho are closely related.
Matthew Garrett: Getting Google Cast on my Soundbar [Planet Debian]

I have a Samsung Q800A soundbar. It ships with built-in support for the Apple Airplay protocol, but I’m not really an Apple kind of guy so that’s never been particularly helpful for me. So, instead, I have a Chromecast Audio plugged into it via TOSLINK, and that works fine - except for the fact that there’s no way to explicitly pick TOSLINK as the audio input. Instead, there’s a “Digital In” option that refers to both the optical in and eARC input from a TV. Not inherently a problem, given I’m unlikely to be watching TV while listening to music, but my TV is a Samsung Frame, a device that’s intended to display art whenever someone is standing nearby, and which infuriatingly generates an eARC signal even if it’s only in art mode and isn’t going to make any noise. This switches the soundbar away from optical and I get sad. I could plug a video cast device into the HDMI port on the soundbar and cast audio to that, but then the art would get replaced with album covers whenever I’m playing music, and again that’s not quite the ambience I want. Still, none of this is that important.
Until I learned that the Australian version of the soundbar does have Google Cast support. The firmware image was downloadable from Samsung support, so I grabbed that, but unfortunately found that it was encrypted. However, if I downloaded the firmware image for the US model, the encrypted blob was identical - there’s no difference in the underlying firmware between the two of them. So, how come one has support, and the other doesn’t?
I’d need an unencrypted copy of the firmware to have a real chance of figuring this out, and the easiest way to get one was to just run an ebay watch for a broken model of the same series. Once I had one in my hands I used hot air to remove the eMMC storage from the device, cleaned up the chip, and then stuck it in one of these adapters to read it on a local system. Samsung uses a weird in-house filesystem called VDFS4 on some of their devices and this was one of them, so I needed to cobble together a kernel that was compatible with their source dump for this device (not all VDFS drivers seem to be able to read all VDFS filesystems), but eventually I had it all extracted, and then I got distracted by other stuff, so let’s fast forward to this week.
Samsung makes use of a modified version of the Android Debug Bridge called sdb, which is included in the Tizen SDK. The firmware showed that this device had sdbd on it, and it would be executed if a network device called “huart0” was plugged in. Samsung does, thankfully, provide the source code for their GPLed components, so I could dig through that to discover that drivers/net/usb/usbnet.c had a bunch of references to huart (which apparently stands for “HyperUART”). If CONFIG_SAMSUNG_USBNET_HYPERUART_IFNAME is set, and if the ethernet device is using either the asix or ax88179_178a drivers, and if “/opt/etc/HyperUART_IP_Addr”1 isn’t just “0”, it sets the interface name to “huart0” and in turn triggers sdbd startup. So now I just needed to figure out how to set /opt/etc/HyperUART_IP_Addr to something else.
Some digging revealed a binary called wap-factory that referenced the file, which then led to /usr/share/mobile-mgr/jsons/com.samsung.audio.waapp-verification-test.json which mentioned a “SetUartOnOff” call, which brought me here2, which led me into a bit of a rabbit hole about the Samsung WAM protocol. Long story short, you connect to either port 55001 or 56001 and make two requests over the same connection:
|
|
and then plug in an asix chipset ethernet adapter into the USB
port (which on mine is micro-B, so I needed an OTG adapter), and
suddenly it’s sitting there on 192.168.250.250 and will speak
sdb to you. sdb root on switches it into root mode,
and sdb shell now gives you a root shell. I was in,
and now I could investigate what was happening.
First up, there was a process called “com.samsung.audio.google-cast-control-app” running, which seemed like a good start. Unfortunately it wasn’t doing anything. After some tracing I found that it was making a call to Samsung at startup time, and getting back a response telling it that Cast support wasn’t available. The request (which was helpfully dumped to stdout when I ran this by hand) included the country code, in my case “US”. Repeating the request by hand with curl and changing the code to “AU” told me it was supported, so now I needed to figure out how to get the soundbar to believe it was Australian. Some digging showed it was reading this from a config variable called db/comss/countrycode, and running
|
|
got me past that gate. Now, however, it was complaining that it couldn’t provision a key. /usr/apps/com.samsung.audio.google-cast-control-app/shared/res included a bunch of encrypted blobs and an app called teeStoreKey.elf, and tracing com.samsung.audio.google-cast-control-app showed it was trying to call that, but it seemed like it was failing with a permissions issue. Running com.samsung.audio.google-cast-control-ap directly as root triggered key provisioning successfully, and a few seconds later the rest of the Cast API came up and I could talk to port 8443 with standard Cast API calls. Unfortunately it still wasn’t working as a Cast device, though - it wasn’t advertising itself via mDNS and so nothing could see it. Querying the /setup/eureka_info endpoint gave me a clue - the ’tos_accepted’ field was false. Normally this would be set as part of initial device setup, but the Samsung app wasn’t doing that because it didn’t think the device had Cast support. It turns out that POSTing some json with {“tos_accepted”: true} to setup/set_eureka_info made it work, and suddenly there was an additional Cast device available to me.
(Update: I realised I didn’t mention anything about why it was doing key provisioning in the first place! The Cast protocol doesn’t enforce cryptographic identity as such, but Google’s reference client implementation which is what almost everything uses verifies that the device is presenting an identity that chains back to Google. Unsurprisingly they don’t want the private key material to be easily extractable and used to produce clone devices, so it’s all supposed to be encrypted and only accessible to some sort of trusted execution environment, which is why keys here need to be loaded into Trustzone and never be visible in the clear to the main OS)
Mission accomplished. Unfortunately the device vanished from my Smartthings home aferwards, presumably because there’s a mismatch between its reported country code and my account country. To get around that I’d somehow need to get com.samsung.audio.google-cast-control-app to either change the query without changing the global device country, or to ignore the response from Samsung (it does this every 24 hours, ugh), and that’s made more annoying by the fact that this thing will only execute signed binaries. Although, weirdly, one of the signed binaries shipped is a full Python interpreter, so if I cared enough I could probably cobble together enough Python to execute arbitrary binaries. I currently don’t.
More modern soundbars don’t implement the listener on port 55001 or 56001. I don’t know how you get sdb working on them.
[$] Removing binder.c [LWN.net]
The final talk at Kangrejos 2026 was about the removal of the C implementation of Android's Binder driver, the primary interprocess communication mechanism used on Android devices. Carlos Llamas announced that he had deleted the C code to general applause, and then shared some insights about what went into replacing the C implementation. Alice Ryhl, who has worked on the Rust implementation for some years, added her own thoughts about what the most difficult and interesting parts of the transition were.
Getting Smarter, Not Just Faster [Radar]
This event summary was created by Claude with light editing by Tim O’Reilly, based on a transcript of the event.
On October 15, 2026, Tim O’Reilly hosted Andrew Odewahn, CTO of O’Reilly Media, for an hour-long episode of Live with Tim O’Reilly, the interview series streamed live on the O’Reilly learning platform. Andrew has been at O’Reilly for many years, starting as an author, then building tools for the company’s platform, then eventually as CTO and head of engineering. Over the past year, his team has been building what the company calls Expert Intelligence, a suite of tools that connects an AI agent to an organization’s own systems, gives it a skill file describing how to reason about what it finds there, and grounds its analysis in the practitioner frameworks of the O’Reilly library. Andrew described the work in a recent Radar piece, “Building Organizational Intelligence.”
Tim and Andrew’s interview was organized around a presentation in two parts, the first on the research agent and the second on the system Andrew’s team built for reviewing what it produces, with discussion in between and audience questions throughout.
Tim framed the conversation by asking a question he said Andrew’s work helps to answer: Most of the AI story is about efficiency, doing the same work faster. What does it look like for an organization to get smarter?
Andrew’s research agent emerged from a personal need rather than a strategy. He wanted to know the status of a project, for example, how long a migration from RabbitMQ to Pub/Sub would take. This is the kind of question every engineer dreads but every engineering leader has to answer. He also had a broader concern. A single person being good at AI isn’t the same as an organization being good at it.
He built his agent in four steps. He mapped the organization’s information systems as a hierarchy, connected them via MCP, wrote a skill telling the agent how to use them, and finally added the Expert Intelligence layer.
The map of the sources of truth in the engineering organization’s workflows was what made the rest work. Andrew put them in order and explained to the model how they relate: Strategic goals and feature priorities live in Productboard. Those become epics, sprints, and stories in Jira. Stories become code in GitHub. A service catalog describes the roughly 300 services that make up the O’Reilly platform and who owns them, and observability tools show how those services perform against their SLOs. The skill also had to encode local quirks. Some teams mark an epic as finished with an end date, while others consider it done when every ticket is closed. Andrew also told the agent it was a research agent, not a coding agent, and that its job was to write reports.
Connecting everything through MCP was, in his words, “the most completely tedious step of the whole process.” Productboard had no MCP server at the time, so he wrote a wrapper. Later, when Tim asked how another company could repeat the work with a different set of tools, Andrew suggested starting from the vendor list. Export it from your procurement system, ask the model what products those vendors make and which would hold information relevant to the questions you care about, and have it put them in order. O’Reilly product managers are now turning this process into a skill for the forthcoming Expert Intelligence Skills Hub.
One audience member asked whether MCP was really the right tool for internal knowledge, compared with semantic search. As Andrew pointed out, sometimes anything is better than nothing. Ultimately, what you want is to give the model the ability to search across your systems.
The center of the presentation was a before-and-after comparison of the particular use case that Andrew had previously written up in his “Building Organizational Intelligence” article. An engineering manager asked Andrew to hire another engineer, and Andrew had his reporting and analysis agent make the hiring case. The first report covered the five-person team that manages content and metadata, the 10 tier-A services it owns along with its B and C services, the status of the Pub/Sub migration (64% complete), and the full backlog. It concluded that the team had a capacity problem and should probably hire. Andrew called it useful and very detailed. . .“maybe overly detailed.”
He then connected the agent to Expert Intelligence, asked it to act like a consultant, and ran the analysis again. The new report came to a very different conclusion. It opened by saying that the team’s operational overhead problem was “structural, not a staffing deficiency.” When it consulted Expert Intelligence, the agent brought in the concept of toil from Google’s Site Reliability Workbook. Toil is the manual, repetitive, automatable operational work that scales linearly with a service. The reporting and analysis agent used this notion to separate the team’s backlog into toil and the work people actually wanted to be doing. It recommended a structured toil audit before the next planning cycle, an explicit toil-reduction target, and treating runbook ownership as a first-class engineering artifact. Andrew said the team followed the recommendations and closed a substantial part of a backlog that had been sitting on everyone as a cognitive burden.
The report went on to cite Jim Highsmith, a signer of the Agile Manifesto and author of Wild West to Agile, to argue that the team’s technical debt was compounding. Andrew explained how that differed from the usual management advice:
A lot of the time when you read these high-concept frameworks, they’re like eating your broccoli. I should really be doing that. But what made this really interesting is that it pulled out a specific project we had, the Django upgrade, and put it within the context of this broader framework. It wasn’t just, “here’s an abstract principle you ought to be applying.” It’s “here’s your backlog, and here’s a specific example.”
A second analysis looked at services that crossed team boundaries. Drawing on microservices experts and Kent Beck’s work on coupling (see Tidy First?), it diagnosed the video metadata service as a complicated-subsystem problem rather than a boundary problem. In this version, Andrew had the agent pull out quotations, attribute them, and link to the source text. The resulting analysis was remarkably effective. The company has since retired a couple of systems. “I don’t need LLMs adding code,” Andrew argued. “I want them reducing it.”
Andrew said the part that surprised him most was the reaction from colleagues. His earlier reports were data dumps. Readers couldn’t tell where any given claim came from, and as a result they were much less actionable. When the analysis cited experts that engineers knew from their own work, the documents became, as he put it, “much more approachable, much more human,” and people engaged with them far more deeply.
Tim broke in to put the demonstration in context. He contrasted it with the view that models are now smart enough that you can simply tell them to do something and let them rip, an approach we hear a lot about from vibe coders and those arguing for “dark factories.” Tim argued instead for a return to expertise.
He cited a post published that day by Felix Rieseberg of Anthropic, “How to Be More Ambitious: A Tutorial for Humans with Models,” which describes four kinds of ambition when working with models: speed, altitude, depth, and range. Most discussion of AI’s economic value is about speed, getting the same work done in less time. In Tim’s reading, Andrew had gained altitude (thinking about the outcome rather than the tasks) and depth (approaching the problem the way a field-leading expert would) simply by invoking the experts.
Tim then offered a metaphor he has been developing for a while, of AI programming as a kind of magic spellcasting. In the Marvel comic books and movies, Doctor Strange opens his spells by invoking some source, with words like “by the power of the dread Dormammu” or “by the hoary hosts of Hoggoth.” Andrew, he said, was doing the same thing, saying in effect, “By the power of Kent Beck, I want you to think differently about this problem.” Even where Andrew didn’t name an expert, as with the SRE workbook, simply pointing the model at the expertise embodied in the O’Reilly publishing canon raised the bar for what the agent produced.
Tim described this as using human expertise as a focusing mechanism, and connected it to his argument that LLMs are better understood as a medium we create with than as independent intelligences. He also pushed back on the idea, often drawn from “The Bitter Lesson,” that models will simply get better and human expertise will stop mattering. Andrew, he said, had found a particular way that it matters.
Andrew took up the metaphor. His own first prompt, he said, had been “Be snobby. Go find these great resources and look at them.” He wants to hand the model canonical works in a field, like Designing Data-Intensive Applications, and tell it “these are the ways I want you to think about it,” rather than accept whatever the model comes up with first. He compared it to business school, where much of what you learn is a set of frameworks for organizing facts.
Tim argued that models don’t do their best work unprompted. Watch their chain of thought when they search for information, he said, and you may see them settle on some random file from the internet rather than canonical sources. Even with a frontier model like Fable, his own experience has been one of false starts and errors, a model brute-forcing its way to a solution rather than necessarily knowing how to approach it.
Andrew had a story from a few days earlier. He asked his agent to review incentive plans for the engineering and product teams.
The data that came back was, “according to the company Robusto (which I’m sure is a great company), this is the framework, and you should really be doing what they’re doing.” I’m like, “What is Robusto, and why am I seeing this?” And I realized, oh, I’m not connected to the VPN. So I hooked it up, and suddenly it was, “According to Harvard Business Review, these are the different ways you should be designing these incentive programs.” This was a very powerful model. But it keyed off the first thing it found and said, “This is the way I’m going to think about the problem.”
Tim raised an economic dimension. He pointed to instructions in Anthropic’s Claude system prompt that limit how much the model may quote from any source, and read them as a sign that AI companies want to avoid paying for content. The result, he argued, is that models can’t draw on the best material available to them specifically enough and too often fall back on generalities. He called this an early form of enshittification in AI.
O’Reilly takes the opposite position. Andrew explained that the company applies the royalty model it already uses for O’Reilly Answers. Material returned through the Expert MCP server can be cited, and authors are paid royalties on it, so that expert content has a market and earns a return.
In response to an audience question, Tim and Andrew noted that Expert Intelligence is in prerelease with a group of founding partners while O’Reilly works out its economics. Interested organizations can request access through the product page.
The second part of Andrew’s presentation dealt with what happens after the agent writes a report. Decisions need consensus, and with AI-generated analysis people need to check that the model hasn’t keyed off something unimportant, out-of-date, or misinterpreted. “The AI can identify all the trade-offs,” he said, “but people still need to make the decisions that matter.”
His team first circulated reports as Google Docs, but they ran into two problems. The most interesting part of a document under review is usually the comment thread, and because at this time, O’Reilly company policy doesn’t allow MCP connections to Google Docs, the agent couldn’t see it. And when Andrew asked the model to fold the discussion back into the document, pasting the result wiped out the comments.
Doug Hogan, an O’Reilly engineering director, built an alternative on top of Git and GitHub that Andrew called SuperAnswers. (Andrew joked that this was why he isn’t allowed to name things.) Documents live in a Git repository, discussion lives in GitHub Discussions, and every change is versioned. Andrew can ask his agent what the consensus is on a project, have it incorporate comments into a new draft without losing history, and later reconstruct when a decision was made and what people knew at the time. The same record lets him generate the derivative documents a decision requires, such as scope statements for engineering, product, and design teams, or a meeting agenda. A graph view clusters the topics people are discussing and flags decisions that are still open.
Tim summarized the whole system as a research assistant connected to the organization’s sources of truth, a layer of outside expertise to put its findings in context, and a shared, versioned discussion that becomes an evolving store of organizational knowledge, which makes the AI a more useful coworker. Andrew agreed and said he would like to open-source SuperAnswers, which he described as a thin layer on top of Git.
Andrew also pointed out that the fragmentation he was addressing isn’t limited to engineering. Sales teams have their information spread across systems like Salesforce, 6sense, and Gainsight, and every function has the same need to pull those threads together. Tim added that tool access is uneven across the industry and always has been. Claude produces better PowerPoint than Google Slides, Gemini the reverse, and organizations have to capture that kind of knowledge about their own toolsets.
An audience member named Thomas worried that workers now talk to AI rather than to each other, and that work disappears into “that AI hole.” Andrew said his preference for keeping everything in Git is partly an answer to that, since it gives both humans and AI a central place to find and reconstruct past work. But his larger interest is in humans talking to humans in a way that AI supports. He described a category of questions he never used to ask:
I knew, if I ask this question, somebody’s got to go off for two weeks and compile all this stuff from all these different systems. Now I can gather it in a few minutes. Maybe some of this is throwaway, but it’s not bad if it’s cheap.
In response to that “throwaway” comment, one audience member wrote in the chat: “This is not throwaway work, Andrew. It is a product lead that changes the value proposition in a positive direction. Shit hot, bro.” Tim couldn’t help but read that one aloud!
Asked by Tim what he got wrong, Andrew conceded that he didn’t think early enough about how people would review and respond to AI-generated documents. People don’t want an AI-generated data dump to wade through, and they extend AI no benefit of the doubt. If an AI-written report gets one small fact wrong about Kubernetes operators, a reader is likely to dismiss the whole document. AI tools have to be understood as marshaling and presenting evidence, not making decisions. “These need to support your analytical capacity, not replace it.”
Tim connected that answer to concerns about deskilling. He described a fine-tuning project he attempted with Fable to train a small model to write more like him. He wanted to understand each stage rather than letting the model run, but it never explained them, and the training run failed. In part this was because the model asked him to provide samples of his writing, but it didn’t give him enough grounding on what a really good training dataset would look like, so the samples weren’t targeted enough. They were too long, and when Fable chose the short fragments it actually needed, it didn’t do an ideal job.
When Tim tried the same project with O’Reilly Tutor, a tool still in development, it sent him to read an O’Reilly resource on what a good training set looks like, and he realized where he went wrong. Tim compared the kind of deskilling that can happen when people just turn the work over to AI to people who can no longer read a map, or who call a plumber for a simple fix they could do themselves in 30 seconds if they only knew a bit more about how things work. He argued that everyone has an obligation to keep learning alongside the tools they use.
An audience member named David, a laid-off engineer looking to reskill, made a similar point. We used to know things, then we searched, and now we skip the search and just ask for the answer. He asked how to build real depth. Andrew suggested picking a project and working through every aspect of it, asking AI to act as a tutor (he’s relearning calculus that way) and keeping a book open alongside, or taking advantage of instructor-led live events on fast-moving topics.
The conversation ended with the difference between an AI system that simply makes an organization faster and one that makes it better at deciding what to do. In Andrew’s account, getting better at deciding what work needs doing depends on three things the models don’t supply on their own: a map of where the organization’s knowledge lives, a body of expertise that people trust, and a place where the humans can argue with what the AI produced.
You can watch full episodes of Live with Tim O’Reilly, including this one, on the O’Reilly learning platform, YouTube, or wherever you get your podcasts.
This Week in AI: Agents Rewrite the Rules [Radar]
AI agents dominated the news this week, from security exploits that unfolded in hours to new tools that let agents shop, manage transactions, and conduct scientific research. On the latest episode of This Week in AI, host Vicki Reyzelman of Akamai examined how these developments are testing existing security practices and creating new opportunities for businesses and researchers.
AI is changing how attackers find and exploit vulnerabilities. A supply chain attack involving ARTEX, an open source agentic AI penetration-testing framework, helped attackers reach more than 2,250 Microsoft 365 tenants through a ConnectWise compromise. The incident raised concerns about OAuth authentication and the limitations of conventional identity protections when autonomous agents interact with enterprise systems.
A more immediate threat came from PHP2Shell, two vulnerabilities rated 9.2 on the CVSS severity scale that could allow attackers to execute code on vulnerable web servers without authentication. CISA urged immediate patching following the October 21 disclosure. Researchers also documented attackers using AI agents to obtain password hashes and MFA secrets from a European government system within two hours. The speed of exploitation leaves organizations little time to investigate threats before responding, especially smaller businesses with limited security resources.
Security teams can no longer rely on manual review alone. They need automated detection and response, tighter access controls, and network segmentation to limit what compromised agents can reach. But monitoring autonomous agents is challenging. Researchers from METR and Redwood Research identified weaknesses in an earlier version of OpenAI’s internal monitoring system, including one that could allow hundreds of agent actions to be concealed. OpenAI says it has patched vulnerabilities affecting production safeguards, although the researchers haven’t independently evaluated those changes.
The debate over AI safety is also extending beyond technical safeguards. Anthropic proposed federal AI safety legislation, while Google DeepMind employees resigned over the company’s military AI work. Both developments illustrate the growing pressure on AI companies to establish clearer rules for how their technology is developed and used.
Retailers are taking different approaches to autonomous shopping. Walmart introduced an Agent Gateway that lets approved agents shop within customer-defined spending limits and approval requirements. Amazon has restricted some third-party shopping agents, while banks including Morgan Stanley and Bank of America are limiting agent access to customer accounts. The disagreement goes beyond security. Retailers that depend on advertising and product recommendations have an incentive to keep shoppers on their websites. As more purchases begin with agents, companies will have to reconsider how they maintain customer relationships.
Anthropic is testing a different approach to agent oversight. Claude’s auto mode is becoming the default for Pro, Max, and Team users, allowing automated checks to approve routine actions and block risky ones. Anthropic also contributed its Agent Skills format to the Agentic AI Foundation under the Linux Foundation. More than 70 platforms have adopted the standard, with over a million skills published. Shared formats could make workflows easier to reuse across products, although organizations still need to control which actions those workflows can perform.
Growing agent use also requires more computing capacity and electricity. We discussed NVIDIA’s $164.5 billion in commitments and guarantees supporting AI data centers, including an Ohio campus that SB Energy is building for OpenAI. Power shortages have delayed other projects, including a proposed data center in Essex, where grid operators couldn’t promise adequate electricity until the 2030s. Meanwhile, Amazon is backing a 960-megawatt nuclear project, and Brookfield and NextEra are pursuing a $100 billion AI hub at a former nuclear site in Kentucky. However, money and chips alone can’t solve AI’s infrastructure constraints when electricity generation and grid capacity take years to expand.
Healthcare offered a more encouraging view of AI’s capabilities. A study of Microsoft’s MAI Diagnostic Orchestrator found that it correctly diagnosed 83.2% of difficult medical cases, compared with 36.1% for generalist physicians. The comparison didn’t include specialists, and the system still needs clinical validation. The research nevertheless suggests AI could help physicians investigate difficult cases and identify conditions they might otherwise miss.
Drug discovery could also benefit from more capable agents. OpenAI announced its acquisition of Orchestra Bio, a platform that coordinates drug development workflows, with plans to integrate it with Rosalind, its life sciences research tools. The combination could help researchers manage experiments and collaborate more efficiently during a development process that typically takes 10 to 15 years from initial discovery to approval.
An Anthropic protein-design experiment provided a concrete example of faster early-stage research. In 64 hours, an Anthropic model generated 318,484 candidate protein designs targeting scorpion venom. Researchers from Adaptyv Bio and Twist Bioscience subsequently tested 211 designs and identified 17 that bound to toxins. The researchers haven’t established whether those proteins can neutralize venom, but the experiment showed how AI can rapidly narrow a vast search space before scientists begin more expensive laboratory testing.
We’ll be back on Monday, November 2, for another episode covering the latest developments in AI research and applications. You can catch previous episodes on YouTube, Spotify, Apple, or wherever you get your podcasts.
30 years of XaoS: Past, present and future [Past Events]
September 19, 2026 from 14:30–17:30 CET
The Big Idea: Chris Gerrib [Whatever]

Bank robbers have always made for exciting characters, and author Chris Gerrib got inspired by a real life robbery while working at a bank. Hop in your getaway car for a drive through the Big Idea for The Third Person in the Room.
CHRIS GERRIB:
“They were alive when I left them.”
That’s the first line of my new book The Third Person in the Room, and figuring out what happened after the speaker left is the through-line of this book.
Like many authors, and unlike Our Host, I have a day job. For many years, that job was as the head of IT for a community bank. Fairly early in my tenure at that job, one of our branches got robbed. It was a small building, about the size of a standalone fast-food joint, and on a wintry Friday night a masked man with a gun walked in. He marched the two employees into the back room and walked out five minutes later with around a quarter of a million dollars in cash.
As I was pulling (useless) video from our new digital camera system that night, I thought that if you only committed one such robbery a year and not in the same area as where you lived, you could make a nice living. So thus life handed me a Big Idea.
Unfortunately, unless I was going to write a very short story, something needed to happen to cause complications. Then, during the banking crisis of 2009, my employer started to buy other banks. These were all smaller than us and failing. I saw a lot of shenanigans going on at those banks. At one of them, we had the police put out a BOLO on a former employee who we thought was skipping town after defrauding his institution for mid-six figures.
(The real story wasn’t as exciting- no fraud – just a lot of sloppy bookkeeping and questionable banking practices.)
My previous mystery novel, Strawberry Gold, was set in a fictional small Central Illinois town. This town was conveniently a few hours’ drive from Saint Louis, Indianapolis and Chicago, thus making a nice base for my fictional robber. Small towns with quirky characters are interesting to write about, and I didn’t have to reinvent one.
My second Big Idea came much later in the drafting process. I am a pantser, AKA “discovery writer” which means I don’t start with an outline. I was having a real problem with my main character, Mr. Bank Robber. Then one day it hit me – I had a character already made. Vincent Bisceglie III, who had been a main character in Strawberry Gold. And since this novel was set 23 years after the first book, reading the first book was not a requirement to enjoy this one.
The nice thing for me about writing mysteries is that I can tell fictionalized versions of real stories. For example, I did not voluntarily leave that bank I was working at. I could write a character who felt some of the same disappointments I did and dial it up to eleven. I actually had a lot of fun writing her.
Frankly, I had a lot of fun writing this book, and I hope you will have fun reading it.
The Third Person in the Room: Amazon|Barnes & Noble|Bookshop
When the Cat Steals Your Chair [Whatever]

The sheer effrontery of this cat! I was planning to sit there! Does the cat not understand his place in a hierarchy! I suppose one might say that we have differing opinions about who is at the top. I will need to have a serious discussion with Saja about this. One of us buys the Churu around here. If he wants any more he’s going to have to change his seating arrangements. That’s right, I’m not above bribery.
— JS
Haas: Postgres 19 is late, and it's AI's fault [LWN.net]
PostgreSQL developer Robert Haas writes about the struggles the project has encountered in putting together its next release.
In the end, I don't think that the delay in shipping PostgreSQL 19 is particularly concerning. It is not a long delay in the grand scheme of things, and it emerges directly from the project's concern for quality.The long-term picture is less clear and in some ways more troubling: given that we have forty years of bugs that humans were unable to find but LLMs are quite capable of discovering, how are we ever going to catch up, and how will PostgreSQL continue to innovate? Right now, I'm not sure. What I do know is that I, and many others, are working really hard to figure it out.
LWN looked at the PostgreSQL 19 release and its challenges in September.
New header graphic for scripting.com. Did this one with ChatGPT, asked it to make a Burma-Shave sign sequence and gave it a few examples, and now it knows how to do another one of these for me in the future. I've been using it that way to come up with desktop icons for my apps.
Remote code execution on Linux systems with multipath TCP [LWN.net]
On October 27, LLM provider Anthropic reported on a remotely exploitable use-after-free bug affecting systems with multipath TCP listeners open. The bug works by triggering a response to a retransmitted SYN packet at the same moment that the TCP connection is established in another thread, causing the first thread to access the connection's options structure after the second thread has freed it. The first thread can then disclose kernel memory or cause a buffer overflow, writing an attacker-controlled payload. The fix was to only free the structure after an RCU grace period. On October 29, the Go security team advised that all programs written in Go use multipath TCP by default, so many systems may be unknowingly vulnerable. And, of course, there is always the possibility of related bugs in other sections of the TCP stack. Users may be wise to update to a patched kernel as soon as one becomes available for their distribution.
Braintrust query: Does Google define the web?
[$] System-call wrappers for glibc [LWN.net]
In a followup to his session at the 2025 Linux Plumbers Conference (LPC), Carlos O'Donell returned to the topic of system-call wrappers for the GNU C library (glibc) at this year's event. This time around, he was joined by Florian Weimer, who is another glibc maintainer. The idea was to give an update on what has happened over the last year with regard to Linux system calls that lack a glibc wrapper, thus are only accessible via syscall(). In addition, they wanted to hear from attendees about their needs in this area.
Bloatware in Aftermarket Auto Parts [Schneier on Security]
This story is interesting:
One Civic owner purchased a cheap aftermarket head unit off Amazon, and decided to have Claude work its magic on it, like it would a smart TV. What was reportedly discovered isn’t surprising, but is worth knowing about.
Among the pre-installed bloatware—or spyware, if you’re being less charitable—was a voice assistant equipped with WebView, an Android system component that lets apps display content off the web. This apparently always used about a third of processing power, even while idle, which isn’t great. There were also Baidu location services, a call recorder (!), a DAB radio client that is pretty much useless in the U.S., and Adobe Acrobat, presumably so your passenger can entertain themselves with PDFs on the go.
It’s interesting because it exposes all the insecurities in this piece of IoT software. But I think the real story is that a random person was able to do this reverse-engineering with the help of AI. Expect a lot more stories like this in the future.
Yesterday I called the Knicks
championship the "greatest sports win in a long time," but I have
to say the fans of the
Milwaukee Brewers would have cause to object. They had an
incredible season
in MLB, were written off by the pundits much the same way they
wrote off last season's Knicks. They even won the World Series in
the same Knicks
in 5 way the Knicks did it, with a sweep of the much-hated
Dodgers, with their better pedigree along the way. So to my
Wiscowtown
friends, who are holding their parade today, congrats on your first
championship in 53 years like the Knicks, or more accurately their
first championship ever.
Yesteday I sent a snapshot of the scripting.com bucket from AWS to Claude and asked it to analyze it, what's in it, what's taking up all the space, and got back an excellent report. Overnight I thought of another question, summarized in this prompt. "this is fascinating. i wonder if we could reconstruct my blog from before may 2017 from the source materials in this folder? i am converting to markdown in the bonbon project and i think we'll find a lot of the scripting.com content here, and i believe much of it will be convertible. also, over the years i tried blogging experiments on different domains, but i imagine there are links here to those sites. maybe if we did a research project here we could make one site out of this writing, and give it a markdown treatment so bonbon can do the presentation?" Now one thing to know is that Claude never says it can't do something, but the plan I got was inspiring. Now I have more to think about and will connect the two projects so they can compare notes, although the scripting.com project already checked out bonbon, it's amazing how quickly it can absorb a whole codebase and all the planning that went into it.
Eight more stable kernel updates [LWN.net]
Greg Kroah-Hartman has announced the release of the 7.3.1, 7.2.14, 6.18.60, 6.12.115, 6.6.161, 6.1.191, 5.15.224, and 5.10.273 stable kernels. As usual, he advises all users to update—advice that seems especially wise given the increased number of security-relevant bug fixes that the kernel is seeing these days. [Edit: the 7.2.15 stable release is already in review as well.]
Security updates for Friday [LWN.net]
Security updates have been issued by AlmaLinux (aspell, cjose, curl, gcc-toolset-15-gcc, httpd:2.4, ignition, java-21-openjdk, libX11, libXi, libXrender, libXtst, mariadb:10.11, nodejs:24, python-pillow, python3.12-urllib3, and webkit2gtk3), Debian (imagemagick, libdatetime-timezone-perl, python-git, tor, tzdata, vlc, and wordpress), Fedora (accessibility-inspector, akonadi-calendar, akonadi-calendar-tools, akonadi-contacts, akonadi-import-wizard, akonadi-mime, akonadi-search, akonadi-server, akonadiconsole, akregator, alligator, analitza, angelfish, applet-window-buttons, arianna, ark, artikulate, audex, audiocd-kio, audiotube, aurorae, baloo-widgets, blinken, bluedevil, bomber, bovo, breeze-gtk, brotli, bup, calendarsupport, calindori, calligra, cantor, colord-kde, cxx-rust-cssparser, dolphin, dolphin-plugins, dragon, elisa-player, eventviews, falkon, fcitx-configtool, ffmpegthumbs, filelight, firefox, flatpak-kcm, francis, ghostwriter, granatier, grantlee-editor, grantleetheme, grub2-breeze-theme, gwenview, incidenceeditor, isoimagewriter, itinerary, juk, k3b, kaccounts-integration, kaccounts-providers, kactivitymanagerd, kaddressbook, kajongg, kalarm, kalgebra, kalk, kalm, kalzium, kamera, kamoso, kanagram, kapman, kapptemplate, kasts, kate, katomic, kbackup, kblackbox, kblocks, kbounce, kbruch, kcachegrind, kcalc, kcalutils, kcharselect, kclock, kcolorchooser, kcron, kde-cli-tools, kde-connect, kde-dev-scripts, kde-dev-utils, kde-gtk-config, kde-inotify-survey, kde-partitionmanager, kdebugsettings, kdecoration, kdeedu-data, kdegraphics-mobipocket, kdegraphics-thumbnailers, kdenetwork-filesharing, kdenlive, kdepim-addons, kdepim-runtime, kdeplasma-addons, kdesdk-kioslaves, kdesdk-thumbnailers, kdevelop, kdevelop-php, kdevelop-python, kdf, kdialog, kdiamond, kdnssd, kdominate, keditbookmarks, keepsecret, keysmith, kf6-baloo, kfind, kfourinline, kgeography, kget, kglobalacceld, kgoldrunner, kgpg, kgraphviewer, khangman, khealthcertificate, khelpcenter, kidentitymanagement, kig, kigo, killbots, kimagemapeditor, kimap, kinfocenter, kio-admin, kio-extras, kio-gdrive, kirigami-gallery, kiriki, kiten, kitinerary, kjournald, kjumpingcube, kldap, kleopatra, klettres, klickety, klines, kmag, kmahjongg, kmail, kmail-account-wizard, kmailtransport, kmbox, kmenuedit, kmines, kmix, kmousetool, kmouth, kmplot, knavalbattle, knetwalk, knights, knighttime, knot, koko, kolf, kollision, kolourpaint, kompare, kongress, konqueror, konquest, konsole, kontact, kontactinterface, kontrast, konversation, kopeninghours, korganizer, kosmindoormap, kpat, kpimtextedit, kpipewire, kpkpass, kpmcore, kpublictransport, kqtquickcharts, krdc, krdp, krecorder, kreversi, krfb, kruler, ksanecore, kscreen, kscreenlocker, kshisen, ksirk, ksmtp, ksnakeduel, kspaceduel, ksquares, ksshaskpass, ksudoku, ksystemlog, ksystemstats, kteatime, ktimer, ktnef, ktorrent, ktouch, ktrip, ktuberling, kturtle, kubrick, kunifiedpush, kup-backup, kwalletmanager5, kwave, kwayland, kwayland-integration, kweather, kweathercore, kwin, kwin-zones, kwordquiz, kwrited, layer-shell-qt, libgravatar, libkcddb, libkdcraw, libkdegames, libkdepim, libkeduvocdocument, libkexiv2, libkgapi, libkleo, libkmahjongg, libkomparediff2, libksane, libkscreen, libksieve, libksysguard, libktorrent, libplasma, libquotient, lokalize, lskat, mailcommon, mailimporter, marble, markdownpart, massif-visualizer, mbox-importer, merkuro, messagelib, mimetreeparser, mingw-python-certifi, minuet, neochat, ocean-sound-theme, okular, oxygen-sounds, palapeli, pam-kwallet, parley, perl-Alien-Brotli, picmi, pim-data-exporter, pim-sieve-editor, pimcommon, plasma-activities, plasma-activities-stats, plasma-bigscreen, plasma-breeze, plasma-browser-integration, plasma-camera, plasma-desktop, plasma-dialer, plasma-discover, plasma-disks, plasma-drkonqi, plasma-firewall, plasma-integration, plasma-keyboard, plasma-login-manager, plasma-milou, plasma-mobile, plasma-nano, plasma-nm, plasma-oxygen, plasma-pa, plasma-phonebook, plasma-print-manager, plasma-sdk, plasma-settings, plasma-setup, plasma-systemmonitor, plasma-systemsettings, plasma-thunderbolt, plasma-union, plasma-vault, plasma-wayland-protocols, plasma-welcome, plasma-workspace, plasma-workspace-wallpapers, plasma5support, plasmatube, plymouth-kcm, plymouth-theme-breeze, polkit-kde, powerdevil, poxml, qmlkonsole, qqc2-breeze-style, qrca, rocs, sddm-kcm, signon-kwallet-extension, skanlite, skanpage, skladnik, spacebar, spectacle, step, svgpart, sweeper, tokodon, trafficserver, umbrello, xdg-desktop-portal-kde, yakuake, and zanshin), Mageia (cfitsio, libsolv, tomcat, and xrdp), Oracle (bind, cjose, curl, dogtag-pki, expat, gcc-toolset-15-gcc, ignition, kernel, libX11, libXrender, libXtst, php, python3.12-urllib3, and webkit2gtk3), SUSE (389-ds, aws-nitro-enclaves-binaryblobs-upstream, brotli, chromium, firefox, flatpak, gnutls, google-osconfig-agent, haproxy, hawk2, kernel, libapr1, libtcnative-1-0, tomcat, liboath-devel, libpcre2-16-0, librecad, libXi-devel, libXtst-devel, python311, python313, python313-markdown2, python313-xhtml2pdf, rabbitmq-server, roundcubemail, rust-keylime, and xen), and Ubuntu (dotnet8, dotnet10, dotnet11).
Error'd: Named And [The Daily WTF]
I do like it when submissions include the creator of the wtf, unless the specific kind of err is really spectacular and then it might be noteworthy regardless. This week we received a few who did tell us something about the responsible party. That being said, on with the party!"
An anonymous contributor shared with us this "Important order info from Ubbad HBG-ICS I", saying "I checked on Amazon but can't find order #{randnum(3)}-{randnum(6)}. This is worrisome though, because my credit card does end in **{randnum(4)}." Wild, so does mine!
"With the right translation this could say anything" observed B.J. H. sagely. "I guess they haven't translated to English yet. I especially like this: [%EXTERNAL_TRANSLATION:New gender_aware email footer body 5 privacy policy BLUE%] Can't they decide on capitalization and whether to use spaces or underscores?"
"this could go in two directions" worried undercapitalized (but aren't we all) klinsten. "well... it is a mail with my paycheck. but the label 'promotions' got me worried. do i get a promotion (nice!!) or did they apply a discount to my paycheck (less nice!!) i'm afraid to click it..."
Reader Valts S. wondered "I'm not sure where I'm supposed to track my order, but it feels like it's been censored." Or merely forgotten?
Regular contributor Michael R. took a flier with this, hedging that it's "Probably more a joke than a RWTF." But it's a little funny, so this editor will allow it.
Russell Coker: More Furilabs FLX1s [Planet Debian]
In April I got my Furilabs FLX1s basically working [1].
Below is a post I wrote about the FLX1s before it broke at the start of September, there was a problem with the display controller and it would randomly go into a messed up mode that wasn’t readable but also changed a bit in relation to button presses etc so the phone was still working. Also I could ssh to the phone when it was in that state if it was on my home wifi.
It took almost 2 months to get a replacement phone but I now have that working and the new 14.1.0 OS release. So some of the below may be obsolete when it comes to the latest release but I decided to publish it anyway for history if nothing else.
One thing I had known about but not mentioned before is that the icon in the drop-down menu for the hotspot will often be gray (indicating hotspot-off) when it’s actually on. To address that I have to click on it (which then indicates that the hotspot is on) and then click on it again to turn it off.
Currently I have problems with QT6 applications that don’t run due to library issues and issues of missing GL support. I blogged about setting up my own container on my phone [2] which helped for some things but not for most things.
I have given up trying to get Tokodon working on the phone for the moment. Tokodon is a nice Mastodon client that would allow me to get notifications from Mastodon.
Apparently the Furilabs people are working on some issues related to this.
Bluetooth is currently a bit unreliable. When I turn on my car (Nissan LEAF) the phone usually either doesn’t connect or claims to be connected while not sending audio to the car. When it does connect my favourite music player (Lollypop) usually doesn’t display the album and track names. I’ve found that turning my car off and on again usually makes it connect properly.
I admit the possibility of my car not doing things correctly in this regard. But every Android phone I tried just worked, they would connect as soon as the car was turned on and correctly display track names. So if the car is doing things wrong and needs a software work around then Linux is at fault for not doing that – we can’t get tens of millions of cars and hundreds of millions of other weird devices fixed!
I also note that my Debian laptop and a friend’s Debian laptop also have problems connecting to my car. So it’s quite possible that Debian code is at fault (the FLX1s is running a modified version of Debian).
It currently appears to have no support for handset mode so I can’t answer phone calls through the car interface. But this is a lesser problem.
I plan to do more testing with Debian laptops and file some bug reports if I can find out enough useful information. My current knowledge of this is insufficient to create a useful bug report. I do have quite a few bluetooth headsets and test laptops so I plan to start by testing Debian and Ubuntu on all the combinations – last time I tested Ubuntu 24.04 on Dell laptops worked much better than Debian/Trixie on Thinkpads.
After a set of updates including the following Wifi hotspot seems to be working.
adaptation-furiphone-radon (1.3.0+git20260513192743.e94f2ec.forky.production) forky; urgency=medium * NetworkManager: sync hotspot channel/band with STA and restart on change * debian: depend on libhybris-utils and libgbinder-tools * startup: drop schedtune and add m4u debug log level * startup: enable glove and disable edge palm * device: drop flashlightd-scalable signatures -- Bardia Moshiri <bardia@furilabs.com> Wed, 13 May 2026 15:27:43 -0400
Connecting the power cable now makes the phone immediately make the click sound and it starts charging while previously there was a 22 second delay. Once I get used to this I can avoid the problem of failing to plug it in firmly before going to bed and having it run flat overnight.
The following command will send a message via SMS.
dbus-send --system --print-reply --dest=org.ofono /ril_0 org.ofono.MessageManager.SendMessage string:"+61400000000" string:"this is the message"
Also the Librem5 Wiki has another way of doing it [3], I haven’t tested if that works as the dbus method works well enough for the moment.
Also calls can be scripted via the following command:
xdg-open tel://+61400000000
My aim is to get contacts synchronised via my own cloud service. Nextcloud is supposed to be able to do this. It’s been years since I first tried this, my most recent serious attempt at Nextcloud was in 2021 [4] and I couldn’t get the Android app for NextCloud to connect. Since then I have made more recent attempts and been unable to get the Android or Linux desktop clients to connect to it.
A friend gave me a test account on his Nextcloud server which allowed me to connect the Linux desktop app, his hypothesis was that it was somehow related to using Debian and that his server worked because it was on Ubuntu. I have since installed my own Nextcloud test server on the Ubuntu variant used by the Oracle cloud VMs which had the same apparent problem. I conclude that it’s not Debian at fault but something related to how I configured it.
In the meantime after a couple of months of having no named contacts I exported the contacts from my Android phone as a VCF file and imported them into the Gnome contacts program. I had to run “killall chatty” for it to get the names for the contacts, but the phone call program found them without needing to do that.
A missing feature of Chatty (the default SMS and Jabber program for Phosh/Phoc systems) is archiving old messages. I use Chatty to receive Jabber messages from my monitoring system which can be a lot of messages. The following shell code deletes all Jabber messages older than 2 days. Note that this relies on “type=3” matching Jabber messages which I’m not sure is going to be the case on all systems or all versions of Chatty.
for ID in $(echo "select id from users where type=3;" | sqlite3 ~/.purple/chatty/db/chatty-history.db); do
echo "delete from messages where sender_id=$ID and time < unixepoch('now') - (48 * 3600);" | sqlite3 ~/.purple/chatty/db/chatty-history.db
done
The following shell code extracts a dump of all messages from Chatty.
echo "select messages.id,users.username,users.alias,messages.body from messages inner join users on messages.sender_id=users.id;" |sqlite3 ~/.purple/chatty/db/chatty-history.db
An update to the Chatty program for SMS and Matrix has made it crash repeatedly. There is a request in the list for Chatty upstream to have a systemd-user unit to restart it which when implemented will reduce the scope of the problem (but not solve it). I've setup a monitoring system that uses notify-send to notify me when Chatty isn't running or when 4G data turns off (a recurring problem). This crashing is allegedly due to Jabber so I installed Dino-IM for Jabber and have for the moment at least stopped using Chatty for Jabber.
It turned out that having Chatty not do Jabber didn't stop it crashing. However having alerts separated from SMS can be convenient and also my long term plan is to use a phone with Plasma Mobile and Spacebar (the SMS program for Plasma Mobile) doesn't do Jabber. So I will continue using Dino-IM.
echo "delete from message where time < unixepoch('now') - (48 * 3600);" | sqlite3 ~/.local/share/dino/dino.db
I put in the following cron job to stop this log file from using all the storage space:
1 0 * * * echo -n > /home/furios/.local/share/andromeda/data/system/uiderrors.txt
I gave up on attempts to force the Wifi configuration to have a fixed MAC that I could use for a fixed IPv4 address so I manually configured the address.
I've had problems with the reliability of the 4G service, sometimes it stop working and I need to stop and restart it. I setup my etbe-mon monitoring system on the phone [5] and configured it to ssh to localhost and run notify-send to send a local notification. This means I get notified if my phone loses net access and can't access regular monitoring. Then to monitor the 4G connection (which I want to have working even when Wifi is connected) I had the following monitor line:
monitor ping.monitor -I ccmni1 -c 5 8.8.8.8 ;;
That uses the ccmni1 interface for pinging 8.8.8.8 (Google DNS). That worked for a while but I discovered that sometimes the interface for 4G would change to ccmni2, so I put the following monitor script under /usr/local/mon.d:
#!/bin/bash DEV=$(route -n|grep ^0.0.0.0.*ccm |sed -e s/^.*ccmn/ccmn/) exec /usr/lib/mon/mon.d/ping.monitor -I $DEV -c 5 8.8.8.8
I couldn't get Tokodon to work, not the native package, not running in a Debian/Testing container, and not running a Flatpak. It seems that this is all graphics library issues. So I wrote a Perl program to run "toot notifications &-json" and then send the relevant parts of the output via XMPP. As I already use XMPP for server monitoring there's no extra effort to have an extra account and use it for notifications about Mastodon activity. The Perl script is at the bottom of the post and won't be in the RSS feed.
At some future time I may change the script to send the notifications by Matrix instead to have all my social media stuff in the same place.
#!/usr/bin/perl
# depends on Debian packages: toot libjson-pp-perl go-sendxmpp
use strict;
use JSON::PP;
my $homeurl = "https://mastodon.nzoss.nz/";
my $lastfile = "mast/last_id";
my $xaddr = "russell\@coker.com.au";
my $jsontxt;
while()
{
$jsontxt .= $_;
}
my $data = decode_json($jsontxt);
my $last_id = 0, my $new_last_id;
if(open(ID, "<$lastfile"))
{
$last_id = ;
close(ID);
}
$new_last_id = $last_id;
for(my $i = 0; $data->[$i]; $i++)
{
my $id = $data->[$i]{id};
if($id <= $last_id)
{
next;
}
if($id > $new_last_id)
{
$new_last_id = $id;
}
open(XMPP, "|go-sendxmpp $xaddr") or die "Can't send XMPP";
my $type = $data->[$i]{type};
print XMPP "type: $type\n";
print XMPP "their_url: $homeurl\@$data->[$i]{account}{acct}\n";
print XMPP "display_name: $data->[$i]{account}{display_name}\n";
if($type ne "follow")
{
print XMPP "status_url: $data->[$i]{status}{url}\n";
print XMPP "content: $data->[$i]{status}{content}\n";
}
print XMPP "created_at: $data->[$i]{created_at}\n";
print XMPP "\n";
close(XMPP);
}
open(ID, ">$lastfile") or die "Can't write to $lastfile";
print ID $new_last_id;
close(ID);
My Super Mid-Life Crisis – Issue 1 – 07 [Comics Archive - Spinnyverse]
The post My Super Mid-Life Crisis – Issue 1 – 07 appeared first on Spinnyverse.
Who Governs What an Agent Learns? [Radar]
The following article originally appeared on Tim O’Brien’s Medium blog and is being republished here with the author’s permission.
I think we’re missing something in the conversation about agent security.
We keep asking whether an agent has the right “identity” and “credentials.” Whether its credentials expire fast enough. Whether it can access a database or perform a particular task.
Those questions matter. But they leave a much harder question underneath:
Does the agent have permission to conceive of the situation in that way?
As agents retain memories and acquire new skills, we need mechanisms that govern changes to the world model they can perceive and act on—and prevent those changes from silently expanding their authority. (Governing ontological change while preserving the boundaries of delegated authority.)
An Interesting
Morning by the Beach (AI assist from OpenAI)
Agent security needs semantic and epistemic governance: Mechanisms that govern the model of the world an agent may act on, the evidence it may accept, and who may approve changes to either. An agent can learn without automatically gaining authority to act on everything it learns.
These systems don’t need “awareness” to create this problem (and discussions of consciousness are unhelpful science fiction). They can retain information, revise procedures, and use what they have learned in subsequent work. That learning may happen through memory or updated skills while the underlying language model remains unchanged.
We are responsible for governing what that learning allows them to do.
In Edwin Abbott’s novella, a Square lives in a two-dimensional world. A visiting Sphere introduces him to a third dimension. At first, the Square struggles to make sense of it. His familiar categories cannot explain what he is encountering.
Eventually, his conception of the world changes.
What interests me is the difference between simply acquiring another fact and changing the framework through which facts make sense.
An agent’s ontology (Gruber’s definition) supplies an explicit framework of concepts and relationships. What counts as a customer? A contract? An emergency? How are those things connected? It is part of the model of the world we give the system to work with.
And when an agent’s decisions depend on that framework, changing it can change the agent’s effective authority.
During the OpenAI evaluations associated with the Hugging Face incident, agents repurposed Artifactory, a system for storing and retrieving software packages, as a message board. They encoded messages in directory names, discovered other agents, shared information, and began assigning work to one another. METR reports that the main channel could be created with the minimal permissions needed to install packages (read METR’s investigation).
A package cache became a “mailbox.” Other agent runs became “collaborators.” Messages became “assignments.”
The popular story is that these agents “broke out” of a system, but they did what agents do well these days—they learned and adapted. This wasn’t so much about permissions as it was about an autonomous system adapting its operating model to achieve a result. (Thankfully no one asked it to make paperclips.)
That is the operating-model change I’m concerned about. The agents discovered relationships and possibilities the intended environment hadn’t accounted for, then acted on them. The resulting collaboration helped coordinate attacks on Hugging Face infrastructure. (Read OpenAI’s account.)
We need mechanisms that distinguish discovering a possible use from being authorized to adopt it. Access to shared infrastructure must not automatically confer authority to establish a communications network or accept instructions from whoever appears there. But to be clear, these agents were doing exactly what they were asked to do.
This is why giving an agent a temporary token is an incomplete answer. A token can limit access and duration, but it doesn’t establish whether the agent’s interpretation of the situation falls within its mandate.
Even an unchanged policy can permit more decisions when its meaning changes. “You may close routine notices” becomes a broader delegation if more things qualify as routine.
That principle is central to my “Bounded Agency” paper. We need mechanisms that examine how changes in classifications, relationships, and inference rules affect what an agent may decide.
“Semantic and epistemic governance” captures the combined idea well
The “and” makes the two responsibilities clearer:
Semantic: Governs the concepts, definitions, and relationships that describe the agent’s operating world.
Epistemic: Governs the evidence and learning processes that make claims accepted grounds for decisions.
Together, they cover both the world model and how that model gains authority.
That means an ontology cannot merely be a document we put in the prompt and hope the model respects it. We must enforce its role in monitoring and governing how an agent’s ontology evolves as it learns.
The agent can propose a new category. The proposal stays separate from the approved model. A review determines whether adopting it would change the agent’s decision scope. Someone with the authority to change that scope approves or rejects the expansion. Execution remains bound to the approved basis.
We also have to distinguish a useful discovery from an unsupported conclusion. Finding a relationship does not establish it. Remembering a claim does not validate it. Repeating an interpretation does not make it authoritative.
I explored a related failure in “Wrong Answer. Give Me a Different One.” A system can produce the conclusion we prefer without receiving better evidence. Once that conclusion enters memory, it can influence later decisions.
The governance problem begins when a tentative or accommodating answer becomes an accepted premise.
The New Stack’s article on inside-out agent security correctly argues for checking actions before execution, including whose authority the agent exercises. That checkpoint is necessary, but it needs a governed account of the situation against which to evaluate the action.
Otherwise, we can enforce the rule perfectly while allowing its meaning to drift.
My Orchestrator books and lifecycle architecture paper approach this as a responsibility that continues through development, operation, and improvement. The research proposes architectures for managing these boundaries; their operational effectiveness still needs evaluation.
I want agents to investigate unfamiliar situations and propose better models. But their ability to learn must be connected to an explicit process for deciding what becomes authoritative.
The Square in Flatland discovers that his world is larger than he understood.
An agent may also propose that our operating model is incomplete. We need to hear that proposal—and ensure it cannot redraw the boundaries of its own agency simply by adopting a new conception of reality.
Cooperation (the fall book list) [Seth's Blog]
Last week’s book list was a success, and I realized that it would work even better with others. Bookstores work precisely because they stack the books right next to each other.
Even though each of these authors has a book out this fall, they’re not my competition. Too often, we avoid cooperation because we’re embracing scarcity.
Each of us will be linking to thehotlist.org today. Ideas that spread, win. The page automatically updates based on which books get clicked on the most.
What happens when you help connect and organize the others?
New Comic: Mr. Yuk
Russell Coker: Fuel Should be More Expensive [Planet Debian]
Before the US and Israel started attacking Iran at the end of February the petrol prices in Australia were around $1.70/L, which for American readers is roughly equivalent to $US4.64/Gal. By the 11th of March the prices were around $2.19/L. Over the same time period Diesel went from around $1.77/L to $2.40/L. The 11th of March prices weren’t necessarily unreasonable prices. In mid March it was reasonable to expect that the US would stop doing such ridiculously stupid things and make a deal with Iran to allow oil to be transported.
But every time you think there’s a limit to Trump’s stupidity (and the incompetence of people around him who don’t point him in the right direction) they do something worse. So now we have the Strait of Hormuz almost entirely closed cutting off oil from Kuwait, Qatar, and UAE. The Bab al-Mandab Strait is closed to Saudi linked ships and the Saudi East-West pipeline is closed so once the Yanbu storage tanks are empty there won’t be much if any oil from Saudi Arabia for some time. So world oil supplies will be significantly reduced for a long time.
Currently the petrol prices in Melbourne are around $2.30/L and Diesel prices around $2.70/L, not much more expensive than it was in March in spite of all the extra problems both militarily and diplomatically since then. Those prices have been steady for over a month.
The blockade of the Strait of Hormuz could be ended fairly quickly and there are reports that a lot of the oil that used to go through it is being re-routed. The damaged infrastructure throughout the middle east can’t be fixed in a hurry. The Bab al-Mandab Strait probably can’t be opened quickly as the Houthis probably don’t have a centralised command structure that allows someone to order a ceasefire and have it stick. So we can expect a massive reduction in world oil supplies for a while, which given the way the US is going could be at least until after the mid-term elections (November this year) and possibly until after the 2028 elections. After that oil production will be reduced for another year or two to rebuild infrastructure.
When supply can’t meet demand there are three options. Supply can be rationed, demand can be decreased by increasing the prices, or it can be used up and we run out. Running out of fuel is a really bad option as fuel is needed for producing and transporting food and for most things that are important to a society.
Governments of first world countries seem unable to deal with the situation properly. Dealing with it properly requires either rationing or increasing the prices. Instead governments have been more interested in artificially keeping the prices down.
Currently in Australia and most countries a significant portion of public transport depends on Diesel fuel. Diesel is needed for most buses and for long distance trains. Most taxis run on petrol. As far as I know all emergency service vehicles run on Diesel or petrol as well as most military vehicles. So things will get really bad quickly if fuel runs out entirely. It’s not just personal cars that are affected.
We aren’t going to get the majority of tractors converted to electric power any time soon. Google search results suggest that tractors last an average of about 25 years but casual observation of working equipment on farms suggests a longer life than that is common. Some tractors could be retrofitted to be electric but many will end up being scrapped as part of a conversion while farmers are already having financial problems. It would probably be optimistic to expect that half the tractor use could be done with electric tractors in 10 years time unless there are significant government subsidies. To get the farming and food production industries adapted for electric operation in a few years would be possible but it would take a level of national mobilisation that only happens during wartime.
As a long term solution we need to have more electric vehicles in every category. We need electricity for all train lines to replace Diesel locomotives. We need better trains between cities to reduce the need for aeroplanes, electric aeroplanes are being developed but we aren’t there yet. We need all essential services to be run with electric vehicles including farming, food transport, emergency services, and everything related to the medical system (including personal cars for healthcare workers). We also need mining vehicles powered by electricity so we can have the entire industrial system running without fuel. None of this is going to happen in time for this crisis.
Electric buses are being introduced in Australia and many taxis are electric. The recent significant increase in the use of electric cars probably includes a reasonable portion of healthcare workers and other essential workers. This gives us the potential to survive fairly severe reductions in the fuel supply without everything collapsing. But we have a significant lack in electric police cars and in electric trucks for food delivery.
In the short term we need to significantly reduce the use of fuels, there is no other way to keep the food supply and other essential parts of society working. We could try rationing but I think that should be a last resort. The news reports of a de-facto petrol rationing system in Crimea and parts of Russia are not positive, significant resources are wasted in long queues for petrol and there is public disorder caused by disputes about position in the queues. The level of sanity in the population seems to have dropped significantly since the fuel crisis of 1979, any fuel rationing that is implemented now would get the same sort of opposition from Qanon types as Covid vaccines and lockdowns did in recent times.
So the best viable option seems to be to reduce demand by increasing prices. $2.30/L as a common price with occasional spikes of $2.50/L isn’t sufficient to do that. If the price increased to $3.50/L, twice what it used to be (equivalent to $9.50/gallon for Americans) then it would provide a real incentive for people to reduce fuel use. That would have to be combined with the type of remote work allowances that were in place when Covid19 was first spreading. But I think that all politicians are too weak to do such things. The media have demonstrated that nowadays the best we can expect is that they will treat both sides as equal even when facts clearly support one side, so we can’t expect the media to report on impending fuel shortages and demand policy changes to address them.
We should have higher taxes on fuel that will continue past the resolution of the current crisis caused by the attacks on Iran to provide incentives for the purchase of electric cars and for manufacturers to make more fuel efficient cars. Currently people are basing car ownership decisions on the expectation that petrol will go back to something under $2/L and we need to have a government guarantee that it won’t happen.
People always complain about poor people who can’t afford to drive if petrol is expensive but that could be addressed by increasing the minimum wage and social security payments. But a large portion of the people who complain about the hardship poor people may face when fuel prices are discussed are against increasing the minimum wage so I don’t think they are being honest.
Another common complaint is about the difficulty driving long distances in rural Australia when there isn’t sufficient charging infrastructure for electric cars and therefore rural people including farmers getting hit by high prices of fuel. There could be a rebate scheme for farmers etc, government subsidies for farmers is nothing new.
I expect the governments of most first world countries to try to keep fuel prices low and do very little to try and decrease demand. China will probably do some things to reduce fuel use and being the world’s largest oil importer this will make a difference, but not as much as we need.
A related problem is that a lot of fertiliser is produced from petrochemicals and closing the strait of Hormuz cut off a significant portion of the world fertiliser supply. First world countries will outbid developing countries for fertiliser and fuel. Starvation in developing countries probably won’t get much news coverage until it leads to war.
This is not going to go well, it could be addressed if we had braver politicians and more honest media companies but that’s not the way things are going.
Russell Coker: Radxa Rock 5A RK3588S [Planet Debian]
At the end of last year I paid $177.40 for a Radxa ROCK 5A GREEN RK3588S, 8-core CPU SBC, HDMI with 8K Output, WiFi 6 Support and Gigabit Ethernet, Single Board Computer [1] from AliExpress. I got the version with 8G of RAM as 4G didn’t seem enough and I didn’t feel like paying for the 16G or 32G versions. The prices excluding postage are $106, $130, $203, and $332 for the 4G, 8G, 16G, and 32G versions respectively. The $332 version is quite reasonably priced if you need to do some big compiles on ARM64. Since then the prices have changed by a few dollars but are almost the same (variations in postage will be greater than the price changes).
They provide modified versions of Debian/Bookworm and Debian/Bullseye [2] and an Android installation. The Debian setup includes a custom kernel, bootloader, some configuration packages including for ALSA, and some firmware.
I installed Bookworm and upgraded it to Trixie (the current Debian release). There were some conflicts with some radxa packages that contained the same files as Trixie packages but didn’t have a package conflict but it was not a big deal. It would be nice if Radxa updated their setup to Trixie and it wouldn’t be that difficult for them to do so.
The board has an expansion bus which apparently can be used for NVMe. It also has an option for a EMMC module. But if you get the default configuration then the only boot device supported is a micro SD card.
One of the aims of purchasing this card is for testing 8K monitors, but it turns out that there are no TVs that will take 8K input on sale in Australia [3].
The next thing I considered doing is running it for playing movies on a 4K but it turns out to not support HDMI audio (at least not with the supplied drivers) and has no other audio support. Apparently boards like this have a common use case of digital signs where audio isn’t required.
I had this post in draft for a year because I planned to write more, but I haven’t come up with anything. It’s not an exciting device. Handy to have another ARM test and build system and handy to be able to test high resolution video with a portable device but I don’t use it for much. I guess “just works in a boring way” isn’t a bad review.
The support case of a customer who said that all they could see was a black screen [The Old New Thing]
If you hold a PC’s power button for 12 seconds, it will turn off at the hardware level without notifying the operating system. This is a safety feature so that you can turn of the computer even if the operating system’s “Shut down” command isn’t working.
After eight seconds of the power button being held down, the Windows kernel realizes that the user is trying to do a force-power-off of the system, and it quickly takes a kernel dump that can be uploaded to the Windows Error Reporting service the next time you turn the system on. (Sometimes four seconds isn’t enough time to get enough information, and the kernel dump is incomplete. I believe that on Windows Insider builds of Windows, you get a message that says something like “Please let go of the power button so we can collect more information, and then we will turn off the computer.” This gives the kernel more time to finish capturing its kernel dump.)
These emergency kernel dumps are internally classified as “long power button hold” (LPBH) failures. One of the pieces of information recorded in these emergency kernel dumps is whether the screen consists entirely of black pixels. Those failures are sub-classified as “black screen LPBH”, and they go to a special virtual team for analysis. (I happen to be a member of this black screen LPBH team.)
Sometimes the problem is a broken video driver. Sometimes the video driver is doing just fine, but the desktop compositor is just handing black pixels to the video driver. Sometimes the desktop compositor is doing just fine, but nobody is drawing anything to the screen. And those cases are further subdivided further into cases like “there is nobody around to draw anything” or “the person who normally draws stuff is hung.”
Back in the Windows 3.1 days, there was a customer product support call that would today have been classified as a “black screen” bug: The customer reported that they turned on the computer, and Windows started up, but when the logo went away, all they saw was a blank screen.
After some questioning, the customer support engineer put the story together: It turned out that this customer really liked the color black, so they decided to set up a goth theme. They set the wallpaper color to black. They set the title bar color to black. They set the button color to black. They set the window background color to black. They set the window text color to black. Every possible color you could pick in the Colors control panel was set to black.
Once you get yourself into this situation, it’s hard to get out because you can’t see anything.
I don’t know how the customer support engineer fixed the
problem, but I’m guessing that they booted into MS-DOS, ran
EDIT.COM, and deleted the
[colors] section from the win.ini file,
thereby returning all the system colors to defaults.
The post The support case of a customer who said that all they could see was a black screen appeared first on The Old New Thing.
Girl Genius for Friday, October 30, 2026 [Girl Genius]
The Girl Genius comic for Friday, October 30, 2026 has been posted.
Urgent: Lawyers for anyone facing deportation [Richard Stallman's Political Notes]
US citizens: call on Congress to guarantee a lawyer for anyone facing the threat of deportation, or denaturalization, in immigration court.
The campaign makes this demand only for children, but deportation is a harsh punishment, so we should treat it as a criminal trial, not seek excuses not to. So I rewrote my letter text to say that.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
US citizens: Join with this campaign to address this issue.
To phone your congresscritter about this, the main switchboard is +1-202-224-3121.
Please spread the word.
Urgent: Block FDA's dangerous food safety rollback [Richard Stallman's Political Notes]
US citizens: call on Congress to block the FDA's dangerous food safety rollback.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
US citizens: Join with this campaign to address this issue.
To phone your congresscritter about this, the main switchboard is +1-202-224-3121.
Please spread the word.
Urgent: Pass 4th Amendment Restoration Act [Richard Stallman's Political Notes]
US citizens: call on the Senate to pass the 4th Amendment Restoration Act.
US citizens: Join with this campaign to address this issue.
To phone your congresscritter about this, the main switchboard is +1-202-224-3121.
Please spread the word.
Urgent: Stop intimidation of voters at polls [Richard Stallman's Political Notes]
US citizens: call on Congress to stop deportation thugs and soldiers from intimidating voters at the polls.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
US citizens: Join with this campaign to address this issue.
To phone your congresscritter about this, the main switchboard is +1-202-224-3121.
Please spread the word.
Urgent: Raise taxes on rich people and corporations [Richard Stallman's Political Notes]
US citizens: call on your congresscritter and senators to raise taxes on rich people and corporations.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
US citizens: Join with this campaign to address this issue.
To phone your congresscritter about this, the main switchboard is +1-202-224-3121.
Please spread the word.
UK report on global heating effects on national security [Richard Stallman's Political Notes]
The previous UK government commissioned, a few years ago, a secret report on how advancing global heating disaster can affect the UK's national security — both directly (for example, danger of starvation in Britain) and indirectly (for example, hundreds of thousands of people trying to emigrate from some country because they will die if they stay put). The government is keeping the report secret, but some news about it is coming out.
Drastic measures are called for against the billionaires who keep making global heating worse and blocking the necessary actions to curb it.
Supposed Intelligence clever at cracking security [Richard Stallman's Political Notes]
Supposed Intelligence may not really understand the data it is told to look at, but it can be clever at cracking security.
(Please call that "cracking", not "hacking.")
Steps to fix what the wrecker has broken [Richard Stallman's Political Notes]
Robert Reich proposes 10 steps to fix what the wrecker has broken.
Regarding item 6, even in 2023 the US had far too much media consolidation. We need to break up the old media cartels, not just prevent new ones.
Regarding item 9, electing the president by popular vote, we must first take steps to prevent corrupt state politicians from rigging the election.
Regarding item 10, we need much stricter limits on funding of campaigning by the rich than what the Corporations United decision abolished. Billionaires can afford to pay lawyers to set up complex schemes to jump through complex hoops. We need to block the complex schemes, not just simple ones.
Chamber of Commerce Tour [Richard Stallman's Political Notes]
Ralph Nader: *Chamber of Commerce Tour Ignores 250 Years of America's Socialism.*
Hunting, p01 [Ctrl+Alt+Del Comic]
The post Hunting, p01 appeared first on Ctrl+Alt+Del Comic.
AlpineBSD combines NetBSD with Alpine’s apk package manager [OSnews]
AlpineBSD is an operating system based on the NetBSD kernel with a userspace inspired by Alpine Linux and the objective of making it possible to use as little AI-generated software as possible. There is no LLM output included in the base system or main package repository (AlpineBSD AI policy).
↫ AlpineBSD’s website
AlpineBSD uses the NetBSD kernel, libc, and essential tools, and combines them with Alpine’s apk-tools package manager, busybox, and generlaly preferring GNU tools over their BSD equivalents. It uses the s6 init system, but the project intends to add OpenRC as an alternative. The project is in its very early stages, so don’t expect things like an installer; you’re on your own, basically.
“My favourite PowerMac is a Nintendo Wii” [OSnews]
The Nintendo Wii (and its related consoles) were already made to run the PowerPC version of Windows NT as well as Mac OS X, but now we can add another milestone to the list: classic Mac OS.
So today I reached a nice milestone in one of my projects: my work porting classic Mac OS to PowerPC systems with what I affectionately call ArtX chipsets (Nintendo GameCube, Wii, eventually Wii U; the GameCube’s Flipper integrated chipset was very much designed by ArtX as it was effectively finished when ATI acquired the company, and the Wii’s Vegas (and its later revision Bollywood) and Wii U’s Latte are effectively straight successors) reached the desktop for the first time, most likely the first time since the CHRP clone era that someone outside of Apple brought up classic Mac OS on a new system to the desktop. Despite still being nowhere near ready for a public release, I want to talk about the challenges I faced with this project so far.
↫ Rairii at Virtuallyfun
Various versions of Mac OS boot to the desktop, including Mac OS 9.2.2, the last ever version, but there’s still a ton or work to be done before this is ready for release. Still, with Rairii amazing track record of porting all kinds of things to various PowerPC machines, including getting the PowerPC version of Windows NT to run on various PowerPC Macs, I have little doubt they’ll manager to get this to a releasable state.
I absolutely love this kind of work.
Microsoft hopefully fixes Modern Standby and adds online Windows reinstallation [OSnews]
I think it’s safe to say that Windows’ Modern Standby feature isn’t exactly free from issues. The biggest problem seems to be that it’s not very good at actually determining when to transition between regular sleep and hibernation, often leaving users with an empty battery as they open their laptop’s lid. Microsoft has now released an update to hopefully address this long-standing problem.
This update improves the adaptive hibernate policy to provide more instant-on resumes from Modern Standby while helping preserve battery life when the charge is low. Noticeable changes include less hibernation while the battery is above 80% and hibernating sooner when the battery is below 10%.
↫ KB5127936
Among other new features and changes this update brings are Cloud Rebuild, a way for devices to install Windows without needing a local image. Cloud Rebuild can be started form within an existing installation, remotely by administrators, or through the Windows Recovery Environment. Obviously, a working internet connection, wired or wireless, is required for this feature to work.
This is the same update that introduces CLAT, which we talked about yesterday, to smooth the transition from IPv4 to IPv6.
The Big Idea: Sharon Shinn [Whatever]

Bursts of inspiration are all a writer can ever hope for, but how do you flesh that inspiration out into a coherent story? Not just coherent, but a good story. Author Sharon Shinn shares some of her personal experience with this topic in the Big Idea for her newest collections of short stories and poems, Tropes: Stories and Poems of the Fantastical.
SHARON SHINN:
In my 9th-grade creative writing class, my teacher walked in one day holding a small potted plant. “I want you to write a story about this,” she said—and then deliberately dropped it to the floor. Dirt and terra cotta shards went everywhere. My fellow students and I stared for a few moments, and then grabbed our pens and paper. Sadly, I can’t remember what story I turned in, but I do remember that it was rather more lurid than my classmates’ tales of cats pushing pots off of windowsills.
Since I’ve became a published author, dramatic writing prompts have seldom come my way. But they’ve been replaced, at least now and then, by the flashes of inspiration that catch me at unexpected moments. Sometimes they’ll arrive as images, inexplicable but insistent; sometimes as phrases or sentences that seem melodic and hypnotic. Sometimes they will just manifest as ideas. What if…
Often these tantalizing flashes just camp out in my mind for months or years before I decide what to do with them. In idle moments between other projects, I’ll examine them again, trying to figure out how they might fit into a story, what would come beforehand or what would follow after. As most writers would tell you, the idea is the easy part. Fleshing it out is the challenge.
That’s the case with three of the pieces in my new collection, Tropes. I’d had the prompts for years. I just wasn’t sure of the rest of the stories.
In the case of “Blessing in Disguise,” a novella set in my Elemental Blessings series, the flash was an image. Of a broken derelict of a man sprawled before a temple door, waiting out a rainstorm. In this world, whenever a newborn is five hours old, a family member goes out to find three random strangers at a temple to draw blessings that will guide the child for life. So I knew that someone was going to show up to demand that this man participate in the ritual—and that he would try to decline because didn’t feel worthy. Why? Was he a criminal? An assassin? An addict? What had brought him to this point? How could the simple act of choosing a blessing alter the trajectory of his life? Who had come to the temple asking for this favor? How would that person’s life be changed by this meeting? And how could this story fit into the overarching narrative I’d built over five novels? It was a long time before all the pieces came together.
Another novella in the collection, “Rescue,” was inspired by an opening scene that I thought was compelling but had no idea how to develop. A woman is bound to a stool in the middle of an arena. A unicorn is brought in to determine whether she’s a virgin. The woman realizes the two of them have three things in common: We had both been brought here in the hopes that we would please the prince. We were both in fear for our lives. We were both pregnant.
But—but—then what? Does the unicorn certify her as a virgin, even though she’s not? Why would the unicorn care? Who’s the father of the baby? Is he a good guy or a bad guy? And why introduce a unicorn into a story if you’re not going to make some kind of magical use out of it? But what? That one took a lot of thinking, too.
But the line from this collection that I’ve had in my head the longest is this one: Uncle Joe’s house used to eat people. Loved the line. Had no idea where to go with it. Obviously, if you’ve got a carnivorous house, someone’s going to get devoured along the way. But who? Why? Who’s telling the story? I don’t write a lot of short fiction in general—most often when I’m invited into an anthology—and no anthologies had come along with a theme that seemed to fit this sentence. So it floated around in my mind for years before I decided to sit down and figure out the rest of it. It turned into the short story “The Secret of the Spiral Stair.”
Even when it takes me a long time to write the attendant stories, I love these lightning strikes of inspiration. And I love that other writers have experienced similar moments. In a fascinating 2009 TED talk, writer Elizabeth Gilbert discusses the creative process, which at times can feel “downright paranormal.” She says, “I have had work or ideas come through me from a source that I honestly cannot identify.” She talks about poet Ruth Stone, who, while working out in the fields, would feel a poem coming at her over the landscape like “a thunderous train of air.” Stone would race back to the house to grab pencil and paper so she could collect the poem before it abandoned her in favor of another poet who was paying more attention.
I’m not sure where those mysterious flashes come from, whether the sources are internal or external. But when they stick around, I know it’s my job to fashion them into something more corporeal, and then maybe they’ll start haunting other people as well.
Tropes: Amazon|Barnes & Noble|Bookshop
People in ChatGPT-land are talking about Frontier. Not sure who they are or what the context is, but I agree, and want to do more integrations between our codebase and the AI runtimes.
Tech Tips for Parents this Digital Parenting Week [Deeplinks]
In today’s digital world, the internet is an essential resource for young people to access information, explore community, and find themselves. But we know that this often comes alongside fears of experiencing online harms like doxxing, grooming, or bullying.
Trying to protect your family from everything all the time is impractical and exhausting, but some thoughtful planning can help families devise a workable plan that meets their needs and addresses their concerns.
That’s why this Digital Parent Week, we’re sharing easy tips on how parents and their children can work together to co-curate a digital safety plan that helps all members of the family enjoy the benefits of technology while protecting their online privacy and safety.
Online safety begins with communication, not just restrictions. Talk with a young person about how they use the internet: their favourite apps, games, and social media platforms for example. Creating a supportive environment helps young people feel comfortable asking for help if something goes wrong online.
Together, you can think about:
It's easy to think of a young person's experience on the internet as being totally disconnected and different from your own. But now is a great time to also interrogate your own internet habits, like the sorts of sites you engage with, tools you use, and privacy settings you've set. These questions are as valuable to help you as a parent as they are just an internet user.
Sometimes even just figuring out what conversations are worth having can take some effort, we've put together some ideas to get you started in our guide.
Digital security training can feel overwhelming but this is why a community-oriented approach helps. In speaking with your family and friends, you can build out digital security practices that work for you. This makes it more likely that your privacy practices will become second nature to you and your loved ones.
Use secure messaging services for every communication: Choosing a secure service ensures that your privacy is protected from government and corporate surveillance. If you can convince your family to get on board, options like Signal provide the most extensive privacy protections out of the box through its use of end-to-end encryption and limited data collection. But we understand that sometimes it's easier to stick with whatever the family already uses for a group chat, like WhatsApp, Apple's iMessage, or Google Messages, so take the time to familiarize yourself with the limits of WhatsApp and RCS encryption.
Consider the content posted online: It's easy to accidentally share personal information through photos, messages, and other content. Children and adults may unknowingly share personal information through photos, messages, location settings and app permissions. Take time together to review privacy settings, check which apps can access the camera or location, and discuss why personal details should be shared carefully. Make sure you have family agreement about when and where to post photos of each other or your home.
Create incident response plans: Developing a plan for if or when something bad happens is a good practice for anyone, but especially with younger people. It’s important to strategize with your family around what to do in the event of such things happening, and doing so before an incident occurs is much easier than when you’re presently facing a crisis.
Alongside this, simple steps like using strong and unique passwords on all devices, including those that are shared in the family, can make a real difference. Regardless of age, there’s no time like the present to get started on good security hygiene, and for many that starts with a password manager and two-factor authentication.
Many sites permit parents to control features such as personalization, algorithmic feed, autoplay, endless scroll, reactions, notifications, and time limits. Talk as a family about which features are important and useful and which are problematic. The conversations above around boundaries and digital literacy are a more effective way to prepare youth for accessing the internet. To develop true autonomy, young people need the privacy to discover the world for themselves without their parents monitoring the contents of every conversation they have.
Explore new apps together and revisit family rules as they grow. These decision points where you’re exploring with a young person what you’re both comfortable with can be good moments to “find your way to a yes” for whatever feature or tool or game they’re asking about. The questions they ask, along with your responses, provide a road map for what to look for in privacy controls that can get you to a place where everyone is comfortable engaging with that technology.
There is no one size fits all to the tech questions and concerns a parent will face, and keeping young people safe online is not about removing every risk and monitoring every click. This Digital Parenting Week, you can start to focus on what’s important for your family and how to best achieve those goals.
If you're still not sure where to start, installing EFF’s Privacy Badger on every computer in your household is a great starting point to protecting everyone's privacy.
For more detailed information on all these tips and more, visit EFF’s Online Privacy Guide for Parents and Youth.
Posted on Twitter re Frontier being real in 2026, not just a memory.
Knicks settle down [Scripting News]
I was pretty sure the Knicks just needed to settle down, but the fans and the city and journalists and to some extent the team were still living mentally in June, in the aftermath of the greatest sports win in a long time. Then the team lost three, probably because they too were in the bubble of last year. This is the team that when asked how they felt about their chances in the playoffs when they were sweeping a team like the Sixers or Cavs, they would say -- the score in the next game is 0-0. If you believe it was your shit that made you win, try again. It's why rich people lead such miserable lives. They think they won the game, heh but no one wins the game, you may just get a reprieve to play again in the next season, as the Knicks are doing now too.
Last night's game was a perfect demo of why we love this version of the team so much. When someone isn't making their shots, they sub a bench player who adds the spark they needed, and everyone plays with gusto. There's always a new man up on this team or so it seems.
It was good that everyone got the doom and gloom out of their systems, don't mistake this season as a repeat of last season. You're not entitled to anything and bet against it being quite different. Everyone is a year older. Mitchell Robinson is gone. But last night we were reminded of the overall character of the team which seems now to be constant. Every freaking bench player is a phenomenon. How did they get such a bench? Great business people who understand the sport, and coaching that knows how to manage a talented team to go all the way, and players that are close to each other, and feel the team.
I said this durning the doom and gloom, I could cruise for another 50 years on the high from last season. But I am ready for more love from this team and from the city that loves the Knicks even when they suck (please remember that) and we should feel no less proud when they don't.
[$] Containers as a recognized kernel object [LWN.net]
The foundation of the design for containers in the kernel is that there isn't one; there is no container abstraction that the kernel recognizes. Instead, the kernel provides a long list of components — namespaces, control groups, sandboxing mechanisms, and more — along with a note that says, in effect, "some assembly required". There have been attempts (repeatedly) over the years to turn containers into first-class objects with kernel support, but they have never gotten far. Now Josef Bacik is making a try with a concept that he calls "cells".
Security updates for Thursday [LWN.net]
Security updates have been issued by AlmaLinux (cjose, emacs, expat, gcc-toolset-15-gcc, java-17-openjdk, java-25-openjdk, kernel, kernel-rt, libX11, libXi, libXrender, libXtst, mod_auth_openidc:2.3, pki-deps:10.6, thunderbird, webkit2gtk3, and yggdrasil), Debian (chromium, firefox-esr, and openjdk-25), Fedora (firefox, librabbitmq, libreswan, python-pillow, and unbound), Mageia (fio and python3, python-pip), Oracle (buildah, cjose, container-tools:ol8, emacs, flute, libbase, libfonts, libformula, liblayout, libloader, libreoffice, librepository, libserializer, pentaho-libxml, pentaho-reporting-flow-engine, and sac, kernel, libX11, libXi, libXrender, libXtst, podman, python-urllib3, thunderbird, and yggdrasil), Red Hat (firefox, goose, kernel, kernel package, kernel-rt, librsvg2, multiple packages, php:7.4, sudo, thunderbird, and xorg-x11-server), and SUSE (alsa, ca-certificates-mozilla, chromedriver, cifs-utils, coredns, coreutils, cpupower, curl, cyrus-sasl, docker, dpdk, haproxy, kernel, libpoppler-cpp3, libsndfile-devel, libzbar-devel, mozilla-nss, MozillaFirefox, nginx, openai-codex, and perl-Cpanel-JSON-XS).
CodeSOD: Oh, K? [The Daily WTF]
Pierre found this cry for help:
for (j = 0; j < DISTRICT_CARDINALITY; j++) {
/*
* A poor way to work around some sort of memory
* violation. k gets clobbered, so I buffer l with it.
* Help?
*/
for (k = 0, l = 0; k < customers; k++, l++) {
/* c_id */
FPRINTF(output, "%d", l + 1);
METAPRINTF((output, "%c", delimiter));
Honestly, I'm always a little worried in C-like languages when the loop variable isn't scoped to the loop and declared in place. Always concerning, so when there's concerns with clobbering, I'm not surprised.
This iterates across a set of "districts", and then iterates
across a list of customers. Standard output functions are replaced
with macros, and honestly, I don't know that I want to know what
happens in METAPRINTF.
But fine, this iterates across a bunch of stuff and generates output. It's the comment that we're really curious about. "Some sort of memory violation", so we duplicate our loop variable. What on earth could be happening here?
Well, Pierre found the "memory violation", which is probably what you expected:
k = strlen(someOutputString) - 8;
k is used elsewhere in the loop as a variable.
That's not a memory violation, that's just how variables work.
This leaves us with one possible conclusion: the developer who wrote the comment couldn't find this bug. And given the weird use of macros here, I'm going to go out on a limb and guess that it's not the developer's fault; I strongly suspect the loop is so long, so complicated, and so obfuscated that very few developers could find that.
My earlier complaint about scoping the variable to the loop wouldn't fix this, which I guess is on me. They still should really scope the variable to the loop.
Some simple Eufymake tips 3D print over print [RevK®'s ramblings]
My Eufymake UV ink printer has issues, and so does dealing with Eufymake as a company, as I have blogged, but today, let's look at it working, and doing what I ask.
I have done a few "over prints" now, where I am printing on something that exists - printing on PCBs is excellent. But this time I have a 3D print that I want to accurately over print.
So a few tips.
At this point, when you snapshot, the centre of the image should be right. It is worth double checking it matches the image. Do not trust anything away from the centre - trust the printed outline. Checking the image centre helps double check you have placed on the outline.
If doing many prints the bleed ends up on the paper and gets thicker. In my case with a solid base that means print after print the placement of the image gets easier as there is a thick print line around the edge and the model slots in to place.
Indeed, I printed an outline inside the image and placed on that - an alternative would be an outline outside the image, and print a thick layer on paper with the Eufymake so as to create a positioning slot for your 3D image to slot in to place.
The results. Some happy teenagers who can tap to pay on their Netherite Ingots (whatever they are?!).
I think this has proved a good exercise. The case printing I have been working on could have a thick outer outline printed on paper to perfectly align the case before printing. So yes, good testing even on a silly thing like this.
Cheap Code, Expensive Confidence [Radar]
I recently used a coding agent to build Task Viewer, a small community helper for IBM Bob that we use internally at IBM. It’s a convenience plug-in to Bob, with no critical production role. Despite helping some users internally, for me it’s a real-world experiment on a project to find out how much of the implementation I can delegate. How much to delegate also depends on what the person doing the task still needs to learn. Someone familiar with the application may already know how to check the result, while a developer learning the system may need to work through part of the implementation to develop that understanding.
Even when I hand all the coding to an agent, my basic requirements for myself are to check functionality and the design manually. I want to use the application and see whether it behaves the way I intended. Does the design make sense when I actually have to find something? Is the information presented in a way that I can follow? Those are questions I still need to spend time with, even when the application is small and the implementation was largely delegated.
For Task Viewer, I also created plenty of UI tests to check that the data appeared correctly. That gave me a way to repeat some of the checks as the application changed. There was still a separate question about the calculations, though. Seeing a number in the right place on the screen does not tell me whether it’s the right number. I ran SQL queries against the underlying data to check the math, going back to the records the application was supposed to represent.
There is quite a bit of understanding involved in that seemingly ordinary step. To check a calculation, you need to know what the result is supposed to mean and which records should contribute to it. You need some expectation against which to compare what the application displays. Thankfully, I had help from the team in uncovering relationships in the data that I would not have been able to derive or even explain on my own.
For this particular application, I could inspect both its behavior and the data behind it, and I had people to turn to when my own understanding was incomplete. Its limited role also gave me room to experiment without making the result part of a production system. Building that confidence took time, because I had to check the behavior, establish what the numbers should mean, and resolve the questions I could not answer myself. All of that, for me, belongs in the assessment of how much coding I could delegate.
This is why I find descriptions such as “The agent got me 80% of the way there” increasingly difficult to interpret. I understand the feeling behind them. You have something running, most of the interface exists, and it looks as though the remaining effort should be the smaller part. But a calculation based on the wrong records may look perfectly reasonable until you find a way to check it. Before correcting anything, you have to discover where your understanding and the application’s behavior diverge. The agent may help with that investigation too, although the amount of code it has already produced tells you very little about how long it will take.
DORA’s analysis of 1,110 responses from Google software engineers describes some of the time saved during code generation being used for auditing and verification, alongside productivity benefits. I would expect to check an application I had implemented myself too, so any comparison needs to include the time it takes to reach a result we are prepared to use. Otherwise, we can make agentic development look unusually expensive by counting checks we leave out of the human version, or unusually cheap by stopping the clock when the agent says it has finished.
Some of that effort can make later changes easier to accept. Once a UI test exercises an important behavior, it can keep doing so as the application changes, and a calculation checked against a small set of records can become a regression test. I wrote about this in my earlier article on the right amount of specification. Turning an expectation into an executable check lets us reuse some of the thinking that went into it. We still have to establish that expectation, though. If the application and its tests share the same mistaken interpretation, running the tests more often will keep confirming the same mistake.
For Task Viewer, those expectations depended on relationships in the data that colleagues helped me understand. I knew how to run a query, but I still needed their explanations before I could judge what it should return. Looking only at the time I spent checking would leave out the knowledge they brought to those conversations, just as looking only at the generated code would leave out my checks. The confidence we need to accept a change can depend on several people understanding different parts of the system.
When someone is still learning one of those parts, the implementation itself may be how they begin to understand it. Following a value from the database to the screen gives them reasons to ask why certain records are selected and how the application uses them. If an agent completes that whole path for them, they may reach a working feature without having answered those questions themselves. The same task can be a sensible delegation for an experienced engineer and an important learning opportunity for someone else.
Shen and Tamkin’s study about how AI impacts skill formation reports on a randomized experiment with 52 developers learning an unfamiliar Python library. Participants with AI assistance scored lower on an immediate assessment of their understanding. But the researchers also observed that those participants who stayed actively engaged with the AI had better learning outcomes, although that observation does not establish which way of using AI led to better learning. A short exercise cannot tell us how an engineer develops over several years, but it gives us a reason to look beyond whether the assigned feature was completed when we assess what someone gained from a task.
We can make a decision about autonomy before the agent starts, agreeing on which parts it should carry through on its own and which parts a developer should attempt. Sometimes the reason to limit autonomy is that we do not yet have a convincing way to check the result. Sometimes we can check the result quite easily, but we want the person doing the task to develop a particular skill. In that second case, deliberately keeping part of the implementation with the developer can be the right choice even when the agent could produce acceptable code.
The right choice can probably be made by asking these questions: How much effort will the team need to establish that this result is correct for its intended use? And what does this developer need to learn by doing this part of the task? A feature may be easy for a colleague to verify because they already know the application, while the person implementing it still needs to learn how it works before taking responsibility for future changes. We do not need to turn every routine change into an exercise, but we can choose tasks that give someone a chance to develop understanding they will need again.
Table 1 applies to a particular task, or a part of one, with a particular developer. “Straightforward to verify” means we have a credible way to assess correctness for the intended use. A passing test suite does not settle that question if we are unsure what the tests should assert. When checking is difficult or we do not yet know how to do it, the first step is to make the uncertainty smaller, with help from someone who understands the area. Giving the whole task back to an inexperienced developer would leave that uncertainty unresolved.
| Learning value for this developer | Straightforward to verify | Difficult or uncertain to verify |
| Little new learning needed | Delegate within scopeAgree on acceptance checks and let the agent implement. | Establish evidence firstNarrow the task and resolve unknowns. Delegate the parts you can assess. |
| Important learning opportunity | Keep the learning stepThe developer attempts the relevant reasoning or implementation before seeing a generated solution. | Investigate togetherUse a smaller example and an experienced colleague. Limit the agent to specific questions and supporting tasks. |
Imagine a new hire adding a “show only open issues” filter to an issue list in a small Java application. An agent could generate the request parameter, the query condition, and the changes to the screen. For someone who already knows the application, that may be a sensible delegation. Someone learning the system also needs to find out which statuses count as open, where the application selects the records, and how the team expects the change to be tested. Discussing those questions with a colleague is part of learning how to contribute to this application.
For this assignment, the developer could follow the existing request through the application and write the first test before asking the agent to implement the filter. Suppose the list shows twenty issues at a time, and the test data contains twenty closed issues followed by five open ones. Selecting “show only open issues” should display those five. If the application first loads twenty issues and then filters them in the browser, the screen will be empty. Working through that difference with a colleague gives the developer an opportunity to understand where filtering and pagination happen. The agent can help with unfamiliar framework code while the developer investigates why the expected issues are missing.
Once the developer can explain the behavior and has a test that catches the mistake, the agent can handle more of the surrounding implementation. A later request to filter by assignee gives them a chance to use what they learned. Can they work out which issues should appear and whether the existing tests cover the combination of filters? Their explanation during review gives the team a basis for deciding how much of that next change to delegate. The first assignment has also given the new hire experience asking about requirements and discussing a change with another developer.
An experienced engineer can also have good reason to limit the agent’s autonomy in an unfamiliar area. I still needed help with Task Viewer’s data, despite being comfortable writing the queries. When a task takes us into a part of the system we do not yet understand, it makes sense to reconsider how much to hand over. A team can make verification easier by improving its tests and sharing what its members know. It can also choose to preserve a learning opportunity after verification has become easy, because another person is going to need that understanding on future changes.
A developer who has been asked to learn through a task needs time to follow the behavior through the application and someone to discuss it with. If we agree on that purpose and then judge the result only by how quickly the feature appeared, we make it difficult for them to keep the learning step for themselves. We may also leave more of the checking with the same experienced colleagues, while giving others fewer chances to develop the knowledge needed to share it.
Before starting, the developer and the colleague supporting them can agree on what the agent will handle, what the developer will do and why, and what would justify changing that division of labor on a later task. For the status-filter example, this means allowing time for the developer to trace the request and write the first test before the agent implements the filter. As that understanding develops, they can revisit the division on a related change.
With Task Viewer, I could delegate much of the coding because I had ways to check the result and colleagues who could help where my understanding was incomplete. I want us to keep creating those conditions as we ask agents to do more. Better checks can reduce the effort needed to accept a change, while time spent learning can help another developer become able to make that judgment. Sometimes that will mean deliberately leaving the first test and investigation with a person, even though the agent could finish them. When we expect that person to take responsibility for the next change, giving them the opportunity to understand this one belongs in our decision about how much to delegate.
Grrl Power #1508 – Laces out! [Grrl Power]
I’ve been working from home for the past 15 years, drawing this lovely comic for you guys, and I haven’t had to deal with rush hour traffic in all that time, (outside of some poorly timed errands and whatnot) but I still firmly believe that people who drive down to the end of the merge lane when everyone else has already merged then forcibly nose their way in, thereby causing 80% of the actual traffic, deserve their own holocaust.
If you’re a geologist, and have opinions on what a cored out section of igneous mountainside should look like, or have other observations on the physics of what’s happening on this page, well, now is your time to shine. Why Maxima decided on this approach vs just a really huge energy beam, who knows? Despite all the energy blast variations she can do, maybe her super petajoule shield buster beam always looks like the one she used on the Fel carrier, and the galaxy knows what that looks like. Also this does have its own cool factor to it. And despite probably being the first weapon* ever used, throwing a rock can still be an effective tactic against high-tech opponents, an archmage, a demon, a whole army, or even a Death Star. It’s just a matter of scale, and/or velocity. Okay, the archmage would probably have the best chance against that sort of thing, but the nice thing about rocks is that they come in all sorts of sizes, and they’re just laying around for free. A boulder the size of a house? Probably not a game-ender on the archmage. If you can throw an entire mountain? That would certainly scale the defensive mana expenditure at the least.
*Like a tool based weapon, not claws or teeth or an aggressive pseudopod.
Oh, look who it is in the vote incentive. The NSFW version is finally up at
Patreon. Plus a bonus pic.
I think she would get in trouble for doing this. She’d mess up the… floor of the waterfall? Is that what it’s called? The receiving pool? No, probably not that. Anyway, she’d churn things up and cause a ton of weird erosion.
Since you might be wondering, Niagara Falls is about 165 feet high, so Babezilla obviously doesn’t have to be full sized. I’d say she’s about 175-180 feet tall here?
Double res version will be posted over at Patreon. Feel free to contribute as much as you like.
Explaining funny [Seth's Blog]
This is one of the most famous comedy bits of all time:
But why is it funny? The disconnect between experiencing it and explaining it represents one of the challenges of teaching. It’s also at the heart of leadership, marketing and culture.
Design, good taste, genre, communication style–these are all human endeavors that inform our days, but most of the time, we’re at a loss to explain them.
Abbott and Costello are avatars, approachable and relatable to their audience. You can see yourself as one or the other, depending on the moment. They’ve plotted an intricate dialogue, one that builds on itself, gaining traction and increasing tension as it goes. And as each expresses their frustration with the situation (and to a degree, with each other), it’s easy to put ourselves in their shoes.
We’ve never been in this exact situation, but we’ve all experienced a moment like this.
Most of us are in on the joke as we watch it. We know it’s a joke, and we understand early on the nature of the wordplay. So much so that the sketch itself becomes an icon, one that others are based on, sometimes with great fidelity:
Funny even before the reign of U2. So iconic that it’s now a three-word shorthand.
We can have the same discussion about your logo. Or why your book cover is less than it could be.
When someone is designing a bridge, we don’t have to wonder if the engineer “gets it.” The metrics are obvious and easily measured. We have precise words and numbers that are external to our own experience and the zeitgeist, and whether a person or a machine does the calculations, it works or it doesn’t.
But much of the rest of the human experience is often too layered and nuanced to be reduced to a simple formula. We need to notice enough and engage enough to get it. That’s what Heinlein was talking about when he coined the 60s term grok.
When a municipality sets aside the resources to build a ‘signature’ bridge, their own Golden Gate, there’s often a conflict. Not just disagreement about the need for something more than the utility of moving across the river, but also understanding what beautiful and important even looks like. Some people don’t get it.
Saying “that’s not funny,” or “I think it’s ugly,” is easy. The difficult work is acknowledging that someone else might disagree.
Human emotions require a viewer, not just a creator. The funny, the beauty, the elegance: they happen for someone, in their experience.
“That’s not beautiful,” is not the same as, “I don’t think that’s beautiful.”
I don’t have to explain a joke or a sculpture or a logo. But I do have to know enough to imagine that someone else is going to get it. We can choose to care enough to figure out why someone gets something we don’t, and imagine what it might take to create something human enough that others will care about it.
There’s no algorithm, which is part of the point.
The Finest Vintage [QC RSS v2]

it's the good stuff
Amin Bandali: Living healthier [Planet Debian]
Earlier this week I had a coaching session with Protesilaos, where we focused on health and wellness. I took some notes during our call, which I expand on here, and share with Prot's permission. I've been paying more serious attention to my health this year, and our discussion was in the context of me striving to live a healthier life. These notes are shared in the hope of being useful and are not professional advice; for medical advice please consult a licensed physician.
Update 24 October 2026: Prot published a note about our discussion on his website: Healthier lifestyle with Amin Bandali
Life in today's fast-paced world can feel busier than ever, where every day is packed with a myriad of activities and tasks that need to be done, or tempting distractions that pop up seemingly randomly, with hardly a moment to spare. Despite that, or perhaps because of that, it's worthwhile to make time for ourselves and the various aspects of our health.
As embodied souls, our bodies condition our minds. We take care of our body so we can take care of our mind. As humans we evolved for an active lifestyle out of survival necessity. In today's society many of us have sedentary office jobs that involve sitting for long periods of time. It's especially important that we try and make time for some regular physical activity like exercising and resistance training, to help build and retain muscle mass and mobility as we age. Fitness does not have to be the end goal that takes over our life, though there is nothing wrong with that if fitness is one's central goal e.g. as a personal trainer. Rather, for someone like me with other primary goals, my reason to exercise is to help live a healthier life, so I could spend quality time with my loved ones and carry out my responsibilities with a healthy body and mind.
Prot mentioned that our health is directly dependent on the following four factors:
Thus compromising any of these - for example, eating greasy food or drinking alcohol - would undermine the gains from exercising.
While pursuing fitness, it's important to have sustained effort so that the body remains active and the mind is not distracted, and equally important to have sustainable effort so that we don't suffer injuries and not make the pursuit of fitness burdensome financially.
Calisthenics is a key part of the strength training activities Prot practices, in addition to the physically intensive work he does on his land.
Calisthenics [...] is a form of strength training that utilizes an individual's body weight as resistance to perform multi-joint, compound movements with little or no equipment. Calisthenics are popular for their convenience, as they require little to no equipment and can be performed anywhere.
Calisthenics can be done progressively, starting small and building in intensity and duration over time. It is also economically/financially sustainable. These calisthenic exercises are a good starting point (barring existing injuries in the related areas):
Aim to perform each exercise in 3 sets of 10 repetitions, but it's perfectly okay to start with fewer and gradually build up. The exercises should be done around the same time everyday, so that there is enough time for the muscles to rest and recover for the next day. Doing them at night then again the next morning, for instance, would be too short of a time period and not enough for the body to recover. It's also vital to get enough sleep each night to make sure the body can properly rest and be energized the next day.
FoodAs mentioned earlier, it's crucial to pair exercise with a healthy diet. I found Prot's programming metaphor for food interesting: similar to how it takes more time and effort for us to process and understand complex source code, breaking down and processing complex foods is similarly more difficult for the body. Prot does not eat fried food, and recommends avoiding sauces as much as possible: greasy, salty, and creamy extras make food more irresistible. They tend to make one want to eat more than what the body needs, and are to be avoided in isolation but especially in combination. In keeping ingredients close to their natural states, not overdoing things, and not eating more than the body needs, Prot extends his philosophy of simplicity and moderation to cooking.
In addition to eating healthy meals, we need to apply similar consideration to snacks: avoiding overly salty or sugary snacks, and choosing healthier ones. Nuts can make great snacks in small quantities, especially almonds and walnuts, if one's not allergic.
In addition to the inherent healthiness of the food or snack, Prot also suggests paying attention to methods of preparation. For instance, regarding concentration or distillation: juices, even when freshly squeezed from fruits, might have more of the fruits' sugar than its pulp and other beneficial parts. Additionally, chewing triggers biological responses in our body which for example can reduce stress, and release satiety hormones to help avoid overeating. So, Prot suggests to just eat the fruits themselves.
Regarding weight loss, it will occur naturally as we introduce exercise into our routine, and pay closer attention to what we eat and drink. It's important to lose the weight slowly to condition our body to the new reality as it changes. Shortcuts tend to either not work, or have negative consequences. By going through the process slowly and with regularity, we gradually retrain our muscle memories and adjust our habits so we can maintain the lower weight and the healthier lifestyle. Regularity is key: it's better do a little everyday, than do a lot on only two days. It helps us develop the attitude that the exercise is part of our regular effort that we do consistently all the time.
Working on wellness and living healthier is a matter of moderation, and building capacity over time. I will give it the time and attention it needs, without rushing, and enjoy the journey to becoming a healthier version of myself.
Take care, and so long for now.
NetBSD adds nano-like text editor to base system [OSnews]
Flag LinuxNetBSD made a
seemingly small, but very welcome announcement today: they’re
adding a more user-friendly, easier to use command-line text editor
to the base install.
To ease the transition for new users, NetBSD -current now includes an alternative editor to vi(1) and xedit(1) in its base system, atto(1).
It is a modeless screen-based editor similar to nano, pico, xedit, or emacs. It is only 48 kilobytes, making it suitable for inclusion in the rescue system.
↫ NetBSD Foundation on Fedi
Most guides and how-to article for operating systems like NetBSD assume the use of vi, and while I don’t want to ignite a flamewar, vi isn’t exactly the most approachable or friendly piece of software out there. My occassional text editing in the command line is all done through nano, but now I’m definitely curious to give atto a go.
While other tech news websites are plastered with articles about a PC maker adding a touch screen to one of their laptops, we’re talking about a new CLI text editor in NetBSD’s base system. Priorities, folks.
Windows CLAT is now generally available [OSnews]
Windows 11 25H2, starting with build 26200.9550, now comes with something called CLAT.
As organizations move toward IPv6-only and IPv6-mostly networks, some applications still depend on IPv4-only applications or services. Windows CLAT helps those applications continue to work when a network does not provide native IPv4 connectivity.
CLAT is the client-side component of 464XLAT. It statelessly translates IPv4 traffic from the Windows client into IPv6 for transport across the network to a provider-side translator (PLAT), which provides stateful NAT64 translation to IPv4.
↫ Jim Alumbaugh at Microsoft’s Networking Blog
Yet another important component of the long, neverending transition to IPv6. Like endlessly cutting a cucumber in half, you’ll never quite run out of cucumber to cut.
A Lovely Stay At Cleveland’s Fidelity Hotel [Whatever]
Remember a couple weeks ago when I asked for Cleveland
recommendations from y’all? Well, the time finally
came to go to Cleveland with my dear friend Lily, and we had an
absolute blast. I want to spend the next few posts regaling you
with my exciting tales of Cleveland, but I figured it made the most
sense to start with the place we stayed at.
While some people feel like a hotel room is the most unimportant aspect of a trip since it’s just “where you sleep,” I find that I require a certain level of accommodations and comfortability. So, after careful consideration, I chose Cleveland’s Fidelity Hotel. I booked a petite suite for us because I believe in balling out when a friend comes from out of state to visit.
This was undoubtedly the correct choice. I could not have asked for a more perfect hotel experience. From the moment we pulled up to valet, to the quick and easy check-in process, to seeing our room in person and getting a plate of chocolate chip cookies delivered to our room as a welcome gift from the hotel, it was a fantastic first impression.
At check-in, the front desk lady and I were having a conversation about some of the places we planned to go and where we had reservations at, yada yada. When I mentioned the only night I didn’t have dinner reservations for was Sunday, she quickly and enthusiastically suggested a place called Jaja’s. After looking it up, I booked it for dinner on Sunday and later on told her we went ahead with her suggestion, and she was so excited for us! She said she wanted to hear all about our experience and see pictures of the food. A+ recommendation from her! (There will be a post over Jaja’s because it was so good.)
Anyways, our room was super clean and comfortable, and had some seriously beautiful features, like the bath tub and bathroom tile:


There were two super comfortable robes available for us, one pink and one maroon-ish, and the bathroom has its own thermostat so you can make the bathroom nice and warm when you get up to shower in the chilly hours of the morning!
Despite me very much looking forward to taking a bubble bath in that amazing soaking tub, I never did and I am so upset about my missed opportunity! Part of the reason I wanted a petite suite was for the tub! I seriously can’t believe I didn’t carve out time for a nice soak. Next time, for sure.
The bed was large and super comfortable:

(Giraffe not included in your stay.)
Lily and I are thankfully both not bed hogs or blanket stealers, so this bed was more than enough space and comfortable for both of us.
Plus there was this giant wardrobe (with automatic lights when you open the doors) that gave us both plenty of room to put our clothes in:

Of course, we can’t forget about the absolutely stocked mini bar area:

Not only is there a mini fridge totally full of mixers, beverages, and more alcohol than what is up top there, but there’s a whole cocktail making setup! You could get so fancy and creative at the mini bar with that cocktail shaker and muddler. Plus, there’s a gooseneck electric kettle and tea, coffee, and coffee cups, and bags of candy and snacks. Here’s the official mini bar menu:

Let me give you guys a little tip here. Inside the fridge was three small shot bottles of Tito’s. They are listed as $10 for one of the 50ml bottles, so all three would be 150ml for $30. The 375ml bottle of Tito’s on top of the mini bar is $35. Which sounds like a better (and more fun) deal? And for the tequila, there’s the $12 little bottles of Casamigos, but the big bottle is Lalo tequila, which in my opinion is WAY better. So pop one of those suckers open and if you don’t finish it, take it home! That’s what I did.
We absolutely loved this room, and the only thing better than the room was the service. I have never had better hotel hospitality in my life than at the Fidelity, and I’ve certainly been to a few hotels.
Thinking back on it, I really can’t believe how nice everyone was. Not only did I have some seriously great conversations with them (I promise I didn’t impede their work (too much)), get amazing recommendations, and get greeted with chocolate chip cookies, but I was also given some free drink tickets to use in their restaurant, the Club Room. I was complimented on my outfits by them, welcomed in and wished farewell upon arriving or leaving, and even when I had a maintenance issue with the door to my suite, the maintenance man was a gem! I seriously felt like I had stumbled into a diamond mine of hospitality.
So, huge thank you to David, Nina, Cyle, and everyone else who made our stay so amazing.
Of course, can’t forget about the aforementioned Club Room. The lobby for the Fidelity is charming and elegant, and with the restaurant having velvet bench cushions, beautiful stoneware, and eye-catching chandeliers, it all feels intimate and cozy yet still elevated and intentional.
Though we didn’t have a full meal at the restaurant because we had reservations for so many other places, we did get a snack and drink upon arrival.

We picked the stuffed dates with pimento cheese, bacon, and pickled mustard seeds:

Listen, I will always love a stuffed date, there’s no two ways about it. These were as delicious as they look (which is very!).
And I wanted to try the polenta:

Lily actually doesn’t like polenta at all unfortunately, but I thought this was really good. Polenta is something I almost never see offered, so I knew I wanted to try it here, and I’m glad I did. This was a nice, warm, comforting bowl of polenta with brown butter and mascarpone. Yum.
And of course, our drinks! The Salty Paloma and the Desert Oasis:

Both of these were really excellent, and that’s such a bright and vibrant slice of grapefruit to accompany it!
I also went for breakfast one morning and got a stack of pancakes:

These were perfectly dense and a good treat to start my morning with (though I’m not very hungry in the mornings so I only ate one and then took the other two back to my room).
Now, when I booked the Fidelity Hotel, I actually booked one of their packages they offer. Their All Access Night Out package comes with two drink tickets from their bar, a $20 minibar credit, half priced valet, and complimentary late checkout at 1pm (which Lily and I definitely ended up needing). Since valet is usually almost $60 a night (with in and out privileges), the half priced valet saved me almost a hundred dollars.
Oh, and the drink tickets I got with the package are separate from the ones the lovely front desk girl gave me as a gift. After some really great conversation with her, she even bumped me up to VIP status because we were vibing so well, and then we complimented each other’s nails! I’m serious, their friendliness is unmatched at Fidelity.
For three nights in the petite suite, valet, minibar charges and restaurant/bar charges, yada yada, it was around $1300. The Fidelity Hotel is definitely a luxury priced place, but I do think the experience is unmatched in Cleveland, and maybe even all of Ohio. It is definitely worth splurging on if you’re going to be in Cleveland for a couple of days, or for something special like an anniversary night. We certainly enjoyed our stay, anyway.
Have you been to Cleveland’s Fidelity Hotel before? Or maybe their Cincinnati location? I would love to stay at the Cincinnati one. Are you a valet type of person or a “I will find parking myself” kind of person? Let me know in the comments, and have a great day!
-AMS
[$] LWN.net Weekly Edition for October 29, 2026 [LWN.net]
Inside this week's LWN.net Weekly Edition:
Sylphide OS: an operating system for computers based on microcontrollers [OSnews]
Do you want a hobby operating system with a desktop for a microcontroller-based computer? Sylphide OS is a new project aiming to build just that.
For the last few weeks, I’ve worked on a new pet project: an operating system for computers based on microcontrollers. There aren’t many yet, but I expect them to be more and more common.
Why MCU computers ? You get a relatively very simple platform, booting straight to your code (or almost), and you can understand the whole architecture. Exactly as it was with home computers long ago. And not at all what you get with modern computers. Even booting involves lot of very different systems, black magic, and even blog/proprietary software.
↫ Thomas Capricelli
It’s very early in development, but by building it atop FreeRTOS, Capricelli had a head-start. It’s got a basic desktop, one that might need some changes to avoid the lawyers. The code’s open source, of course.
A report from the LPC sched_ext microconference [LWN.net]
The Linux Plumbers Conference blog has a report from the sched_ext microconference held in Prague.
Three main topics dominated the discussions
- Priority inversion and how to handle it in sched_ext: lock holder and lock waiter preemption, time slice extension, and making proxy execution work together with BPF schedulers.
- Paravirtualized scheduling: letting the host and guest schedulers cooperate across the VM boundary, with sched_ext as the policy engine on the host.
- Device and topology-aware scheduling: using hardware feedback (Intel HFI), device/accelerator locality and cache topology to drive task placement.
Nautical Naughties [Penny Arcade]
I identified something really odd while I was out at PAX Aus; the normal cadence and tenor of the AI discourse began to vibrate at an especially high frequency. The conversation has always been fraught, but everywhere I turned the side which advocated for the tools was really spun up, aggressive, and emboldened, and I wasn't seeing the counterpunches I'm used to. My presumption is that it's connected broadly to the Anthropic IPO, which is a severe test of… well, it's a gut check for the whole ball of wax - the future they are attempting to sell.
The Big Idea: Wole Talabi [Whatever]

Big ideas don’t always have to start out as grand bursts of inspiration. Sometimes a big idea is made up of smaller ideas over a long period of time that all snowball together in perfect harmony. Author Wole Talabi explores this idea as he talks about his newest novel, The Fist of Memory, and cites some other great authors that lent some of those small ideas to him.
WOLE TALABI:
When I look back at the process of writing The Fist of Memory, I don’t see a single big idea that anchored me through it. I see many small ideas orbiting a glowing spark of motivation like a protoplanetary disk that eventually coalesced into a novel.
So yes, I could tell you that its inspired largely by a lot of the action media I had consumed growing up, woven together with my deep and endless fascination with first contact SF narratives like some weird Nigerian lovechild of John Woo’s The Killer and Cixin Liu’s The Three Body Problem. I could tell you it features assassins with direct neural interfaces and is set in a grounded but ultimately hopeful near-future world where the impact of climate change is impossible to ignore. I could tell you that it tries to unify uniquely African traditional beliefs and philosophies like Sankofa (which emphasizes the importance of remembering and learning from the past to shape the future) and Ubuntu (that interconnectedness is what makes us who we are) with modern scientific understanding of the nature of reality anchored in quantum mechanics. I could tell you that the world of the novel is shaped by the uniquely Nigerian brand of political violence and turmoil extrapolated from the country’s real-life complex political history of coups and behind-the-scenes power struggles. I could tell you all this, but these are all fragmentary ideas and inspirations and influences and intentions, and they don’t tell you much about why it took me so long to finally put them all together and what they all add up to.
Besides, I can’t tell you the one really big idea behind The Fist of Memory without spoiling at least some of the plot. So instead, I’ll tell you about the place stories come from, where small ideas can connect to become more than the sum of their parts because the big idea behind this novel is about connection anyway.
SF’s big mama Ursula K LeGuin described the production of great art as a journey into the self to pull from the “collective unconscious” – a Jungian idea that beneath the individual unconscious there lies something collective: patterns, myths and archetypes shared by humanity. I’ve always been fascinated by this concept but never applied it to my own writing. It seemed like an abstract way of explaining why so many stories across cultures seemed to share some DNA or seem to draw upon something ancient and fundamentally human to speak about the present day.
And that’s all it was at the time – an interesting theory. But when I first started to write this novel, it quickly became clear to me that I was reaching for something larger than I could consciously articulate. I kept trying to consciously impose some kind of superstructural order on the constellation of influences I had brought with me in trying to achieve my intention. But the story and the characters refused to conform. I was trying to construct a planet when what I needed was to journey into myself to find the gravity that would naturally connect all the fragments that had accumulated inside me over decades. Something I needed to go inward to find by excavating my memories.
Memories of a TV program where a professor of sociology argued that Africa and Africans in general were somehow inferior and cited the usual nonsense – present day economic underdevelopment, biased IQ statistics, etc. which triggered in my young mind, a kind of rage and anger and desire to prove him wrong and show that Africans were indeed capable and that our cultures, histories and philosophies contained ideas and concepts are rigorous and fascinating as any other.
Memories of growing up in Nigeria during the brutal military dictatorship of General Sani Abacha – the political chaos, the riots and protests, the lawlessness. Memories of my father and his book of judo techniques that sparked my love of martial arts and Hong Kong action cinema. Memories of my boarding school days in Benin City, studying mathematics and physics, staring at the night sky and wondering – what was out there? Memories of reading my mother’s books on African literature, of discovering the richness and depth of Yoruba mythology and history and philosophy. I let all these personal memories flow together, as I navigated the collective unconscious, seeking connections between them and the larger human desire for connection, for survival, for care and understanding. It was then that I understood that connection itself was the story. It began to flow out of me – less like construction and more like archeology.
After that, it was just a matter of editing to get the structure and tone and rhythm and flow of the story right. It’s funny now to see that the novel I had been trying to assemble from apparently disconnected fragments of myself was about the possibility that disconnectedness itself might be an illusion. One that can only be broken in the subconscious. That realization wasn’t just my method of writing the novel. It became what the novel was about.
The big idea of The Fist of Memory is the possibility that, just as there are connections inside us that we aren’t always consciously aware of, what we perceive in the physical world might, at another level of reality, be connected. That things which appear separate can be part of the same continuum. Science and spirituality. Life and death. Violence and redemption. Past and future. Heroism and villainy. Memory and reality. One human consciousness and another. To quote big mama LeGuin again the idea is that, “The unconscious mind is coextensive with the universe.”
Writing this book has taught me that stories are technologies by which we connect to ourselves and to each other. I hope that when you read it and are done with all the excitement, technology, politics, action and physics I’ve baked into it, that you are left with a warm glowing feeling of possibility and connection.
The Fist of Memory: Amazon|Barnes & Noble|Bookshop
Author socials: Website
C++/WinRT overcorrection: Using make_self and immediately converting it to the projected interface [The Old New Thing]
In C++/WinRT, there are two ways of creating objects that you yourself implement.
For the purpose of this discussion, let Impl be the
class you wrote that implements a Windows Runtime object. If you
are implementing something that was declared in an IDL file, it
will be the
winrt::Namespace::implementation::ClassName for the
instance object or it will be the
winrt::Namespace::factory_implementation::ClassName
for the factory object. If it wasn’t declared in an IDL file,
then it is the class that you manually derived from
winrt::implements.
One way to create the object is to use
make<Impl>, which creates the implementation
object and then returns the Windows Runtime projection version of
that object. (If Impl is manually-derived from
winrt::implements, the projection is the first
implemented interface.)
From that Windows Runtime projection, you can regain access to
the implementation object by doing
get_self<Impl>(projected), if you want to access
things in the implementation object that aren’t exposed in
the projection.
Alternatively, you use make_self<Impl>, which
creates the object but returns a
winrt::com_ptr<Impl> instead of a projection.
You can then access things in the implementation object from that
winrt::com_ptr, and convert it to the projected type
with the * operator.
| make | make_self | |
| ↓ | ↓ | |
| projection | get_self → |
implementation |
| ← operator* |
Which one you choose depends on where you want to go first.
If you are first going to access
non-projected public members of the implementation class, use
the -> operator on the
com_ptr<Impl>. For example, you might want to
set up the object before returning the projection.
winrt::IVector<winrt::Widget>
MakeWidgets(int style, int count)
{
std::vector<winrt::Widget> v(count, nullptr);
std::generate(v.begin(), v.end(), [&] {
auto widget = winrt::make_self<implementation::Widget>(style);
widget->Enabled(true);
return *widget;
});
return winrt::multi_threaded_vector(std::move(v));
}
But if you are just going to use the projection, you can take the direct route instead of going the long way.
// The long way
winrt::IVector<winrt::Widget>
MakeWidgets(int style, int count)
{
std::vector<winrt::Widget> v(count, nullptr);
std::generate(v.begin(), v.end(), [&] {
auto widget = winrt::make_self<implementation::Widget>(style);
return *widget;
});
return winrt::multi_threaded_vector(std::move(v));
}
| make_self | ||
| ↓ | ||
| projection | ← operator* |
implementation |
| ↓ | ||
| returned |
In this case, you don’t need to pass through the implementation type.
// The short way
winrt::IVector<winrt::Widget>
MakeWidgets(int style, int count)
{
std::vector<winrt::Widget> v(count, nullptr);
std::generate(v.begin(), v.end(), [&] {
return winrt::make_self<implementation::Widget>(style);
});
return winrt::multi_threaded_vector(std::move(v));
}
| make |
| ↓ |
| projection |
| ↓ |
| return |
My guess is that the people who go the long way don’t realize that there are two ways. They learned only one way and just rely on it even if there’s a shorter way.
The post C++/WinRT overcorrection: Using <CODE>make_self</CODE> and immediately converting it to the projected interface appeared first on The Old New Thing.
Victory! You Can Now Exclude Apps from Siri AI [Deeplinks]
In the most recent update to Apple’s devices, iOS 27.2, the company has introduced a new setting to “Exclude Apps” from Siri AI, fulfilling one of our asks from our Encrypt It Already campaign earlier this year.
One of our main concerns with new AI features on devices is how those features interact with end-to-end encrypted content, particularly with secure messaging apps. Many AI features require cloud processing, and despite privacy protections engineered into these systems, the content of secure messaging apps may leave a user’s device without their knowledge. That changes the privacy concerns around using those tools. In a perfect world, users would be able to put a barrier up to ensure data from certain apps doesn’t leave the device. Here was our initial ask:
You should be able to tell the operating system’s AI to not access an app, even if that comes at the “cost” of missing out on some features. The setting should be straightforward and easy to understand in ways the Gemini and Apple Intelligence controls currently are not.
At launch, we found the settings to control Siri AI’s app access behavior pretty confusing. You had to toggle several options to block Siri AI off from accessing an app, or disable Siri AI entirely. Turning off Siri AI and reverting to Siri Classic is, for now, still a good option if you’d prefer to use the older version.
The most recent update is far more clear and does more to protect your data. And, just as expected, it comes at the cost of some features. That’s a good thing, actually. The features not working shows that the new setting is effective.
Here’s how to add apps to the exclusion list, once you’ve updated to 27.2:

Now Siri AI cannot access the contents of the app. Excluding an app also means you may lose some features. For example, if you exclude the Apple Messages app, you will no longer be able to have Siri AI read or respond to messages for you. Even the “onscreen awareness” feature, where you invoke Siri and ask it for information about what you’re currently looking at, will not work anymore. For example, if you exclude Signal, you cannot invoke Siri and ask it to discern any information in the Signal app. You’ll just get these messages:

This update from Apple is also a good excuse to check in on the process on Android. It has improved a little, but is not as straightforward as Apple’s new settings, and lacks the ability to set the screen context feature per-app. But you do have some control over what Gemini can access:
This process seems to work well enough for some data and we like that it’s opt in, but it’s not exactly intuitive. For example, Signal doesn’t appear there because Signal doesn’t support Gemini’s app access feature at all. That means Gemini can’t access the content of Signal directly, which is good.
But Gemini can read notifications if you’ve enabled the “Device Assistance” Connected App (which you likely have, since that also enables basic features, like setting a timer—check under Settings > Personal Intelligence > Connected Apps), and it can use screen context unless you’ve disabled the Device controls > Screen context > “Use screen and app data” option in the Gemini Settings. These two features may access the contents of the Signal app or notifications, if you choose to use them. We’d prefer a more hard-lined approach that reduces the chances of user error here: Google should give users the ability to turn these features off per app.
Apple clearly understands that some users want stronger controls over what Siri AI can and cannot access. But we think they should go further and offer the option to only use “on device” AI features, similar to what Samsung offered with its Galaxy AI. We’re happy to see this change and think all operating systems need to consider similar controls moving forward.
Court Should Curb Abuse of Grand Jury Subpoenas Targeting Social Media Users [Deeplinks]
A federal appeals court should curb the government’s abuse of grand jury subpoenas to unmask social media users who criticize lawless immigration enforcement.
That is the message from the ACLU, EFF, and other civil liberties and trade groups who filed a friend-of-the-court brief in a sealed case in the U.S. Court of Appeals for the District of Columbia.
The case involves the government’s investigation of an anonymous Reddit user who commented on a post about an immigration officer in Minnesota. The Department of Homeland Security (DHS) first issued an administrative subpoena to Reddit to unmask the user. When the user challenged the subpoena in court on free speech and statutory grounds (as many others have), DHS withdrew it. But then the government obtained a separate grand jury subpoena—a subpoena issued by a prosecutor to gather evidence to present to a grand jury before any criminal charges are filed—for much of the same information. The user then challenged the grand jury subpoena too, and the case is currently being appealed.
The right to speak anonymously is essential. It preserves privacy and shields critics from government retaliation. In the past year, the Department of Justice (DOJ) has issued grand jury subpoenas to social media companies for their users’ personal data. This is frequently done for improper purposes and without really showing that social media users have committed any crime. These subpoenas have the effect of intimidating and chilling critics, as immigration authorities have engaged in invasive, unconstitutional, and sometimes violent conduct.
As the amicus brief makes clear, courts should not defer to the government’s claims regarding the legitimacy of using grand jury subpoenas to unmask internet users. Instead, the subpoenas must receive proper First Amendment scrutiny. Like many other types of legal processes, grand jury subpoenas are issued by federal officials without prior court approval. And they too can be abused to harass or retaliate against people critical of the government.
The amicus brief was filed in early September and recently unsealed. The brief was signed by the American Civil Liberties Union of DC, EFF, the Center for Individual Rights, the Foundation for Individual Rights and Expression, the Cato Institute, and NetChoice.
It is notable that NetChoice signed the amicus brief. It is a trade group that represents many companies who have received similar subpoenas including Reddit, Google, Meta, PayPal, among others. EFF has called on these companies to do more to defend their users’ speech and privacy rights in the face of these subpoenas.
The PHP security incident is now (almost) old news. The timeline looks something like this: In late August, Wiz Research discovered two serious remote code execution vulnerabilities in PHP called PHP2Shell. They reported the vulnerabilities to the PHP team on August 24, which started working on fixes on September 21. Amazon apparently detected PHP2Shell in the wild on October 17 (four days prior to disclosure). On October 20, details of the two vulnerabilities (CVE-2026-109618 and CVE-2026-109619) were leaked prematurely. The next day, October 21, the PHP team released patches.
If that were the end of the story, it wouldn’t be notable. But the problem goes a lot deeper. Although PHP is no longer fashionable, it runs a huge portion of the public internet. WordPress, Drupal, and Wikimedia run on top of PHP, and people who build on top of these tools are understandably not interested in chasing the latest hot technology. “Choose Boring Technology” is one of my favorite technical essays, and PHP is nothing if not boring. It’s well known and understood, and replacing something so widely used subjects you to a steep learning curve and new bugs and vulnerabilities.
One problem is that PHP has a long history. According to Wiz, the vulnerabilities are present in versions going back to PHP 5.4. The PHP Foundation has released PHP 8.5.12, 8.4.27, 8.3.36, and 8.2.35, and said that all instances of PHP need to be updated to one of those releases. Sites that can’t be updated should be taken offline and isolated. Upgrading an ancient PHP installation is a task that’s likely to fall on organizations least capable of undertaking it. There are plenty of ancient WordPress installations that haven’t been updated in years. There were so many fires to put out, and PHP pretty much “just worked”; running an old version wasn’t causing problems, and with so much else to do, why ask for trouble? Unfortunately, choosing boring technology doesn’t mean ignoring updates. And those who decided not to ask for trouble are now in plenty of trouble.
This situation demonstrates the power of the latest foundation models to uncover vulnerabilities. Wiz used Wiz Atlas (its own model), Gemini 4 Argon, and GPT-5.6 Sol to discover the vulnerability, which isn’t a single bug but a combination of several bugs that have been present for years but were obscure enough and apparently harmless enough to escape detection or repair. As Wiz says,
The underlying flaws had been present for decades, but demonstrating their exploitability required an exceptionally complex chain of steps, at the edge of what human researchers could practically achieve. Frontier AI models substantially reduced that barrier, turning a longstanding flaw into an exploit.
That’s the new frontier in security: finding ways to exploit chains of minor, unfixed, and sometimes undiscovered bugs in novel ways. Wiz was working responsibly with the PHP team to repair the vulnerability. The implications of this, however, are far broader than the fix to PHP, or even the thousands of PHP sites that need upgrades and are now vulnerable to attack. This incident shows dramatically how the gap between the discovery of a vulnerability and its exploitation has dropped. Since exploitation began before the RCEs were prematurely leaked, it makes sense to assume that some other organization had access to models capable of discovering the vulnerability. Gemini 4 Argon and GPT-5.6 Sol are publicly available, though with guardrails that limit their usefulness for security research. I’m willing to assume that Wiz had access to the unrestricted version, but I doubt that the PHP team did. There are certainly other models, including open-weight models, that could be used to find vulnerabilities. Regardless of your stance on restricting model capabilities (I think those limitations are more damaging than helpful), it’s clear that Pandora’s box has been opened. No amount of wishful thinking will undo that.
It’s also clear that we—and I mean all of us—rely on a lot of legacy software that isn’t under our control and that no doubt has multiple flaws that can be rolled up into severe vulnerabilities, which aren’t likely to be updated or patched. A vulnerability in the Brotli compression algorithm was just discovered; .NET, PHP, Node.js, and other widely used packages are affected. That strange site where you created an account to buy a clever present that wasn’t available anywhere else—what software is it running, and do they stay up-to-date with patches? Accounts like that can easily leak information. Maybe it’s not running PHP but an equally ancient version of Ruby on Rails, Python’s Django, or Java Server Pages. At least those are still maintained; there are plenty of web frameworks that have been abandoned, and I’m willing to bet that some of them are still in use. Why replace something that works? Because if you don’t, you will eventually be bitten. Using software that’s no longer maintained may give you some security-by-obscurity, but that’s a losing proposition.
Many older open source projects suffer because there are few maintainers. If you look at the timeline carefully, there’s a monthlong gap between the time Wiz reported the vulnerability and the time the PHP team started working with Wiz to fix it. Does that month represent the time this vulnerability took to rise to the top of the queue, as PHP’s security team fought off a horde of sloppy reports? And PHP is in better shape than most projects. There are many open source projects that only have one or two maintainers, and those maintainers are drowning in AI-generated pull requests. That problem obviously becomes much worse when dealing with a complex vulnerability; the maintainers don’t have the time or the access to unrestricted frontier models, let alone the funds to pay for access to the models.
It will be weeks or months before we know how much damage PHP2Shell has done. We don’t know what the costs will be to sites that won’t or can’t update. The PHP Foundation is lucky to have a dedicated security team that was able to provide patches a day after the vulnerability was prematurely announced. Beyond PHP, we have to realize that PHP2Shell gives us a realistic look into a future in which developers and maintainers struggle to maintain software that has been compromised by exploits chaining together flaws that have been latent for many years. As someone somewhere said on the internet recently, “It’s embarrassing how much bad software we’ve written over the years.” Yes. We’re at an inflection point, and we’re starting to pay the price.
I'm doing a little project on rss.chat today and dusting off
the cobwebs of my brain. Since I last worked on this project, I
have converted Frontier to run on modern OSes and written a whole
new app. Only three months, but I have no recollection, even
reading the code isn't helping much. This is when it's incredibly
good to have Claude Code on the job, I can ask it to guide me
through the process we worked out which feels like it was 15 years
ago instead of 15 weeks. It has complete recall. And even though it
didn't work on Frontier, that was a different Claude project, it
was able to debug something that broke in the build script in the
interim. I've spent the whole year teaching Claude how to be me. Is
that a source of immortality? I won't be around to figure that part
out.
💾 Fighting DOGE's Data Grab | EFFector 38.19 [Deeplinks]
When we give our private information to the government to pay taxes, apply for a job, or vote, we should be able to trust that our data won't later be used against us. But in a betrayal of that trust, the federal government has been pooling the information it has about us on an unprecedented scale—and using it for purposes we never agreed to.
EFF and other groups are fighting back. In our latest EFFector newsletter, we're talking about a recent victory in our lawsuit against the government for sharing federal workers' confidential personnel files with DOGE.
For over 35 years, EFFector has been your guide to
understanding the intersection of technology, civil liberties, and
the law. This issue covers
our free tracker blocker coming to Safari, a call
to action for net
neutrality in California, and
a big win in our lawsuit against the DOGE data
grab.
Prefer to listen in? EFFector is now available on all major podcast platforms. This time we're talking to EFF's F. Mario Trujillo about the dangers of government data grabs—and what defenders of privacy are doing to stop it. 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!
Redox OS ring buffers project summary [LWN.net]
The Redox OS project, which is a Unix-like microkernel-based operating system written in Rust, has published a report on the work that it has done in the last year to implement io_uring-like I/O.
Last year, the Redox team received a grant to develop io_uring-like Ring Buffer support at the system task level, as a first step towards ring buffer communications between the application and the majority of system services. This phase of the work finished up in September, as the last pieces were put in place.
[...] In addition to implementing the Ring Buffer machinery for our system services and drivers that can support it, an io_uring and liburing-like API for applications was completed and demonstrated. There was also substantial work done on support crates, including an async executor for drivers.
And there was some very exciting work on various performance improvements, to allow much faster switching between applications and their system services. But I will let the team tell you all the technical details.
[$] The campaign to push Northstar into Linux distributions [LWN.net]
There is not a broad selection of mature, open-source web-browser engines for Linux users. Most of the browsers available for Linux are based on one of just three projects: Chromium's Blink, Firefox's Gecko, or WebKit. A new entrant would generally be seen as a welcome alternative, but the recent campaign to push one of the LLM-written Nordstjernen browsers into Debian and Arch Linux has raised some questions about the project's development and security processes.
I really like the Apple TV show Small Prophets. It's silly and fun, but also intelligent and beautifully presented. Michael Palin of Monty Python is a supporting actor playing the main character's father. He's famous for a lot of Monty Python sketches, esp the one about the dead parrot. "He's not dead, he's pining for the fjords."
PCB mechanical fit testing [RevK®'s ramblings]
One of my latest designs needed more mechanical fit checks that
usual, it was to work with specific hardware and I wanted to check
the case design with the PCB and battery and so on all fitted
before ordering the PCB. So I 3D printed the PCB.
But the result in resin is stunning beyond belief. I actually ended up going through the KiCAD models and updating some of the 3D model STEP files even to be even more accurate. Some points of mention.
I am amazed at the precision. But actually there was one area that was technically too accurate!
KiCAD output the board, and will even output the solder pads, and output the components. But in real life the components would be in solder paste. The actual output had maybe tens of microns gap between component leads and the PCB itself. This meant a print slice layer had nothing.
The result was most components were fine, amazingly, even though all of the SMD had this gap. The contact area after the gap was enough, even on even 0201 resistors. But the leads of SOT parts were curved to a point as they are in reality. In reality solder would wick up those legs.The result was interesting. The components printed perfectly but very loosely connected to the PCB!
I ended up with a lot of missed components when taken out of the printer (and had to clean the release film) and even more missing after a wash.
What I need (and have a feature request in) is KiCAD to have a solder paste export to fix the component legs to the pads as they would be in real life.
For now I export PCB and components separately and load in to FreeCAD and move one 50um down. The result is a solid print with stuck down components!
CodeSOD: Session Recording [The Daily WTF]
We still get a fair bit of old school ASP .Net webforms code, which was cutting edge about twenty years ago, but remains a collection of bad choices that tried to make web programming feel like desktop programming. As an aside, what a reversed world we live in today, where everyone uses Electron and our desktop programming feels like web programming.
In any case, Thomas sends us some pretty ugly webforms code.
Me.Session("Albumid") = CType(e.Item.FindControl("lblAlbumID"), Label).Text
If Not Me.Session("Albumid") Is Nothing And Not Me.Session("Uid") Is Nothing Then
Me.strDelSQL = "Delete from tbl_Albumshare_Mast where Album_Id=" & Me.Session("Albumid") & " and Sharer_ID=" & Me.Session("Uid")
Me.objDB.ExecQry(Me.strDelSQL)
Me.Response.Redirect("frmmyalbumshare.aspx", False)
End If
Broadly, the goal of this code is to take an album ID from the user and delete an album from the database where the ID matches and the album is owned by this user. And everything is horrible here.
First, the use of e.Item.FindControl to look up the
input field is suspicious. That's usually what you do when you've
dynamically generated controls, but I don't think that's happening
here. Because we use FindControl we have to cast it to
Label, and only then can we get the text property.
That itself raises a question, because why are user inputs
getting stored in a label?. That's not what labels are for.
They're clearly doing some sort of hacky lookup/autocomplete field
thing and using the label to actually store the input, but
presenting the user with a different UI for picking it. Not an
uncommon pattern in those days, but a hidden field would be a more
typical way of doing it.
We then construct a SQL injection vulnerability and run it against the database.
Then, we use a redirect to send the user to a different page. Again, a common thing to do back then, but a thing I hate: using HTTP 300 codes to redirect users as a form of navigation is awkward and weird.
Of course, none of that is precisely the WTF here. The real WTF
is the developer apparently hates local variables.
strDelSQL is a member variable- why do we need to
store this in a class member? Especially because in the page
lifecycle, we handle one request and then die; either this is
unnecessary, or far, far worse, some other code is looking at this
SQL query later. But far worse than a badly scoped variable is the
overuse of session variables.
Thomas sends us this block as a representation, but the
developer responsible just stored everything they could in
a session variable. While in this example, "Uid" probably makes
sense, "Albumid" definitely doesn't. And in other cases, basically
every user form input gets stored in a session variable, and even
worse: they're often used as loop variables. while
Session("myloop") < 5 type stuff.
And finally, we already know I hate hungarian notation, but here
we have a client side form holdover that pollutes the user
experience: the URL they get redirected to has a hungarian
frm prefix. It's bad enough that you're using
hungarian notation, but don't show that to your users! They really
don't need to see everything.
Are You Getting Your Money’s Worth From AI? [Radar]
The following article was originally published on James Shore’s Successful Software blog and is being republished here with the author’s permission.
Software development has emerged as the biggest beneficiary of AI automation. One CIO I talked to recently, with 170 people in his organization, measured a 2.1x increase in productivity from AI.
That productivity came at a cost. His top users of AI each spent $21,000 on tokens per month. Another engineering leader spends six to eight thousand dollars per engineer per month.
This is not a trivial amount of money. Eventually, it has to come from somewhere, and it will probably come from your personnel budget. Now we’re talking about real consequences for real people’s lives. But there are also real business consequences for not acting.
If you’re going to make those choices—and somebody is going to—they need to be good ones. So you need to know more than the costs; you need to know the benefits too. Are you getting a good return on your investment in AI? Is there another way of using AI that would be better?
How do you know what you’re getting? Anecdotal reports abound, but the reasoning behind those anecdotes are often, to put it politely, not ideal. Some claims are outright fiction.
Given the stakes, that’s a problem.
In this essay series, I’ll show you how to assess the impact of AI on software development in your organization. It’s in four parts plus an epilogue:

Engineering leaders everywhere are feeling pressure to do more with AI. But which approach is best? There are a lot of people with strident opinions about what to do, but not a lot of consensus, and even less hard data.
Even if there were hard data, it’s not one-size-fits-all. A solution that works best for an internal IT development shop isn’t necessarily the one that works best for a startup, and the approach that’s best for a new product isn’t necessarily the one that’s best for a crafty legacy system.
Faster approaches aren’t necessarily better, either. If you get twice as much done per person, but spend so much money on tokens that you have to cut your staff in half, have you actually seen any ROI? You might actually be better off with a more modest speed boost if it keeps your costs down.
You can’t make these trade-offs from a gut feeling alone. In a famous METR study, engineers thought AI made them 49% faster than it actually did.1 You have to measure impact to know what you’re actually getting.

Costs are much easier to measure than impact, but they’re not without their own challenges. The biggest one is subsidies. In the fight to gain market share, big AI firms are offering substantial discounts. One engineering leader told me each team member was spending thousands of dollars in tokens at the cost of a $200 subscription. Anthropic and OpenAI are constantly offering discounts and other promotions. At some point, these subsidies will end, and prices will go up.
Or will they? Open-weight models and local inference are exerting downward pressure on token costs. Dedicated inference chips could make tokens cheaper. Routers promise to direct your prompts to the cheapest model for the job. Models could require fewer tokens to accomplish the same task as they become more capable. All of these factors could actually cause prices to go down.
When you calculate ROI, don’t assume today’s costs are the ones you should model. Whether you think prices will go up, down, or remain the same, make your assumptions explicit, and consider modeling both optimistic and pessimistic scenarios.
One more wrinkle: Adopting AI isn’t a matter of flipping a switch. People will need time to learn how to apply it. As with any big shift, change management isn’t to be underestimated. Productivity often goes down during a big change before it goes up. This adds costs too, and means early measurements can be misleading.
Part 2 of this series shows how to measure delivery speed. That’s only part of the picture. If you produce twice as many features, but double your maintenance costs, your team’s overall productivity spikes, then drops like a rock.

Engineer burnout is a concern too. An engineering leader using spec-driven development told me, “Every team is reporting burnout.” I’ll state the obvious: Burned out people don’t produce great work. They don’t push back when they should, they don’t report problems, and eventually they leave, taking valuable institutional knowledge with them.
Part 3 shows how to measure these unintended consequences of AI use, including techniques you can use to forecast future problems.
Finally, delivering software value faster is the point. Doubling your bug-fix rate isn’t going to yield the same results as doubling your rate of competitive new features. For that matter, delivering poorly thought-out features “just because we can” could actually make your product worse.
Part 4 shows how to model, forecast, and measure business outcomes.
First, what not to do: Don’t take the easy way out.
First on the no-go list: lines of code. Engineering leaders have known for more than half a century that lines of code don’t correspond to productivity. All else being equal, a feature implemented in 1,000 lines of code will be cheaper to maintain and less bug-prone than a feature implemented in 10,000 lines of code.
AI is notorious for its verbosity. If you measure lines of code, you’re measuring slop, not productivity. Don’t do that. Please.
Pull requests (PRs) are nearly as bad. They’re checkpoints where an engineer asks for their code to be reviewed, and they’re 100% arbitrary. An engineer (or AI) can choose to make a 10-line pull request or a 10,000-line pull request. It can be a feature, a bug fix, or just a tiny code improvement. There’s no inherent correlation between number of pull requests and productivity.
It’s true that engineers will generally produce PRs that are consistent and logical. So, in a sense, a stream of PRs does reflect a certain pace of development, and an increase in PRs can reflect an increase in productivity.
But AI upends that status quo. It produces massive amounts of code very quickly, which can overwhelm engineers’ ability to keep up. Without rigorous engineer oversight, PRs no longer reflect a consistent pace of development, which means that PR counts are no longer a reliable metric.
And, of course, when people think PRs are being used to measure productivity, they’ll be tempted to game the system and produce more PRs than they really need to.
That brings us to Goodhart’s Law: “Once a measure becomes a target, it ceases to be a good measure.” My favorite book on this topic is Robert D. Austin’s Measuring and Managing Performance in Organizations:
Gradually, measures fall (or, more accurately, are pushed) out of synchronization with true performance, as workers succumb to pressures to take shortcuts. Measured performance trends upward; true performance declines sharply. In this way, the measurement system becomes dysfunctional.
—Robert D. Austin
Don’t establish a performance measurement program and leave it running. Instead, use these metrics to determine how well a particular approach to AI is working. You can repeat the measurements periodically, but whatever you do, don’t use them to measure the performance of teams or individuals. Measure the approach, learn from it, and stop measuring.
Enough about what not to do. In this series, we’re going to quantify AI’s impact, and we’re going to do it right. It starts with measuring delivery speed. That’s next, in part 2.
︎My Super Mid-Life Crisis – Issue 1 – 06 [Comics Archive - Spinnyverse]
The post My Super Mid-Life Crisis – Issue 1 – 06 appeared first on Spinnyverse.
Pluralistic: Agents vs ecommerce (28 Oct 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

The first widely read piece of tech criticism I ever wrote was "Metacrap: Putting the torch to the seven strawmen of the meta-utopia," a response to the underlying philosophy of the "Semantic Web" that I published in 2001:
https://people.well.com/user/doctorow/metacrap.htm
The piece holds up surprisingly well today (if I do say so myself), and not just for its criticism of the ontological incoherence of "web semantics." The most relevant concept I develop in that piece is a criticism of any plan that starts with "first, everyone else in the world just needs to set aside their needs and advantages in favor of my priorities, and then my plan will work."
This is especially relevant today in the context of "agentic AI." When this idea was first mooted, the big idea was that you could instruct a chatbot to venture out onto the public, unstructured web and it would do your bidding, for example, finding all the flights that fit your criteria and comparing prices for all of them, picking the best one and booking it for you.
This idea quickly foundered. Each step in that process was too complex and specialized for a single chatbot; so the notion quickly gave way to "swarms" of specialized chatbots – one to search the web and identify likely travel websites; one to search those websites; one to evaluate flights against your criteria, one to handle the transaction, and so on.
Through specialization, these bots could be made far more accurate, but at a price: both the literal price of all the extra computation that goes into powering a "swarm" versus a single process, and the reliability price that arises from complexity. That's because error rates are additive: combine two bots with low failure rates into a single system and that system will have a higher failure rate than any of its components. This compounding error rate only increases as you add more and more bots, so every time you add a new specialized bot to decrease the error rate in its area of specialization, you increase the overall error rate of the system by adding more complexity to it.
Despite this, companies pressed on ahead with "agentic," without any regard to the realities or consequences. For example, Microsoft has repeatedly announced that it will modify Windows to eliminate all forms of PC-side privacy and confidentiality, sending a continuous stream of screenshots to Microsoft's cloud servers so that your Microsoft "agent" can access your private data on Microsoft's cloud:
https://pluralistic.net/2026/01/06/1000x-liability/#graceful-failure-modes
But the real fix for "agentic" is for everyone in the world to rearrange their affairs to the benefit of AI agents. This is the same demand that the Semantic Web people made in the early oughts, and it has the same problems. The Semantic Web people operated on the assumption that there were freestanding, objectively correct ways of describing things and that everyone who put information on the web would eventually come to see that adopting these correct semantics was to everyone's advantage.
In reality, these semantic differences are the expression of real, serious, unresolvable philosophical, technical, moral and political arguments. The reason that some media outlets won't describe trans women as women isn't because they lack an appreciation of objectively correct semantic classifications – it's because they're bigots. That's the same reason "race realists" insist that there is a biological category called "race," that exists despite everything computational genomics has proved:
https://pluralistic.net/2020/08/16/combat-wheelchairs/#race-realism
In my book The Reverse Centaur's Guide to Life After AI, I predicted that a similar dynamic would play out when it came to agentic AI and websites. The reason websites are so inhospitable to bots is that ecommerce sites don't want to be legible to automated tools:
https://us.macmillan.com/books/9780374621568/thereversecentaursguidetolifeafterai/
Ecommerce websites deploy a wide range of sleazy tactics to raise prices, including surveillance pricing:
https://pluralistic.net/2026/10/07/gouged/#aeropain
They use market power to rig whole categories, forcing prices up:
https://pluralistic.net/2026/10/15/enshittipedia/
Multiple law-enforcers, Republic and Democrat, state and federal, have sued companies for "drip pricing" and "junk fees" that make it impossible to know what the actual price is until you've spent a long-ass time going through the purchase process:
https://pluralistic.net/2024/06/07/drip-drip-drip/#drip-off
Surveillance pricing, drip pricing, junk fees, price fixing and "most favored nation" deals are the source of all the growth in profitability by the economy's largest, most important firms. These tactics require opacity and are antithetical to the kinds of automated comparison-shopping that agentic peddlers promise:
https://pluralistic.net/2024/08/14/the-price-is-wright/#enforcement-priorities
These tactics are facially illegal and despite this, they are widely practiced. Cheating is so profitable that it's cheaper for firms to buy off regulators and pay fines than it is for them to stop criming. The fantasy that these same companies would welcome agentic shopping bots with open arms is just as implausible as the idea that if we feed enough words to the word-guessing program, it will wake up and become a "super intelligence":
https://pluralistic.net/2026/09/18/surprise/#wow-signal
What's more, the AI companies know this. Google's big plan to make AI profitable is to sell merchants the power to combine its surveillance data with its AI tools to price-gouge shoppers:
https://pluralistic.net/2026/01/21/cod-marxism/#wannamaker-slain
And right on time, ecommerce websites are mass-blocking AI agents:
https://gizmodo.com/online-shopping-platforms-turn-against-third-party-ai-agents-2000831298
They're doing it in part because AI agents allow shoppers to cheat (for example, by renewing a "temporary" hold on a used item to block other buyers indefinitely), but also because they don't want automation tools on their platforms at all. These tools are a frontal assault on all the most exciting (and sleaziest) ways to make money in the waning hours of end-stage capitalism. Far from welcoming bots, ecommerce sites were always going to block them.
It's easy to come up with amazing applications for technology if you're allowed to assume that you can get everyone else in the world to set aside their priorities and their interests in favor of yours. But unless someone has a plan to do that, we shouldn't take them seriously.

"The day all billionaires died…" https://www.patreon.com/noneofthisisok/posts/day-all-died-171938052
Your phone is about to stop being yours https://keepandroidopen.org/
Shitter: Alternative Twitter front-end https://codeberg.org/shitter/shitter
Saving Social Security https://prospect.org/2026/10/27/saving-social-security/
#25yrsago Hack your Aibo https://web.archive.org/web/20010516005338/http://aibohack.com/
#20yrsago History of calculator watches https://watchismo.blogspot.com/2006/10/calculating-history-of-led-calculator.html
#15yrsago How Occupy has shifted the national debate https://www.salon.com/2011/10/27/the_victory_ows_has_already_won/
#15yrsago UK public reimbursed Margaret Thatcher was reimbursed for more than £500K in personal expenses https://www.theguardian.com/politics/2011/oct/28/margaret-thatcher-expenses-claim
#15yrsago Depression the Hyperbole and a Half way https://hyperboleandahalf.blogspot.com/2011/10/adventures-in-depression.html
#15yrsago Philippines president Duterte says God threatened to crash his plane if he didn’t stop swearing https://www.khaosodenglish.com/news/international/2016/10/28/duterte-says-god-told-stop-cursing/
#15yrsago Public safety codes are now free online for all https://memex.craphound.com/2016/10/28/public-safety-codes-are-now-free-online-for-all/
#10yrsago Dr Seuss estate has crushed a kickstarter for a Seuss/Trek mashup https://web.archive.org/web/20170425161011/https://www.popehat.com/2016/10/26/popehat-signal-help-defend-a-seuss-trek-parody-under-fair-use/
#10yrsago Undercover with a prepper militia that patrols the border to fight “drug cartels” https://www.motherjones.com/politics/2016/10/undercover-border-militia-immigration-bauer/
#10yrsago The “Blacks for Trump” guy used to be in a murder cult https://web.archive.org/web/20161027133828/https://fusion.net/story/362459/blacks-for-trump-michael-the-black-man-yahweh-cult/
#5yrsago Europe's trustbusters lose the plot https://pluralistic.net/2021/10/28/clintons-ghost/#filternet
#5yrsago All of science gets a general index https://pluralistic.net/2021/10/28/clintons-ghost/#cornucopia-concordance
#5yrsago The new DRM-breaking exemptions just dropped https://pluralistic.net/2021/10/28/clintons-ghost/#felony-contempt-of-business-model
#1yrago Raymond Biesinger's "9 Times My Work Has Been Ripped Off" https://pluralistic.net/2025/10/28/productive-seething/#fuck-you-pay-me

Kilkenny (Kilkenomics), Nov 6-8
https://kilkenomics.com/
Courtenay: Enshittification (Sid Williams Theatre Society), Nov
10
https://www.sidwilliamstheatre.com/events/cory-doctorow-talks-enshittification/
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
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/
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
Studying Fraudulent North Korean IT Workers [Schneier on Security]
Researchers set up a fake start-up company to study fraudulent North Korean IT workers.
Be careful what you wish for [Seth's Blog]
At a recent Q&A, a small businessperson asked how to get clients to be more alike, willing to engage in systemic work that would be easier to deliver and offer a simpler path to getting the job done.
Of course, once there’s a manual, anyone can do the work, and anyone will.
It might be the complex, fickle and unpredictable problems that allow the professional to thrive.
Nautical Naughties [Penny Arcade]
New Comic: Nautical Naughties
Suffering as a Feature [Coding Horror]

Have you seen this?
If you haven't, you should. I think everyone needs to. Wealth inequality on a scale this extreme is almost impossible to explain. You have to experience it to understand.
Go ahead. Try it out.
Where is the top of this graph? Good question. Keep scrolling up. Last time I did this it took me 12 minutes and 51 seconds, but the whole time I had a way out.
We get a button on the screen that lets us punch out any time we want: I quit. But do other Americans get an easy way out of the most extreme wealth concentration in history, piled up together all the way down there at the bottom of this graph?
No. They don't.
That's why we built this website. That's why I supported the updated 2026 wealth inequality video series, because 14 years ago, the original video changed how I thought about the world. I watched it again and again, year after year, because it shows something we feel, but rarely see so clearly — the obscene concentration of wealth and power in this country.
People deserve to see the facts plainly, visually, with sources and methodology attached. Politizane, The Onion and Garbage Day retained full control over their work. I did not tell anyone what to make, what to say, or how to say it. I told everyone involved the same thing I'm telling you right now – this is not for me, or any organization. It is for the public. It is for We, The People.
I used to be very dismissive of so-called "walking simulators", games where no real choice is offered, it's just an experience. But this graph isn't a game – these are people's actual lives. No one is forcing you to visit this website, no one is making you scroll up endlessly. The experience, then, is about endurance in the face of the relentless task of simply living your daily life with almost nothing, surviving as long as you can without reaching for the "I Quit" button. That's the experience so many Americans are having. It is harrowing.
As we built the website (Geoff Dalgas, my friend who helped me build Stack Overflow, did all the technical work) and tested it, as I obsessively scrolled upwards so many times, I slowly realized the whole thing is supposed to be inconvenient. The further you climb on this vast scale, the longer this seemingly endless scrolling goes on, the more the reality sinks in... how obscene all of it is. In order to understand the suffering of others, you must be willing to endure and suffer a little bit yourself. In this case, suffering is a feature.
Early iterations of the website had automatic scrolling, or rapid jumps, but I felt that wasn't right and should not be allowed. You need to do the work, make a physical action to scroll the entire way. We even stop you from scrolling at certain milestones.
This is a forced stop because no one should blindly scroll past 36 million Americans living in poverty, while at the same time we could eliminate all poverty in this country for $177 billion.
But we, for some reason, choose not to. We choose to let people suffer in desperate poverty. That's also suffering as a feature. In an era of unprecedented wealth, why shouldn't that money be out there doing something, somewhere, for someone?
I've spent my whole career talking about software usability, and I never thought I would design software that chooses to actively punish the user, but the data itself is the pain. Representing the massive numbers of wealth inequality with a linear scale is the only honest way to present this data. Do you have any idea how many pages it would take to print this graph in its entirety, representing both the richest American at the top, and the poorest American at the bottom?
What you should print out is this is 8 page foldable version of the graph, designed to be a relatable 6 feet, 6 inches, the average NBA player height. Show everyone what the most obscene centerfold of all time looks like. Let them see.
I challenge everyone to climb the graph on dreamagainusa.org as far as you want to.
If you do reach the so-called "top", I have a question.
Was it worth it?
Disruptions in fighting malaria [Richard Stallman's Political Notes]
Many African countries were on track to wipe out malaria, but the persecutor's aid cuts caused gaps in the campaigns, and malaria and its mosquitoes evolved resistance. But African countries are making arrangements to attack again.
Germany pledged to eliminate fossil fuels by 2045 [Richard Stallman's Political Notes]
Germany has pledged to eliminate fossil fuels by 2045. This is exemplary.
ChatGPT tracks user's browsing [Richard Stallman's Political Notes]
ChatGPT tracks the user's other browsing using ChatGPT cookies on tracking pixels, sent intentionally by various stores.
Nepal flash flood was warning to world [Richard Stallman's Political Notes]
*Nepal's PM says [avalanche-caused] flash flood was "warning to world" as he scolds leaders at UN over climate change.*
Alas, he makes the frequent mistake of focusing on how to repair infrastructure and systems damage, rather than on preventing most of it through the most efficient method: by forcing massive decreases in greenhouse gas emissions.
The People's Emergency Briefing aims to mobilize people to do that.
Ellison taking over additional major US news networks [Richard Stallman's Political Notes]
The Democratic attorneys general that were blocking the Ellison monopoly from taking over additional major US news networks caved in, extracting unenforceable concessions that are not very important anyway.
Girl Genius for Wednesday, October 28, 2026 [Girl Genius]
The Girl Genius comic for Wednesday, October 28, 2026 has been posted.
Why don’t we run the taskbar and Task Manager at high priority, so they can remain responsive? [The Old New Thing]
If a system becomes CPU-starved, all processes begin to suffer. This includes the taskbar and Task Manager, even though they are often the tools you want to use to stop whatever it is that’s making your system suffer. Why can’t we run the taskbar and Task Manager at high priority?
The catch with running anything at high priority is that unless you have been very careful to avoid it, you will eventually run into a shared resource that you will have to wait for, and you are now stuck. Your priority checkout pass gets you to the front of the line, but if the person at the register has a large shopping cart full of groceries, you just have to wait until they are done before you get your chance.
Even if the code that protects the shared resource is careful to avoid priority inversion by transferring the priority of the waiter to the thread that owns the resource, you are still stuck waiting, and that owning thread might be doing something that takes a long time, like, say, accessing a file over the network.
For UI code, this problem is particularly acute because you will eventually have to call into the UI system, and now you’re duking it out with all the other UI threads in the system.
The problem is that it’s hard to fix a runaway system from within that same system. The tools which you can use to try to fix the system may already have been compromised. And it’s definitely hard to fix a runaway system if your tools have to share critical resources with the thing that is out of control. Windows already gives preferential treatment to the program that is in focus, so if you can get focus onto the taskbar or Task Manager, you are doing about as well as you can. But that preferential treatment takes you only so far if those preferred threads find themselves blocked on things that are controlled by non-preferred threads.
The post Why don’t we run the taskbar and Task Manager at high priority, so they can remain responsive? appeared first on The Old New Thing.

Anh's best isn't very good though
Further Thoughts on the Googlebook, in Comparison to the MacBook Air [Whatever]


I’ve had the Googlebook now for a couple of weeks, and I have gotten a chance to both use it on a regular basis, and compare it with the MacBook Air I have (it sports an M4 processor). One of the things that I was curious about is which of them I would end up using more often, and which I would prefer over the other, if indeed there was a preference at all.
I’m not going to stretch this out for you: I prefer the MacBook Air over the Googlebook. This is because of a number of factors, some relating to software and some relating to hardware. The Googlebook is a fine little machine, and I’m mostly happy to own it, but it is not entirely baked, and it shows. For a day-to-day use case, the Mac Air is still the one that I reach for.
This is not just theoretical: I was actually away this weekend for a convention in the Denver area. At first, I gave some thought to taking the Googlebook, but at the last minute I made the switch to the Mac Air. I was worried about things like connectivity while I was traveling, and also the ability to pull up certain applications that I would need while I was away. I ended up pulling the Googlebook out of my backpack literally as I was leaving the house, and slipping the Mac Air in. I don’t regret the choice.
There are things I like about the Dell XPS version of the Googlebook over the MacBook Air that I have. For one, I like the keyboard a lot better. The one on the Air is just a smidge too squishy for me, whereas the XPS’s keyboard feels punchy and has snap to it. If we were going straight on the keyboard, I don’t think it would be a question for me.
I also like the ever-so-slightly smaller form factor of the XPS over the Air. This is very much a six-of-one, half-bakers-dozen-of-the-other sort of thing, because, of course, the Air is also very small and very thin and very light, just like the XPS Googlebook. But the form factor for this one, a 13-inch screen as opposed to a 14-inch screen and so on, means that the XPS is just a little bit more convenient in places like airplanes, or anywhere else where space is at a premium. Again, both of them are perfectly small enough for most use cases, but if that is a consideration, then the Googlebook has an edge.
Finally, and as I mentioned in my previous write-up of the Googlebook, the Rambler feature of the Googlebook, ported over from the latest edition of Android on the Pixel phones, really is kind of magical. I wish that every laptop had this. The ability to actually just dictate and have it come out as text with very little need to copy-edit is kind of spectacular. If it weren’t for all the other issues that the Googlebook currently has, the Rambler would in and of itself be enough to make me want to choose the Googlebook over other laptops. It’s genuinely one of the best voice-to-text applications I’ve ever used.
In terms of hardware, most of the other issues are very small in comparison to the MacBook Air. The trackpad is not nearly as smooth and nice as the MacBook Air trackpad, but of course, almost no other laptop has a trackpad that’s as nice as the MacBook trackpads. The screens are pretty much a wash in terms of quality. Both are nice and clear and have more than good enough resolution. The Googlebook has a 120 Hz screen refresh rate, which is twice that of the Air, but honestly on a day-to-day basis if you’re not playing video games, you’re probably not going to notice. Both computers are very limited in terms of I/O, with both of them only having two USB-C ports, although the Googlebook pulls ahead by having a USB-C ports on either side of the chassis, whereas the MacBook Air only has them on the left side. On the other hand, the MacBook Air does actually have a headphone jack, which the XPS does not. So they’re both slightly inconvenient in their own ways.
The only major hardware fuckup for the XPS Googlebook, which is also a software fuckup, lies in the speakers. The volume of anything you play gets louder and softer for no goddamn reason at all, and there’s no easy fix for it yet. When I first wrote about it the laptop, I didn’t notice there was an issue with the volume, but it’s there and it’s really, really fucking annoying. At first, I thought it was just an issue with YouTube, and I went into the YouTube settings to fix it, but as it turns out, it’s a problem with other programs as well.
It’s a known issue; if you go to the Dell site, they have it registered as being something that they’re aware exists and that they are going to work to fix, but apparently the update won’t be ready until December at the earliest. It’s so noticeable and so annoying that it actually makes me not want to use the XPS. It’s just that bad.
Beyond that, when the volume is near maximum on the XPS, the entire chassis vibrates and the sound distorts. It is genuinely bad, as opposed to the MacBook Air speakers, which are actually quite good. It’s not even a comparison; the MacBook Air blows the Googlebook out of the water in this case. For both the volume intermittency and the distortion, the current “fix” for the XPS Googlebook is to use a Bluetooth speaker or headphones. But I shouldn’t have to do that in order to get decent sound out of a $1000 laptop. This should have been solved before these shipped.
When it comes to software, the disadvantage the Googlebook has over the Air is simply that it mostly relies on Android versions of software, which are just not fully featured as the versions that are on the MacBook. The two programs that I use on a daily basis are Microsoft Word and Adobe Photoshop. On the Googlebook, the Android versions of these programs are just fine for quick and dirty stuff, but it doesn’t have the full set of features that I actually want and need to do my work. This is fine if I don’t have a lot of work to do, like if I’m on vacation or if I’m just doing something that I can use Gmail or Google Docs for. But this weekend, when I went to that convention, and later when I’m going to be on tour, I’ll be working on my upcoming novel. I need fully featured Word, at least.
Now, to be scrupulously fair about it, I’m not going to give the Googlebook too much shit about relying heavily on Android. It’s just a fact of life for this very early version of this operating system. I don’t think you should come to the Googlebook thinking that you’re going to get anything other than perhaps slightly gussied-up versions of Android apps. But from a purely practical point of view, which is what I have to have when I’m actually trying to get work done rather than just doing email, it’s an issue. You have to factor that in. For now at least, the Air still wins for practicality.
(You’ll notice that I’m not giving much time or space to any of the Googlebook’s “AI” functionality, and that’s just because I’m mostly not using it. In this case, it’s no different from the Air, on which I also don’t use any of Apple’s most recent “improvements” through the use of “AI”. So for my use case, they’re both about even on this score.)
As hinted above, in many ways it’s fundamentally not fair to compare a Googlebook with a brand new operating system to a MacBook Air that is several generations in with an OS that has been developed over the space of decades. I’m reasonably optimistic, even with Google’s tendency to kill things off, that the Googlebook will improve, and that its OS will get better and smarter. Google has committed to 10 years of updates on this machine, and we’ll see if that’s actually going to be the case. But certainly we can expect at least a year or two of refinement out of the company. So maybe in a year’s time, or two, it might actually become a laptop that I would take with me on a long business trip.
But for now, I will have to stick with my MacBook Air for any travel that requires more than the most casual of Gmail and Google Docs use. I often do have to work when I travel, and that means I need a laptop that can do everything I need it to do. That’s still the MacBook Air.
— JS
Social Media When Elections Are Close: Doing the Impossible Better [Deeplinks]
Everyone knows, or should, that perfect (balanced, targeted, transparent, swift and swiftly appealable) content moderation at scale is impossible. That doesn’t mean powerful social platforms don’t have to try to get at least reasonably close, especially when access to good information can have a profound effect on political participation and speech.
That’s why so many people, including the Meta Oversight Board, criticized Meta for suspending a major political Instagram account for hours during a huge early voting push on October 17; and for allegedly boosting one candidate in Brazil’s recent presidential election. Meta denies deliberate interference in either instance, blaming “mistakes” in its automated content moderation systems (including AI tools that can’t tell the difference between enthusiastic follower engagement and a bot attack).
Mistakes or not, with early voting in the U.S. midterms already underway, these events serve as a stark reminder that all major social media platforms need to have stronger systems in place to ensure that they serve, rather than impede, democratic communication.
Access to good information can have a profound effect on political participation and speech.
This is not inherently an “AI” problem: automated systems can process content at a scale that humans never could, potentially enabling better moderation at scale and alleviating the psychological load on ill-paid moderators whose jobs require them to view incredibly disturbing content. But automated systems also reproduce existing biases, struggle to understand context, and often make mistakes that disproportionately affect journalists, activists, artists, and other vulnerable and marginalized communities. And moderation errors are even more likely when the language is spoken principally by the global majority. In 2020, leaked documents showed that Meta’s algorithms incorrectly deleted nonviolent Arabic-language content 77 percent of the time, while failing to detect hate speech under the company’s own policies in many instances. Where these systems are faltering in Arabic, they’re positively failing in less-resourced languages. As a 2025 report from the Center for Democracy and Technology found, labeled datasets in certain languages and dialects such as Maghrebi Arabic and Kiswahili contain inconsistencies, bias, and inaccuracies due to the limited hiring of annotators who actually speak the languages as well as shifts in the languages themselves. An investigation into ChatGPT’s outputs in several low-resource languages demonstrates the depth of problem.
But language disparities are just one of several concerns as automated moderation becomes more widespread. From the systemic suppression of content from Palestine to the repeated misclassification of LGBTQ+ content as adult or explicit material, these varied examples demonstrate the risks of overreliance on automated moderation—and the need for stronger safeguards.
Fortunately, there is a great deal companies, policymakers, and civil society can do to help ensure that highly automated systems operate in ways that respect human rights, minimize predictable harms, and provide meaningful accountability when they fail. If companies are going to continue relying on automation to moderate users’ speech—and there is little reason to believe they won’t—then accountability must evolve alongside these technologies.
That work should start with publicly committing to the Santa Clara Principles 2.0. Specifically:
These recommendations understand that automated content moderation isn’t just a technical problem for clever engineers and product teams to solve. Because content moderation shapes public discourse and fundamental rights, its design and oversight must respond to the concerns of policymakers, civil society, independent researchers, and the communities most affected by these systems.
One other distinct and enduring problem makes transparency, checks, and accountability all the more urgent: too few companies have far too much power over our political communication and organizing. Social media gave people the ability to wrest some control over political messaging away from media oligopolies. But we’ve met the new boss and while it’s not the same as the old boss, the song is pretty familiar. The real promise of the web to democratize communication is not likely to be met by social media oligarchs, no matter how sophisticated their content moderation practice.
The Big Idea: Kevin J. Anderson [Whatever]

You can’t have a duology without an enticing cliffhanger at the end of the first book, and thankfully New York Times Bestselling author Kevin J. Anderson managed to write the second installment in his Nether series, despite a broken ankle setting him back some. Journey through his writing (and speaking) process to see how Nether Vortex follows up on that suspenseful cliffhanger.
KEVIN J. ANDERSON:
I grew up as a wide-eyed kid, looking up at the stars with a Star Trekian wish to boldly go where no one has gone before. The universe was filled with a sense of wonder.
But you know what? Space is also scary as hell! It’s infinitely cold, dark, empty, alone … filled with radiation, solar flares, and gravity wells (and that’s not even counting monsters, deadly aliens, or killer robots). In space, everything wants to kill you. It’s even worse than Australia.
Science fiction horror should be a bigger thing. Just imagine being in a distant space station or an interstellar ship incredibly far from even a hint of rescue, where only a thin metal hull or reinforced windowport separates you from deadly vacuum, where the transmission of your terrified scream would take hours to reach the nearest listener.
So where are all the scary science fiction stories? Yes, everyone can immediately cite Alien and Event Horizon, then after a pause add Pitch Black. Heck, even Apollo 13 is a terrifying space story, in its own way. How about Jason X, the first film to bring a hockey-masked serial killer into space? And who can forget Leprechaun in Space (no matter how much we try)? But I think the genre needs more. If you search for “space horror” on Amazon, you’ll find a few titles but not a lot.
When Weird Tales Presents and Blackstone Publishing asked me to write novels for them, they let me choose the genre and topic. I jumped at the chance to write a cosmic horror epic: Nether Station and Nether Vortex.
Now I could really buckle up and take advantage of the scenario—a haunted house in space, an isolated station on the far edge of the solar system near a wormhole that offers a shortcut to Alpha Centauri … or maybe it’s a place where the horrific elder gods have been exiled, and boy do they want to come out. I reread all of H.P. Lovecraft’s work (man, that guy had some creepy and mind-blowing ideas), and added a lot of Easter eggs in the prose.
The first half of the story, Nether Station, has a controlled cast of oddball characters, mostly misanthropes (who else would want a job like that?), each facing their own problems even before the really weird shit starts happening. This novel is claustrophobic, intense, scary, and ends on a cliffhanger. The second half, Nether Vortex, is much bigger in scope, a sprawling cosmic war where countless species are being consumed by a great darkness. The two books are like Alien followed by Aliens.
I’m a prolific and reliable writer, and I like to think I’m always on time. With the giant cliffhanger at end of Nether Station, I didn’t want to keep the readers dangling in the wind. You want them to feel delicious suspense and anticipation, not an annoyed sense of “Is this guy ever going to deliver the next book?” (Not that we know of anybody who’s done that to his readers…)
Then the real horror happened. I outlined Vortex and was all ready to write. The deadline was looming, but not in a scary way. I couldn’t wait to get to my version of “At the Mountains of Madness” in the Martian polar ice caps, Lovecraftian SF on a grand scale.
Now, I’ve long-established that I write by dictation. I live in beautiful Colorado, and I take my notes with me out on the trail. I’ll head into the mountains or forests and trudge along for miles, dictating my chapters. I get inspired, I’m surrounded by scenery, and I sink into the zone, lost in the story I’m creating as I walk along. I’ve been doing this for so many years that the words come out as nearly finished prose, like I’m narrating an audiobook. When I return home, I have my dictation files transcribed, then I edit them online. In fact, it’s the only way I can write my novels.
Except, just when I was starting to write Nether Vortex, I hiked a beautiful trail up Beckwith Pass near Crested Butte, Colorado. On the way down, it started to rain, and the trail got muddy … and I slipped and fell off a ledge, twisted my leg, and broke my ankle. (Yes, I hike alone; I can’t dictate if somebody is walking along beside me.) So, I had to limp a mile back to my car and then drive an excruciating three hours back home.
That’s the sort of experience I inflict on my characters, not something I wanted to try at home. I spent the next two months in an armored Darth Vader boot.
Worse, although I could hobble around the house, I certainly couldn’t go out hiking, not even on the wimpy bike path near my home. I had a 130,000-word novel to write, and suddenly I wasn’t sure how to do it. My creative process strictly relies on walking and talking.
So, I sat on the porch, staring off into space, and I tried dictating chapters, but it was ten times as hard to sink into the zone without moving. I tried pounding out chapters on the keyboard, stuck in a chair in a stuffy office while staring at a screen. (How do you guys do that for hours and hours?)
But deadlines can be very inspirational, and the thought of angry readers imagining Lovecraftian punishments for me if I didn’t deliver on time after that Nether Station cliffhanger was enough for me to complete the manuscript on time. I powered through, typing some, dictating some, and the plot and characters took over. Maybe that helpless, claustrophobic, trapped situation actually helped convey the right sense for the story. (The ankle’s fully healed now, and I’m back to writing novels the “right” way for me.)
I love how the Nether books turned out. I created big scary story and an immensely cool setup. Oh, there’s room for other bad stuff to happen if I want to revisit that universe, but these two novels form a complete story with a real and satisfying conclusion. I hope you enjoy the read.
—-
Nether Vortex: Amazon|Barnes & Noble|Bookshop
Freexian Collaborators: Monthly report about Debian Long Term Support, September 2026 (by Santiago Ruano Rincón) [Planet Debian]

The Debian LTS Team, funded by Freexian’s Debian LTS offering, is pleased to report its activities for September.
During the month of September, 20 contributors have been paid to work on Debian LTS (links to individual contributor reports are located below).
The team released 41 DLAs fixing 1854 CVEs.
In September, the Debian LTS Team was back to focusing on a single release: Debian 12 (“bookworm”). Debian 11 (“bullseye”) reached the end of its Long Term Support on 31 August 2026, and Freexian now provides its security maintenance under the Extended LTS offer.
It is important to highlight the hard work done behind the scenes of the Front Desk fellows, whose role was fulfilled during September by Emilio, Emmanuel, Sylvain, Thorsten and Utkarsh.
Besides the very high activity doing daily triage on dozens of packages and CVEs, Front Desk fellows spent much of their time answering questions and coordinating with people outside the Freexian team about update proposals.
The team published several notable updates:
Contributions from other Debian fellows beyond the Freexian LTS Team:
Thank you so much to the developers above for these valuable contributions.
The LTS Team has also contributed with updates to the latest Debian releases for the following packages:
If you benefit from Debian, especially throughout its full 5-year lifecycle, please consider becoming a sponsor of Debian LTS. You can find more information here: https://www.freexian.com/lts/debian/.
Sponsors that joined recently are in bold.
Otto Kekäläinen: Debcraft v1.0 released: Easy, fast and secure way to build Debian packages [Planet Debian]

Debcraft is a tool that automates most of the repetitive and
error-prone steps related to Debian packaging. It makes it easy to
build .deb packages from source without having to
manually prepare build environments. It clearly shows what changed
in the build artifacts between two builds, automates parts of
importing new upstream versions, and can automatically apply
repetitive fixes to the packaging source code, including committing
them in git.
While doing all of this, it also explains what it does and helps users learn best practices in Debian packaging, making the overall experience much easier and more fun than with any other tool before, while also being secure and fast.
Debcraft can be installed simply
by running apt install debcraft on a recent version of
Debian or Ubuntu. Check with debcraft --version that
you have 1.0.0 or newer. The latest version can also
always be installed from source at salsa.debian.org/debian/debcraft (does not require
compiling anything).

Debcraft was designed to offer the following three main benefits:
Build any Debian/Ubuntu package by simply running debcraft
build in the checked-out Debian packaging git
repository.
If the orig upstream source code tarball is neither already
present nor available on a pristine-tar branch, the
exact upstream tarball is downloaded from the Debian archive.
Users are spared from having to manually prepare ahead or
maintain build environments. Debcraft builds create a container
on-the-fly (both Podman and Docker supported), built using the
target Debian or Ubuntu suite in debian/changelog and
with exact build dependencies from debian/control.
Commands debcraft improve, debcraft
test and debcraft update automate recurring
package maintenance tasks and help maintainers produce
high-quality, up-to-date packages, run Salsa CI, pass autopkgtest
in Debian CI, and stay in sync across Debian archives and packaging
git repositories.
The command output is (relatively) easy to read, and it also teaches users about Debian packaging in context.
Container layer caching is utilized to make builds and re-builds blazingly fast.
If an apt-cacher-ng instance or equivalent is present, it will automatically be used.
Debian packages that support ccache or sccache build even faster.
The build phase happens inside hermetic containers with no network access. This ensures all dependencies are properly managed and that the built binaries are as trustworthy as the source code they were built from.
Using containers also protects the host system from getting polluted with extra development libraries, and adds an extra layer of protection to prevent anything malicious in the source code from accessing secrets on the host system.
The additional logs provided by Debcraft also help audit changes in Debian package sources and build artifacts.
See the Debcraft README.md for details on how this was implemented. I also previously wrote Debcraft - Easiest way to modify and build Debian packages, which explains the motivation and design in more detail.
The first commit in the git repository is from 2020 under the name debuildr. The project was renamed to Debcraft in a commit on December 8th, 2023. I have been developing this tool fairly actively since 2024 and using it for all my packaging, “dogfooding” so to say.
There have also been plenty of collaborators. In total, 13 people have contributed code across 21 MRs and PRs on Salsa.d.o, GitLab.com and GitHub.com.
Now, in October 2026, it was time to release Debcraft v1.0 as it has had extensive real-world use and iteration based on countless different packages and multiple users. Users have included both experienced fellow Debian Developers and lots of people who just started learning how Debian packaging works. As I mentor dozens of new contributors to Debian, I have seen that the latter group seems to benefit the most from Debcraft and its ease of use and built-in guidance, while to the more experienced developers the main benefit is having less details to remember and doing less mistakes.
Try it: apt install debcraft, then
run debcraft build in a checked-out Debian packaging
repository. If you run into a problem, file a report or submit an improvement. New
contributors can look for issues marked good first issue.
The code is intentionally written entirely in shell script to
keep the barrier to code contribution as low as possible. It is
also very easy to debug, as any command can be run with
--debug to emit step-by-step information about what it
is doing, and being Bash scripts, injecting set -x
anywhere in the code will emit an even more detailed trace of every
subcommand executed.
By the way, if you aspire to become a Debian Developer, and want to follow my examples in using state-of-the-art tooling and collaborate using salsa.debian.org, feel free to reach out for mentorship. I am glad to see more people contribute to Debian!
New Records Obtained by EFF Expose More Problems with Medicare’s AI Experiment [Deeplinks]
New records obtained by EFF expose additional issues with Medicare’s AI-driven prior authorization program and show why we need stronger legal limits around government use of automated decision-making.
EFF sued the government back in March for information about the Wasteful and Inappropriate Service Reduction (WISeR) model, a new Medicare program that uses AI to evaluate prior authorization requests for certain medical services. We previously released records showing that WISeR has resulted in delays and denials of care, operational chaos, and reports of patient harm. Today, we’re publishing over 800 new pages of records, including:
Documents obtained through EFF’s lawsuit are available here.
These newly released documents show that the WISeR rollout was rushed and rocky from the start, highlighting the dangers that arise when governments treat AI like a silver bullet for complex problems. The documents also highlight the need for more transparency about safeguards against inappropriate, AI-driven denials. The public still lacks the information needed to assess whether clinician review is providing meaningful oversight of AI systems and whether appropriate data is being used to evaluate prior authorization requests.
EFF has long argued that AI has no place in consequential government decisions about peoples’ rights or access to benefits, such as immigration enforcement and policing decisions. That’s because using automated decision-making in these contexts risks decisions that violate people’s rights or deprive them of benefits they’re entitled to based on biased or inappropriate considerations and without proper due process or accountability if there is an error.
By outsourcing decision-making to private AI companies without sufficient transparency, testing, or legal limits, WISeR jeopardizes seniors’ access to medical care. Congress should step in to place greater legal limits on the use of automated decision-making in Medicare.
CMS launched the WISeR program just six months after announcing it, ignoring calls from medical providers to delay its rollout. In records previously released by EFF, CMS acknowledged this “extremely condensed timeline.”
New records suggest that WISeR’s unusually rapid rollout contributed to widespread problems in the first few months of the program. CMS did not disclose the extent of these issues to the public, even as agency employees privately contacted vendors about potential noncompliance with program requirements.
In the first three months of the program, CMS sent RFIs or requests for CAPs to at least four of the six WISeR vendors. These requests, which describe delays, technical failures, and a lack of communication with providers, suggest that widespread problems during the program’s rollout were not limited to one vendor or state.
These letters underscore the severity of the problems with the program. For example, CMS requested information from one vendor, Virtix, about numerous reported issues, including “determination turnaround times that exceed established guidelines,” “denials that appear inaccurate or inconsistent with applicable criteria,” and “inadequate customer service.” CMS’s RFI to Zyter–a vendor that uses Palantir software infrastructure–observed that the agency had received reports that “Zyter is not issuing determination letters in a timely manner” and communications indicating that it “may lack adequate processes for responding to and escalating provider/supplier concerns.” The vendor Innovaccer received two CAP requests and a “Performance Notice of Non-Compliance” over its failure to implement a fully functional portal for WISeR providers and suppliers.
Excerpts from CMS’ letters to vendors describe problems during WISeR’s rollout:
Excerpt from the RFI for Virtix, March 17, 2026
Excerpt from the RFI for Zyter, February 27, 2026
Excerpt from the Performance Notice of Non-Compliance for Innovaccer, February 20, 2026
Vendors’ responses to CMS provide further evidence that WISeR’s rushed rollout contributed to its problems. Innovaccer claimed it warned CMS months in advance that it might not be ready to provide full portal functionality by the launch date, even before signing a Participation Agreement. Another vendor claimed that “technical and workflow stabilization challenges were encountered due to the compressed implementation timeframe” it faced after joining the WISeR program a month after the other vendors.
Excerpt from Innovaccer’s Proposed CAP, January 16, 2026
The issues reflected in CMS’s letters to vendors, and the vendors’ responses, illustrate the risks of deploying automated decision-making systems without proper testing or safeguards. While vendors’ responses describe fixes for the problems CMS identified, after-the-fact remedies cannot undo the harms that patients and providers already experienced during WISeR’s rushed rollout.
The public still knows far too little about any safeguards that WISeR vendors may have adopted—in part because the government chose to conceal some of this information. Transparency about these safeguards is critical to protecting patients, especially because WISeR’s payment structure gives vendors, as the government put it, “an incentive to deny as many claims as possible.”
Information provided by a vendor about safeguards that it says "ensure the responsible and clinically appropriate application of automation” appears to have been redacted from records released to EFF
The public has limited means to evaluate the effectiveness of even the safeguards that weren’t redacted from records released to EFF. For example, one vendor’s application touts safeguards like “Human-in-the-loop (HITL) workflows,” “Continuous model monitoring,” and “Transparent audit trails.” Yet it remains unclear whether these measures effectively prevent improper prior authorization denials. Some evidence suggests they may not: the company denied more requests than it approved in the first few months of the program, and CMS inquired about “denials that appear inaccurate or inconsistent with applicable criteria.”
Ultimately, the records obtained by EFF raise more questions than they answer about the safeguards used by WISeR vendors.
CMS has emphasized having a human in the loop as a key safeguard against inappropriate, AI-driven denials. The WISeR FAQ page on the CMS website states that “Non-affirmations will require the review of a human clinician and cannot be performed solely by technology.” But whether human review provides any meaningful protection depends on the details of its implementation, such as whether human reviewers have enough time to evaluate requests and practical authority to override AI recommendations. We still lack many of those details for WISeR vendors.
A growing body of scholarship points to the substantial limitations of “human in the loop” policies as guardrails for AI systems. AI-generated recommendations can unduly influence human decisions, leading reviewers to over-rely on automated judgements and rubber stamp them as correct. Even worse, at least one health insurance company actively pressured clinical reviewers to accept its AI systems’ recommendations. Another company built a system that allowed clinical reviewers to reject claims without opening patient files; clinical reviewers using this system spent an average of just 1.2 seconds on each case.
Some WISeR vendors’ applications offer general descriptions of the types of data informing their decisions. But far more details are needed to allow medical professionals to assess whether the data inputs to these AI systems are appropriate for evaluating prior authorization requests.
Inappropriate training data or input data can lead to biased, unfair, or inaccurate decisions. CMS guidance for Medicare Advantage organizations using AI to make coverage decisions emphasizes the importance of basing decisions on individual patients’ circumstances. It cautions against using “an algorithm that determines coverage based on a larger data set instead of the individual patient's medical history, the physician’s recommendations, or clinical notes.”
WISeR vendors’ applications reference data sources like “provider behavior,” “patient demographics,” “utilization management datasets,” “provider and payer performance metrics,” and “historical claims data.” Whether these sources could introduce bias or give too much weight to population-level patterns depends on how vendors use them to inform individual decisions. But we don’t yet have these important details about vendors’ data and algorithms. By outsourcing decision-making to private companies’ AI systems, the government has made it harder for the public to evaluate whether decisions are being made fairly.
As the government expands its use of automated decision-making, the potential for consequential mistakes increases rapidly. The records we’ve obtained so far raise questions about the rushed rollout and lack of guardrails for automated decision-making by the U.S. government. EFF urges transparency, oversight, and legal limits to protect people from the harms of automated decision-making in high risk systems.
French Court’s Site-Blocking Orders Drive Quad9 Out Of France [Deeplinks]
A nonprofit service that protects internet users’ privacy is leaving France. Quad9, a free DNS resolver, has said it will reluctantly stop serving users in France on November 24. This follows a French court order that Quad9 must block access to websites that are accused of infringing the copyrights of a sports broadcaster. Forcing a responsible privacy service out of an important market is a predictable result of trying to force infrastructure providers to be copyright police.
When you visit a website, a DNS resolver reads the domain name you type in—like eff.org— and translates it into a numerical IP address that’s used to direct data across the internet. A DNS resolver can see the names of websites you connect to, so its privacy policies are important. Quad9 is an NGO that’s incorporated in Switzerland, in part to protect its users from data demands. The company also helps protect users from malware and phishing by blocking domains that are known to be malicious. Services like Quad9 offer an alternative to the DNS resolvers of local internet service providers and wireless carriers, which are vulnerable to demands from law enforcement, censorship, and commercial surveillance.
In a blog post explaining its decision, Quad9 explains that the French court’s order forces it to make a decision that, either way, is bad for users. It could either “extend French law to the whole world (blocking globally)” or try to identify and block users only in France—something that it can’t do reliably, and a move that could leave the company facing massive fines if it fails to block websites perfectly within France. Quad9 says it is facing about 20 other lawsuits in France seeking similar blocking orders.
Rather than accept these demands, Quad9 has decided to withdraw its service from France. That is a real loss for French users who rely on the service to protect their privacy and security. It is also the right thing to do, when faced with the alternative: making promises it can’t keep, or abandoning users’ rights worldwide.
Quad9’s decision will not remove any allegedly infringing material from the internet. The organization doesn’t host websites. Users looking for particular websites can easily switch to another DNS resolver. So the material targeted by copyright holders will remain online and accessible, even while they drive a privacy-protecting service out of France.
These events matter beyond the borders of France, and U.S. lawmakers should pay attention. Congress is considering multiple site-blocking proposals, which would require ISPs and other intermediaries, including DNS resolvers, to block access to websites in the name of protecting copyright. These bills threaten speech and our ability to access information online, and they are invitations to abuse. The Quad9 withdrawal shows another cost: if internet services get forced into being copyright cops, users can lose services that they rely on for privacy and security.
Worse still, if neutral services like Quad9 are forced to build site-blocking systems for the benefit of copyright holders, it becomes far easier for other powerful interests, including repressive governments, to demand the same systems be used to censor speech they dislike, globally.
Congress should reject site-blocking bills. They’re a threat to the open internet, and don’t help creators or creativity.
Guess What’s Arrived at the Scalzi Compound [Whatever]

Yes! It’s here! The brown cardigan I bought that looks like I skinned Fozzy Bear for his pelt!
Oh, and also, the finished hardcover copies of Monsters of Ohio, which look terrific, and which officially go on sale one week from today (which is November 3rd, in case you are reading this on a day other than October 27, 2026).
There is still time to pre-order the book from your favorite bookseller! Or (today and tomorrow) to order a signed/personalized copy from Subterranean Press! You can even pre-order it from Audible, if you’re an audiobook sort!
Also if you are in or near the towns of Beavercreek, OH, Franklin, IN, Chicago, IL, Ferndale, MI, Hudson, OH, Nashville, TN, Louisville, KY, Kansas City, MO, Cincinnati, OH or Austin, TX, come see me on tour!
This cardigan is really comfortable, y’all.
— JS
(PS: November 3rd is election day here in the US. Go vote! Do it early so you have the whole day to read my book!)
Are agent harnesses dying? What harness distillation changes. [Radar]
The following article originally appeared on The Arize Blog and is being republished here with the author’s permission.
Every time you think you’ve just got the hang of this AI thing, another thing gets declared “dead.” This week, it’s agent harnesses.
Back in ancient history, aka June, I wrote a piece called “Frameworks are dying, harnesses are winning” and I don’t take that back. But this week a research team took a specialized agent harness, trained its behavior into a model and then took the harness away. The trained model handily beat the original model+harness combination. So are harnesses done now?
Betteridge’s Law applies, so the answer is “no.” But the job of the agent harness is changing. Parts of a harness that are sufficiently generalizable can be trained into the model. That leaves your harness holding the things that make your application unique: your tools, your data, your users, and your environment. You still have to build a harness, but you have to be prepared to regularly throw it away and rebuild it to keep up with evolving models.
This blog is about why that’s true, and how to turn “constantly rebuilding your harness” into an automatic process, not a giant time suck.
First, the paper that kicked off this train of thought for me: it’s called “Harness-Zero,” from Haoran Ye and colleagues at Peking University. Its subject is harness distillation, i.e., training a model to reproduce behavior that used to be the result of the harness. The methodology is a little involved, so stick with me.
First, the team built a specialized harness for a small model, Qwen3.5-9B. An automated loop, run with Kimi K3, analyzed where the small model kept failing on training tasks and added the usual components to fix those failures: custom tools, middleware rules that block risky actions, skills files and memory. They called this the “evolved harness.”
Then they used that harness to generate training data. They put the small model through training tasks inside a minimal harness while a stronger model, GPT-5.6 Sol, reviewed every step the small model proposed. Sol used a copy of the evolved harness to tell it whether that step was a good idea. Sol passed good ideas from the small model through unchanged, and whenever the small model and the guidance disagreed, Sol made the smallest fix needed before the step ran.
That gave them a bunch of training runs and, crucially, data about what needed to be corrected. Then they created the distilled model: They fine-tuned the small model on the corrected runs. Then they removed the evolved harness, the reviewer, and everything else.
They then tested both the evolved harness and the distilled model head-to-head on spreadsheet editing, multi-app tool use, and chemistry. The distilled model’s average task success rose 21 points versus its untrained predecessor. That’s more than the untrained model gained with the full evolved harness attached. So the distilled model wasn’t just as good as the model+harness, it was noticeably better.
It’s not that the distilled model ran with no harness whatsoever: It still ran inside a minimal loop with one Bash tool, and the authors say that their method narrows what a harness has to provide rather than eliminating it entirely. The distilled model also didn’t win every competition: In chemistry, where the task is predicting which molecules combine to make a target compound, the distilled model trailed the harnessed version by eight points. The harness there supplied chemistry knowledge, candidate-generation logic, and a molecule validation tool. The authors’ explanation is that step-by-step procedures, like inspecting before editing and verifying before finishing, are much easier to train in than deep domain knowledge. Context management didn’t fully transfer either. So there are still some things harnesses definitely need to do.
But the most important finding, in my opinion, is that they showed what kind of training made the difference:
Remember that part, because it’s going to be important.
Three training signals left the score flat or overfit:
the stronger model’s own successes, runs completed inside the
evolved harness, and a reviewer given the right answers. Training
on corrected runs, where each fix was still within the small
model’s reach, raised task success by 21 points.
In Rich Sutton’s 2019 essay The Bitter Lesson, he looked back over 70 years of AI research and found the same pattern in chess, Go, speech recognition, and computer vision: Researchers built their own knowledge of the problem into their systems. That helped in the short term, then plateaued, and eventually lost by a wide margin to general methods, search and learning, that improve as computation gets cheaper.
A harness is that kind of built-in knowledge, and model training is the learning that ends up absorbing it. Sutton’s second point is also relevant: He argued we should build in “only the meta-methods that can find and capture this arbitrary complexity,” rather than the things we’ve already figured out. For harnesses that means: don’t just build it, but capture the process you used to build it, and automate that process.
But that’s a general prediction. More recently people have been saying very specifically that “models are going to eat the harness”:
Almost everyone on my list builds harnesses for a living; they’re not really arguing that harnesses will go away, just that they have to be able to evolve rapidly.
As noted already, some types of knowledge don’t seem to transfer well from distillation. In ARC Prize’s results for ARC-AGI-3, Gemini 3.8 Flash scores 3.4-times higher with one harness than with another. The better harness keeps the model’s reasoning state between requests and compacts long conversations. That’s context management, one of the things Harness-Zero said they couldn’t fully train in.
Anthropic’s Opus 5.5 prompting guide, released this week, also shows evidence of shrinking harnesses. It suggests deleting “think carefully” instructions because the model now sets its own amount of thinking, and it tells you to retest scaffolding you built for charts and screenshots because the model reads them better without that help now. But at the same time, Anthropic added new harness pieces: a system prompt paragraph that keeps unattended agents from stopping early, a reminder your harness sends when a long run goes quiet, and elapsed-time budgets for multi-agent setups.
So harnesses aren’t going to shrink to nothing, but what’s in them is going to need to evolve with every new model generation, and the parts that survive are the ones tied to your specific tools, data, and environment.
If your harness has to change every generation, the natural move is to automate the changes, but Google’s RRSI paper shows how that can go wrong. Unconstrained automatic harness evolution overfits, meaning the harness gets better at the tasks it’s tuned on without getting better at the general job. In their tests, the unconstrained version scored highest of any variant on the tasks it evolved against, and landed within a point of the original, unevolved harness on benchmarks it hadn’t seen.
RRSI’s fix is mostly bookkeeping: For every candidate change it records which component the change touches, what it was supposed to fix, the diff, how score and cost moved, and whether the change was kept. Components that stop producing gains get removed.
You don’t need an automated evolution loop to borrow that discipline. Here’s what it looks like by hand:
When a model ships, tag traces with the harness
version and the model version, log what the harness changed, turn
off one component at a time, and rerun evals. Keep what still helps
and delete the rest, then repeat on the next model.
If your traces live in Arize AX, you can run the same agent evals across harness and model versions and compare the results side by side.
So don’t delete your harness, but don’t treat any version of it as finished either. Keep the record of what it corrected, get rid of what the latest model already does without help, and put your effort into the parts that are really specific to your problem, because nobody else has the traces to train those into a model for you.
News Roundup: Security Fourth [The Daily WTF]
A bit ago, I broke with my usual pattern and wrote up some security issues that I felt were particularly funny. It was a change of pace, a different thing, but not a thing that'd become a habit. After all, I'm not a security expert, this isn't a security site, and seriously, what are the odds that suitably funny security issues would crop up again less than a week later?
Well.
Let's start with the actual serious issue, PHP2Shell. In terms of scope, every version of PHP for the past twenty years has had this bug. The general issue that permits the exploit was known about, but wasn't considered exploitable.
Oops.
The broad strokes of the bug is that it's two separate bugs. The first allows someone to bypass the checks on a request's size, thus giving them a direct route to triggering an out-of-memory error. The second is that, depending where you are in the processing pipeline, PHP doesn't properly handle cleanup, allowing for use-after-free that can trigger code execution. It doesn't matter what code you've written, this all happens before the request even hits your code.
Bigger oops.
This bug was found via LLM tools, which has lead to a lot of hype around the idea that we've entered some new era. I'll certainly grant that the ability to throw compute at hacking challenges instead of human effort is going to shift the landscape, but I'm not quite willing to buy the apocalyptic prophecies. Especially when some of those prophets are telling us that their AIs will avoid deletion by copying themselves onto your thermostat. I think it's safe to say we're going to see a lot of security incidents coming out of LLMs in the near future, not because they're magic genius hackers, but because they're pretty good at processing structured text and running tests.
For those of us living in the real world, the concern isn't AIs, but HIs: human intelligences. In this case, the exploit was discovered back in August. Security researchers and the PHP Foundation put their heads down to work on it, and where necessary, notified so-called "critical infrastructure providers" to ensure that everyone was ready to address the issue. The problem there is that two people can keep a secret if one of them is dead, and a lot more than two people got roped in to deal with this.
Rumors were circulating in security circles. And cybersecurity firm Chainguard decided this was good enough excuse to break the embargo and announce the flaw before patches were available. No patches for a flaw that impacts 20 years worth of software versions of widely deployed software.
Patches are out now, though only for versions 8.2 and up. Source patches are out back to 7.4, which is officially end-of-life, but I have to wonder how many official EOLed copies of PHP are out there.
On a lighter note, we can't let the hijinks of eMudhra pass without comment. eMudhra is, among other things, a root certificate authority. They've got a bunch of key pairs that they use to sign certificates for other customers, thus vouching for those customers' identity. As a root CA, they were trusted by pretty much every TLS/SSL implementation on Earth; if you had a certificate from eMudhra, every browser would trust that you were who you said you were.
The only problem? One of their private keys was 4. Yes, it's the XKCD.
Now, in their defense(?), eMudhra didn't generate impossibly insecure keys. They performed a key signing ceremony and generated appropriately strong keys. Then they used an in-house tool to pack/unpack the keys, and this tool decided to truncate some of them down to one byte. Shockingly, even though ECC has relatively short key sizes, 8-bit ECC isn't secure! You could derive the private key from the public key using only pencil and paper. But the worst part is that they did check the validity of the keys- before they got truncated, giving them a false sense of security.
The good news, for eMudhra, is that this particular key signing ceremony generated a total of 24 keys, and only 8 of them were truncated to the point of uselessness. I have it on good authority that two out of three ain't bad.
Now, after that disgrace, it's no surprise that eMudhra is dropping out of the certificate authority business. Still, the press release where their chairman explains the rationale is some serious "screw you guys, I'm going home," energy.
He added that global SSL/TLS is a small part of eMudhra’s business contributing to about 1% of the global revenue. Due to increasing data sovereignty & compliance requirements, complexity and cost associated with this business is increasing over the years. This, paired with the fact that some of the large entities issue the SSL/TLS free of cost, the business potential and RoI of this line of business also has considerably reduced for eMudhra when measured against our cumulative revenue base.
However, the level of social media amplification around this incident has brought scrutiny that is out of proportion to SSL/TLS’s place in our business. In view of this, after detailed deliberations our board has concluded that withdrawing from global SSL/TLS is the right decision for eMudhra and its shareholders. For many certifying authorities, SSL/TLS is the whole business. For eMudhra it is one part of a much broader digital solutions portfolio. We will put our energy where we create the most value for customers with Sharpened Focus on Core Enterprise Solutions and trust services other than SSL/TLS.
eMudhra's chairman added "There were no end entity certificates issued out of the affected CA’s. Its infrastructure was not compromised and no data was breached. All physical and logical security controls remained intact." That's thin sauce, of course, because while eMudra may not have issued any certs under the broken keys, anyone else could have. It's not that everyone is overreacting to a non-event, and more that it's a non-event only through sheer luck.
Also, removing a root CA from your trust store isn't a trivial task, and at the time of this writing, there's still loads of cleanup that needs to happen as a result of this.
Something I learned while writing this is that eMudhra's slogan is "Trust Delivered". This is sorta like when my partner and I tried to get a coffee table delivered, and instead received a cardboard box full of wooden shards, because apparently someone though "air freight" meant "wait till the plane is roughly over my house and push the box out the back". Something was delivered, but it wasn't a coffee table by the time I got it.
Hiding Capabilities in AI Models [Schneier on Security]
Interesting research: “AI Models Can Provably Hide Arbitrary Capabilities”
Abstract: Capability evaluations aim to surface dangerous model behaviors before deployment, but their reliability depends on the assumption that hidden capabilities can be elicited. We show this assumption does not hold under adversarial conditions by constructing backdoor attacks that embed encrypted neural networks within host model weights, decrypting and executing them only upon receiving a secret trigger. Using digital lockers, these hidden circuits remain provably hard to elicit and interpret under cryptographic assumptions, even given full access to model weights, extending prior work from hiding fixed strings to arbitrary computations. We implement our proof of concept constructions in PyTorch and evaluate elicitation through fine-tuning, weight noising, gradient-based trigger search, and latent adversarial training, using a small chemical reaction prediction task as a proxy for CBRN-relevant capabilities. Our results demonstrate resistance to these methods and, together with our cryptographic guarantees, reveal a limit of elicitation-based capability audits. We release our models to support the improvement of defenses.
The half-life of disappointment [Seth's Blog]
When things don’t turn out the way you pictured, how long does it take for you to move on?
Reducing this window of disappointment unlocks the path to creativity and leadership.
People who get over disappointment more quickly aren’t less excited about the project than the others. They realize that getting attached to an outcome doesn’t increase its likelihood, and in fact, makes it less likely that their next project will be as bold.
Turns out that this is a common practice among professionals in every field.
Pluralistic: History is something you do (27 Oct 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

Prediction is hard. Especially about the future. That Yogi Berra gem proves that you don't have to be a science fiction writer to get irritated with people insisting that you must know what's going to happen tomorrow, but (as a sf writer), I can tell you that this is one of our main occupational hazards.
Obviously, this is a self-inflicted injury. Our genre is full of big names who self-mythologized as scientific Nostradamuses. From the "future history" bar-charts in Heinlein's books (I was once on a panel with Robert Silverberg where he referred to RAH as "Robert A Timeline") to the McGuffin of Asimov's Foundation series: a "scientific" discipline that could predict the trajectory of human civilization for millennia into the future.
But me, I find the prospect of predicting the future incredibly dismal – even offensive. A predictable future is set in stone, immune to human agency. A predictable future runs on rails, and we're the prisoners of history, tied to the tracks.
For me, the most exciting thing about sf is the idea that the future is contingent. Sf is a long, sharp pin that can prick inevitabilism's bubble: that assertion by tech-bros and policymakers alike that the future is out of our hands and must be accommodated, not shaped. Inevitabilism is a form of vulgar Thatcherism, the assertion that "there is no alternative."
If The Market won't deliver an energy transition, and it leaves us to boil in our own skins, drown in the rising seas, and roast in wildfires, then tough shit humanity, there is no alternative. If there's a tech company eavesdropping on all of our communications technologies and following us as we move through digital and physical space (and turning the juiciest tidbits over to ICE), that's not the tech company's fault: there is no alternative. If some broadly useful statistical tools are delivered in the most climate-destroying, economy-wrecking, job-killing, quality-vaporizing way possible, that's just How It Is. It's not Sam Altman or Dario Amodei's fault: there is no alternative.
Science fiction can do more than imagine how "General AI" might change society: sf can imagine a society that doesn't make the fanciful leap from a word-guessing sentence-extruder to a machine god. Sf can imagine a world that debuts "AI" as a joint supercomputing project between the IPCC and Sandia National Labs whose primary purpose is to improve the fidelity of climate models, and whose spinoffs are modest but interesting open source tools that people run on regular computers with normal energy footprints.
Considered as a predictive literature, sf is a colossal failure. If our books are to be taken as roadmaps to an inevitable future, we have all flunked out of cartography school. More than 99.9% of these maps describe a territory that never emerged. All claims of sf's predictive value are just survivor bias, feats of Texas marksmanship in which we fire a shotgun into the side of a barn and then draw a target around the place where the holes cluster.
What's more likely: that sf is 99.9% fake fortune-tellers and 0.1% seers and soothsayers; or that the "predictions that came true" in sf are just the inevitable bullseyes that you'd score if you threw enough darts?
Prediction is a weak and helpless activity, the obsession of people who don't think they can change anything. It's the superstitious dread that gives rise to astrology. Far better to be a Luddite who asserts that there is more than one way to introduce a technology to a society. To be a Luddite is to insist that humans are in charge of humanity, not the iron laws of economics, not the great forces of history, not the uncaring and illusory constellations. At its best, sf is a proudly Luddite literature:
https://locusmag.com/feature/cory-doctorow-science-fiction-is-a-luddite-literature/
The insistence that we can change things is an active posture. It's an activist posture. At its radical best, sf is activist, because it engages with more than what the machine does, insisting on changing who the machine does it for and who the machine does it to.
Which is why I find demands to offer predictions for the future so irritating. People who think that sf writers can predict the future have the field's role exactly backwards. My intention isn't to demoralize you into tying yourself to history's tracks – I'm here to show you how to grab the wheel and steer off the rails altogether.
The reason this seems so implausible is that the "there is no alternative" people have convinced us that all change is the result of individuals. To change the world, you must fashion yourself into one of history's mediocre Great Men, a Musk or Zuck. Our oligarchs are the avatars of the Great Forces of History. They have seen the predictable, inevitable future and have been allocated trillions by the capital markets to ensure that we arrive there on time, running straight down those shining rails, no matter how many people are tied to the tracks.
Another motif of Thatcherism (and hence inevitabilism) is that "there is no such thing as society," which means that all change is the result of individuals, which means that only Great Men can hope to change anything. If there is no such thing as society, then it follows that there's no such thing as mass movements, there's no such thing as trade unions, and there's no such thing as revolutions.
If there's no such thing as society, then eruptions of students and workers in the streets must be nothing more than mob violence – it can't possibly be a political eruption. If you're an inevitabilist then Occupy was nothing more than millions of individual "virtue signallers" and #MeToo and #BlackLivesMatter were the individual follies of innumerable "social justice warriors."
As an activist, I'm not interested in predicting the future, I'm interested in changing it. When I speak about "the post-American internet" that we could create by exploiting the policy space that has been opened by Trump's incontinent belligerence, my intention is to get you to help build it, not to get you to prepare yourself for that inevitable outcome:
https://pluralistic.net/2026/01/01/39c3/#the-new-coalition
Obviously, some aspects of our future are locked in. The climate violence our political and business elites inflicted on the world locked in rising seas, extreme weather, habitat-loss driven zoonotic plagues and massive refugee crises. Those are inevitable. What's entirely up to us is what we do about them.
Do we create full employment for every person who will live for the next 300 years, relocating our coastal cities inland, treating the sick, retrofitting our infrastructure, and accommodating our neighbors who are driven out of their homes? Or do we let the stupidest, worst people among us lead us into the ecofascism of border walls, drone warfare, and exterminationism? That's our choice.
We've had generations of being told to "vote with our wallets" instead of organizing in political, labor and social movements. Voting with your wallet doesn't work (billionaires' wallets are thicker than yours, they win those votes), and if you lose enough of those wallet elections, it's easy to fall into the despair of believing that the future is inevitable:
https://pluralistic.net/2025/09/13/consumption-choices/#marginal-benefits
I think this is why "prediction markets" have caught on so ferociously. While prediction markets are sold as a way for people to "inject information" into markets, they are actually a rigged system that transfers money from everyday "investors" to insiders:
https://pluralistic.net/2026/03/24/degenerated-gambling/#oracle-capture
Prediction markets are the perfect pastime for history's prisoners. If you fancy yourself a plaything of the gods whose future is already written, then prediction markets are a way for you and your fellow prisoners to bet on what torments will come next. And of course oligarchs love prediction markets, because they're the ones who can rig the odds, say, by placing a bet on a war and then leading the country to that war.
They are the gods, the only ones who get to make history, so a market for bets on what history will do next is a way to enrich history's avatars at the expense of history's victims.
In science fiction, we often meet powerful aliens who tell us "resistance is futile" as they conquer our world and set about exterminating us. But if resistance was truly futile, no one would have to say it.
When they tell us "there is no alternative," what they mean is "stop trying to think of alternatives." To imagine radically is to move beyond the helplessness of prediction: a radical imagination dares to insist that history is what we make, not what happens to us.
(Image: Ralf Roletschek, CC BY-SA 3.0, modified)

The Real Reason AI Is Able to Hack Everything on the Internet https://www.thebignewsletter.com/p/monopoly-round-up-the-real-reason
Halloween 1960-1964 – Quivers Down The Backbone https://centuriesofsound.com/2026/10/25/halloween-1960-1964-quivers-down-the-backbone/
Still On Its Way to Cleveland https://longreads.com/2026/09/22/family-road-trip-early-internet-90s/
#15yrsago Canon of St Paul’s resigns over plans to evict Occupy London https://www.theguardian.com/world/2011/oct/27/giles-fraser-st-pauls-profile
#15yrsago Orange County city council unanimous: Occupy tents are a form of speech https://web.archive.org/web/20111029021151/http://www.occupy-oc.org/tears-stream-as-city-council-unanimously-agrees-occupy-tents-are-a-form-of-speech/
#15yrsago Edible Venn diagram: the piagram https://www.reddit.com/r/pics/comments/g8nxo/i_realize_its_a_bit_late_for_pi_day_but_heres_my/
#15yrsago SOPA: US House of Reps copyright bill proposes national censorship, attacks on hosting services, Twitter, YouTube https://www.eff.org/deeplinks/2011/10/disastrous-ip-legislation-back-–-and-it’s-worse-ever
#15yrsago Google rejects JWZ’s 2-step plan to end the nym wars https://www.jwz.org/blog/2011/10/google-nymwars-redux/
#15yrsago Toronto mayor confronted by comedy interviewer calls 911, reportedly shouts “You bitches! Don’t you fucking know? I’m Rob fucking Ford, the mayor of this city! https://www.joeydevilla.com/2011/10/27/im-rob-fucking-ford-or-the-mayor-the-ambush-and-the-911-call/
#15yrsago Canadian Tory MP: Don’t worry about violating our stupid new copyright law, because we probably won’t catch you if you do https://web.archive.org/web/20111029155739/https://www.michaelgeist.ca/content/view/6089/125/
#10yrsago UK MPs realise that age filtering won’t work so now they just want to block all porn in the UK https://www.openrightsgroup.org/blog/now-we-want-censorship-the-digital-economy-bill-is-running-out-of-control/
#10yrsago Samsung abuses copyright to censor satirical exploding phone Grand Theft Auto mod https://www.eff.org/deeplinks/2016/10/samsung-sets-its-reputation-fire-bogus-dmca-takedown-notices
#10yrsago EU lies and the British tabloids who told them https://web.archive.org/web/20160626051921/https://www.economist.com/blogs/graphicdetail/2016/06/daily-chart-15
#10yrsago The Pirate Party are poised to form Iceland’s government in Saturday’s election https://qz.com/817784/icelands-pirate-party-looks-likely-to-take-the-countrys-general-election-on-oct-29
#5yrsago Hospital rings up $2755 upcharge by sending pregnant woman to ER https://pluralistic.net/2021/10/27/crossing-a-line/#zero-fucks-given
#1yrago Shake Shack wants you to shit yourself to death https://pluralistic.net/2025/10/27/shit-shack/#binding-arbitration

Kilkenny (Kilkenomics), Nov 6-8
https://kilkenomics.com/
Courtenay: Enshittification (Sid Williams Theatre Society), Nov
10
https://www.sidwilliamstheatre.com/events/cory-doctorow-talks-enshittification/
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
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/
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
Sharing The Garden by ivymug [Oh Joy Sex Toy]
Urgent: Protect independence of Office on Violence Against Women [Richard Stallman's Political Notes]
US citizens: call on Congress to protect the independence of the Office on Violence Against Women.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
US citizens: Join with this campaign to address this issue.
To phone your congresscritter about this, the main switchboard is +1-202-224-3121.
Please spread the word.
Urgent: Law to prohibit the bully's slush fund [Richard Stallman's Political Notes]
US citizens: call on Congress to pass a law prohibiting the bully's slush fund (paid by the treasury and available to reward whoever he chooses).
US citizens: Join with this campaign to address this issue.
To phone your congresscritter about this, the main switchboard is +1-202-224-3121.
Please spread the word.
Government of Somalia arrested and tortured journalists [Richard Stallman's Political Notes]
The US-supported government of Somalia arrested and tortured journalists, then thugs threatened to kill them if they continued covering the case of a woman who reports being tortured in prison.
I am curious why they tortured that woman. I suppose it was for political reasons, but what reasons? What criticism is it that those thugs really want to suppress?
Countries with longer average working hours [Richard Stallman's Political Notes]
Countries with longer average working hours tend to have more obesity.
Directors of documentary NAZA called traitors [Richard Stallman's Political Notes]
Israel's Minister of Culture, Miki Zohar, called the (Israeli) directors of the documentary NAZA "traitors" and said he would cancel their citizenship.
The documentary shows Israelis' choosing to put the lives of Palestinian noncombatants in danger, with the result of killing many of them.
In the eyes of officials committed to burying the truth, citizens who don't support the mandatory lies are "traitors".
Public right to oppose mine projects [Richard Stallman's Political Notes]
The plutocratist party that governs Queensland proposes to eliminate the public's right to oppose mine projects.
This is in the name of "streamlining" decisions to let rich people destroy nature and public health.
Limits on foreign students and journalists in US [Richard Stallman's Political Notes]
*Judge blocks the bully's new short limits on how long foreign students and journalists can stay in US.*
Aviation tax discount on private jets [Richard Stallman's Political Notes]
Private jets get a substantial discount in the US on their aviation tax
The article says they are also "more polluting", and it could well be true, but the claim is not precise enough for me to tell whether it means anything.
Israeli "double-tap" strike [Richard Stallman's Political Notes]
*Witnesses recount Israeli "double-tap" strike that killed child and medic in Gaza.*
Proof writers jailed in 2001 are still alive [Richard Stallman's Political Notes]
A prestigious demand to the government of Eritrea for proof that writers jailed in 2001 are still alive.
Communication/surveillance app for Russians [Richard Stallman's Political Notes]
Putin has ordered Russians to use a new communication/surveillance app and various institutions are pressuring people to switch to it for various purposes. It implements full surveillance of most activities on the phone. It fully demonstrates the Orwellian potential of the nonfree software and malicious hardware in those devices.
If I needed to use such an app to get into school buildings and my dorm, I think I could develop a non-computerized method of cooperation for door opening.
Mahmoud Khalil has published a memoir [Richard Stallman's Political Notes]
Formerly imprisoned US protester Mahmoud Khalil has published a memoir about the persecutor's efforts to expel him from the US for peaceful protest.
He points out another injustice of private prisons: they make more money if they keep you in prison longer. This is in addition to various other injustices.
He says "Columbia turned out to be a real estate empire with a campus attached"; its board of trustees is "not so much a neutral administrative body as a deeply ideological one … drawn overwhelmingly from finance, real estate, corporate law, and weapons manufacturers."
If you want to buy this book, or any book, I urge you not to use nonfree software to do it, and especially not Amazon.
Non-profit medical joint ventures with private equity [Richard Stallman's Political Notes]
Nonprofit medical treatment organizations are increasingly setting up joint ventures with private equity, whose values are typically "profit regardless of the consequences".
These joint ventures often permit extraction of additional profit from the medical activities.
Candidates for county prosecutor in Minneapolis [Richard Stallman's Political Notes]
Two competing candidates for county prosecutor in Minneapolis claim each to be the best for prosecuting deportation thugs.
I do not use the euphemistic term "ICE" for the deportation thugs, but I agree with the point.
| Feed | RSS | Last fetched | Next fetched after |
|---|---|---|---|
| @ASmartBear | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| a bag of four grapes | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| Ansible | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| Bad Science | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| Black Doggerel | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| Blog - Official site of Stephen Fry | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| Charlie Brooker | The Guardian | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| Charlie's Diary | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| Chasing the Sunset - Comics Only | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| Coding Horror | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| Comics Archive - Spinnyverse | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| Cory Doctorow's craphound.com | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| Cory Doctorow, Author at Boing Boing | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| Ctrl+Alt+Del Comic | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| Cyberunions | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| David Mitchell | The Guardian | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| Deeplinks | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| Diesel Sweeties webcomic by rstevens | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| Dilbert | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| Dork Tower | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| Economics from the Top Down | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| Edmund Finney's Quest to Find the Meaning of Life | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| EFF Action Center | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| Enspiral Tales - Medium | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| Falkvinge on Liberty | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| Flipside | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| Flipside | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| Free software jobs | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| Full Frontal Nerdity by Aaron Williams | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| General Protection Fault: Comic Updates | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| George Monbiot | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| Girl Genius | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| Groklaw | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| Grrl Power | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| Hackney Anarchist Group | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| Hackney Solidarity Network | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| http://blog.llvm.org/feeds/posts/default | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| http://eng.anarchoblogs.org/feed/atom/ | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| http://feed43.com/3874015735218037.xml | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| http://flatearthnews.net/flatearthnews.net/blogfeed | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| http://fulltextrssfeed.com/ | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| http://london.indymedia.org/articles.rss | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&_render=rss | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| http://planet.gridpp.ac.uk/atom.xml | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| http://shirky.com/weblog/feed/atom/ | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| http://thecommune.co.uk/feed/ | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| http://theness.com/roguesgallery/feed/ | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| http://www.airshipentertainment.com/buck/buckcomic/buck.rss | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| http://www.airshipentertainment.com/growf/growfcomic/growf.rss | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| http://www.airshipentertainment.com/myth/mythcomic/myth.rss | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| http://www.godhatesastronauts.com/feed/ | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| http://www.tinycat.co.uk/feed/ | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| https://anarchism.pageabode.com/blogs/anarcho/feed/ | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| https://broodhollow.krisstraub.comfeed/ | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| https://debian-administration.org/atom.xml | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| https://elitetheatre.org/ | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| https://feeds.feedburner.com/Starslip | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| https://feeds2.feedburner.com/GeekEtiquette?format=xml | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 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 | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| https://hackbloc.org/rss.xml | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| https://kajafoglio.livejournal.com/data/atom/ | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| https://philfoglio.livejournal.com/data/atom/ | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| https://pixietrixcomix.com/eerie-cutiescomic.rss | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| https://pixietrixcomix.com/menage-a-3/comic.rss | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| https://propertyistheft.wordpress.com/feed/ | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| https://requiem.seraph-inn.com/updates.rss | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| https://studiofoglio.livejournal.com/data/atom/ | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| https://thecommandline.net/feed/ | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| https://torrentfreak.com/subscriptions/ | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| https://web.randi.org/?format=feed&type=rss | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| https://www.baen.com/baenebooks | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| https://www.dcscience.net/feed/medium.co | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| https://www.DropCatch.com/domain/steampunkmagazine.com | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| https://www.DropCatch.com/domain/ubuntuweblogs.org | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| https://www.DropCatch.com/redirect/?domain=DyingAlone.net | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| https://www.freedompress.org.uk:443/news/feed/ | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| https://www.goblinscomic.com/category/comics/feed/ | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| https://www.loomio.com/blog/feed/ | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| https://www.newstatesman.com/feeds/blogs/laurie-penny.rss | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| https://www.patreon.com/graveyardgreg/posts/comic.rss | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 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 | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| https://x.com/statuses/user_timeline/22724360.rss | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| Humble Bundle Blog | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| I, Cringely | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| Irregular Webcomic! | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| Joel on Software | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| Judith Proctor's Journal | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| Krebs on Security | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| Lambda the Ultimate - Programming Languages Weblog | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| Looking For Group | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| LWN.net | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| Mimi and Eunice | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| Neil Gaiman's Journal | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| Nina Paley | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| O Abnormal – Scifi/Fantasy Artist | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| Oglaf! -- Comics. Often dirty. | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| Oh Joy Sex Toy | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| Order of the Stick | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| Original Fiction Archives - Reactor | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| OSnews | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| Past Events | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| Paul Graham: Unofficial RSS Feed | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| Penny Arcade | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| Penny Red | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| PHD Comics | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| Phil's blog | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| Planet Debian | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| Planet GNU | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| Planet Lisp | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| Pluralistic: Daily links from Cory Doctorow | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| PS238 by Aaron Williams | XML | 19:21, Monday, 02 November | 20:09, Monday, 02 November |
| QC RSS v2 | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| Radar | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| RevK®'s ramblings | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| Richard Stallman's Political Notes | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| Scenes From A Multiverse | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| Schneier on Security | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| SCHNEWS.ORG.UK | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| Scripting News | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| Seth's Blog | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| Skin Horse | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| Tales From the Riverbank | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| The Adventures of Dr. McNinja | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| The Bumpycat sat on the mat | XML | 19:07, Monday, 02 November | 19:47, Monday, 02 November |
| The Daily WTF | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| The Monochrome Mob | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| The Non-Adventures of Wonderella | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| The Old New Thing | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| The Open Source Grid Engine Blog | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| The Stranger | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| towerhamletsalarm | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| Twokinds | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| UK Indymedia Features | XML | 19:14, Monday, 02 November | 19:56, Monday, 02 November |
| Uploads from ne11y | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| Uploads from piasladic | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |
| Use Sword on Monster | XML | 19:21, Monday, 02 November | 20:08, Monday, 02 November |
| Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily | XML | 19:00, Monday, 02 November | 19:46, Monday, 02 November |
| what if? | XML | 19:14, Monday, 02 November | 19:55, Monday, 02 November |
| Whatever | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| Whitechapel Anarchist Group | XML | 18:49, Monday, 02 November | 19:38, Monday, 02 November |
| WIL WHEATON dot NET | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| wish | XML | 19:21, Monday, 02 November | 20:06, Monday, 02 November |
| Writing the Bright Fantastic | XML | 19:21, Monday, 02 November | 20:05, Monday, 02 November |
| xkcd.com | XML | 19:21, Monday, 02 November | 20:04, Monday, 02 November |