Saturday, 31 October

08:14

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.

08:07

Mr. Yuk [Penny Arcade]

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.

Mr. Yuk [Penny Arcade]

New Comic: Mr. Yuk

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.

Nautical Naughties [Penny Arcade]

New Comic: Nautical Naughties

Back To Back Rap Tracks [Penny Arcade]

There can be no question, at long last, that Soulja Boy has told them: he wants those cards. Everybody wants those signed cards and it makes sense. At a certain point it seems like the Federal government would just allow Wizards to just print the money directly. Skip a step, you know? Save everybody a bunch of time.

Back To Back Rap Tracks [Penny Arcade]

New Comic: Back To Back Rap Tracks

Desert Bus! [Penny Arcade]

The Desert Bus for Hope charity stream has just begun! Head over and watch them drive the bus and raise money for Child’s Play! 

Devil Dogs [Penny Arcade]

If Gabe finished your Call of Duty campaign, it must be pretty fucking good. The last time around was functionally a playable meme that didn't line up with the milspec fantasy they typically offer, i.e., a three-story combat knife might fall out of the sky. He says that he spent way longer than strictly necessary inside of a Korean convenience store, and if they're anything like konbini you can spend a very very long time in one. Comparing a 7-Eleven in Japan to a 7-Eleven in Seattle is like comparing an eight ounce, medium-rare filet mignon to roadkill. Now, Gabriel would like to inoculate you against a specific type of content in the game but beyond that he grants whatever wastrel seal of approval he can muster.

Devil Dogs [Penny Arcade]

New Comic: Devil Dogs

Bride of Spooktactular (OoO) from L99 Games [Penny Arcade]

Running ads is essentially broken, which is why so many sites have essentially become unusable especially on mobile.  If I even tried to make the site look like that the designers wouild twist my head off like a bottlecap.  So, we've been working with friends by and large to get ads up that we feel good about.  Bride of Spooktacular fits snugly in that place. 

I just really like Brad's designs; his obsession is with asymmetrical strategy games.   I could list them for a very long time, but he's the king of fighting games you play with cards, whether you think the best version of that is BatlleCON or EXCEED because he designed both.  Spooktacular and its Bride posit that terrors beyond mortal ken have burst through the screens in the theatre, and those are the entities you play as - devouring horrified moviegoers by the gobfull.  Every one of the original's twenty monsters or the Bride's ten additional ones is essentially playing a different game while going after the same points, with ramifications for your opponents and even in some cases the way the game plays.  Evil cars, a Queen and her Hive, zombified versions of our founding fathers...  this is just where it starts.  This Gamefound camnpaign also offers the Double Feature as an optional add-on, which are twenty new remixes of the original game's monsters that play completely differently or even invert their mechanics.  Anyway, putting up his ads was the easiest decision I made all year.  Only about a week left on the campaign... if you dare, etc.

(CW)TB   

The Tri-Fold Augur [Penny Arcade]

Bungie is between Scylla and Charybdis, two words I spelled correctly on my first try. What are these two things? We don't need to go into all that - just know that they're both unwelcome, and you don't want to be there. Bungie's thing is to make its own weird and peerless shit, they've been doing it since the Mac, and maybe on some level there might be a perceived loss of face or identity associated with hauling somebody else's rope. Fuck allat. This is Live To Fight Another Day shit. Get the skunkworks popping while Lucasfilm keeps the stove warm and fends off Sony with a chair and a whip. The deal is bigger than paper, as choosing to slot work with the leading console manufacturer is just a good thing to have in your back pocket. And we already know Bungie would crush it: Renegades, their collab/crossover/Star Wars fic, was sick to death. Indeed, I propose that this is so cosmic, powerful, and correct that it represents an auspicious stellar configuration - something as good as Scylla and Charybdis, whatever they may be, are bad.

Child's Play Auction Item [Penny Arcade]

I love all of the incredible handmade items we get donated for the Child’s Play auction. We are less than a month away from this year’s dinner and I wanted to share a couple pictures of one of our awesome live auction items.

 

The Tri-Fold Augur [Penny Arcade]

New Comic: The Tri-Fold Augur

ARC Resort [Penny Arcade]

Mr. Gibb got hauled back into ARC by his eldest; that last link goes to his full report if you haven't seen it. Today's strip is a "war journal" of the kind of twisted, post-apocalyptic hellscape that you might experience in a food court.

Arc Raiders PvE Report! [Penny Arcade]

I quit playing ARC Raiders for a couple of reasons. The two big ones being I did not want to support their use of AI voices and I was sick of getting shot in the back and losing all my shit. My eldest son Gabe loves the game and never stopped playing. He told me about how they replaced their AI voice work with human actors and that they were testing a new PvE mode. He asked if I wanted to try a few rounds with him and since I am at all times desperately trying to avoid a “Cat’s in the Cradle” situation I said yes.

 

ARC Resort [Penny Arcade]

New Comic: ARC Resort

Hexacon [Penny Arcade]

I got a text from the designer of Gundam Assemble about today's strip, which was very nice of him. His name is Justin Gary; we met during quarantine and he was one of the first non-family humans I saw in person. We played Solforge out on the porch. He's probably best known for creating Ascension, which was one of the heavy-hitter deckbuilders back in the day. I was already going to be interested in Gundam Assemble, a wargame using the cutest miniature gunpla you ever did see, but when I found out he had made the engine for it that elevated the offering substantially.

Hexacon [Penny Arcade]

New Comic: Hexacon

Grand Admiral Pron [Penny Arcade]

My flight ended up being delayed, so in a strange and auspicious turn I happened to be ready to write the strip at the exact same time we typically do. Biddy Blas is constantly being tooled by others in the racing camp, hazed to within an inch of his life, and he certainly deserves a win. Does this constitute a win? I mean, maybe.

Grand Admiral Pron [Penny Arcade]

New Comic: Grand Admiral Pron

07:28

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.

05:56

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.

00:28

Friday, 30 October

23:35

[Filler] Happy Halloween 2026! [Twokinds]

Comic for October 30, 2026

21:21

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.

Blog moderation policy.

21:14

Link [Scripting News]

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).

Mr. Yuk [Penny Arcade]

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.

20:35

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.

20:28

Link [Scripting News]

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.

19:49

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:

1
2
3
4
5
6
7
8
9

GET /connect HTTP/1.1
Host: 192.168.87.126:56001
User-Agent: SamsungMultiroom/1.0
Connection: interactive

GET /UIC?cmd=%3Cname%3ESetUartOnOff%3C/name%3E%3Cp%20type%3D%22str%22%20name%3D%22uartOnOff%22%20val%3D%22on%22/%3E HTTP/1.1
Host: 192.168.87.126:56001
User-Agent: SamsungMultiroom/1.0
Connection: interactive

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

1

buxton2ctl set-string system db/comss/countrycode AU

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.


  1. Yes, it reads a file directly from in-kernel ↩︎

  2. Good god I hate reading this kind of slop ↩︎

18:28

[$] 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.

18:14

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?

Building the research agent

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.

From a hiring case to a toil audit

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’s response: Invoking the experts

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.

What models do without direction

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.

Putting the discussion where the AI can see it

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.

Questions from the audience

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 attacks are outpacing traditional security responses

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.

The transition to agents brings new challenges

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.

AI is accelerating discovery, but validation still takes time

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.

What’s next

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.

17:42

Free Software Directory meeting on IRC: Friday, October 2, starting at 12:00 EDT (16:00 UTC) [Planet GNU]

Join the FSF and friends on Friday, October 2 from 12:00 to 15:00 EDT (16:00 to 19:00 UTC) to help improve the Free Software Directory.

30 years of XaoS: Past, present and future [Past Events]

September 19, 2026 from 14:30–17:30 CET

17:00

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

Author socials: Website|Bluesky|Instagram

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

16:56

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.

16:42

Link [Scripting News]

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.

16:14

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.

16:00

Link [Scripting News]

Braintrust query: Does Google define the web?

15:56

10/30/26 [Flipside]

I am gonna be at Youmacon this weekend, in the artist alley K-05!

15:28

[$] 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.

15:21

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.

15:14

Link [Scripting News]

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.

Link [Scripting News]

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.

14:42

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.]

13:56

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).

13:21

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!

b374018305314c90bfa32978913fb772

"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?"

b8c2d3d8930e40c2b28684b0dc1ddcdf

"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..."

c552110e0b00487287e120b2923c85cc

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?

d545a4348d254012954465cc5b1f2e64

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.

e2da6ff401e04c11ba3a050d4367170f

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!

12:49

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.

Current Issues

Wifi Hotspot Status

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.

QT6 and MESA GL

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

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.

Improvements by Furilabs

Wifi Hotspot

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

Charging

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.

Things I’ve Done

SMS

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

Contacts

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.

Chatty

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

Dino-IM

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

Andromeda/Android

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

Wifi DHCP

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.

4G Monitoring

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

Mastodon

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.

Source

#!/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);

11:21

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)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.

Flatland gives me a way to explain why

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.

We have already seen agents change what their environment means

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.

Who approved this?

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.

Learning must not silently expand agency

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.

Those are mechanisms we have to build. Let’s get started.

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.

It’s not enough to check permissions and identity alone

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.

09:07

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?

07:35

Mr. Yuk [Penny Arcade]

New Comic: Mr. Yuk

07:21

Russell Coker: Fuel Should be More Expensive [Planet Debian]

The Current Situation

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.

The Problem

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.

What We Need

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.

What Will Happen

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.

06:35

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.

05:00

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.

04:42

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.

04:35

02:49

Frugality [QC RSS v2]

you can tell it's fancier because it's in fancier glasses

00:21

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.

Thursday, 29 October

19:56

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

Author socials: Website|Facebook|Bluesky

19:14

Link [Scripting News]

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.

18:07

Page 11 [Flipside]

Page 11 is done.

Page 10 [Flipside]

Page 10 is done.

17:21

15:28

Link [Scripting News]

Posted on Twitter re Frontier being real in 2026, not just a memory.

14:42

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".

13:56

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).

13:35

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.

[Advertisement] Keep all your packages and Docker containers in one place, scan for vulnerabilities, and control who can access different feeds. ProGet installs in minutes and has a powerful free version with a lot of great features that you can upgrade when ready.Learn more.

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.

  1. Dimensional accuracy of the 3D print. My resin printer can be very slightly out on larger prints - depends on the resin used. The models from JLC are unbelievably stable. So measure, with callipers, to check. Do not rely on the Eufymake camera.
  2. Make the artwork to the correct dimensions. My example here is nice as it is a 16x12 grid of 7.5mm square blocks. Almost impossible to get wrong.
  3. Add bleed to the artwork, a few mm over all edges on the most appropriate colour. For this model I copied and pasted half a block left, right, up, and down behind the image.
  4. Make an outline of the image, only like 1mm or something.
  5. Load the outline, centred exactly, and print on paper on the print bed.
  6. Place model on the outline to align exactly.
  7. Load the image, centred exactly.
  8. Know the centre of the image - in my case there is a clear and exact centre.

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.


13:14

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.
Table 1. Choosing agent autonomy for a specific task

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.

10:14

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.

09:14

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.

01:28

The Finest Vintage [QC RSS v2]

it's the good stuff

01:00

Monster’s BAWL [The Non-Adventures of Wonderella]

Monster’s BAWL - Monsters are a wholly owned property of Pixar Animation Studios, a subsidiary of The Walt Disney Company.

Monsters are a wholly owned property of Pixar Animation Studios, a subsidiary of The Walt Disney Company.

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


Exercise

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:

  • what we eat;
  • what we drink;
  • what we breathe; and
  • what we think.

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, Wikipedia

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):

  • push-ups - easier version: at an angle or against the wall;
  • pull-ups - easier version: at an angle e.g. using door frame;
  • squats - easier version: don't squat all the way down; and
  • sit-ups.

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.

Food

As 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.

00:35

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:

A large soaking tub with a beautiful pink tile wall and patterned tiled floor.

A shot of the other half of the bathroom, where a waffle robe is hanging, more of that beautiful patterned floor tile is visible, and the toilet is like the nice kind.

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:

A large bed with white sheets and white comforter, with a cushioned orangey brown fabric headboard and two nightstands with lamps on them. There's also a giraffe stuffed animal on the bed.

(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:

A large wooden wardrobe with three huge glass paneled doors.

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

A wood and marble mini bar with a large circular gold framed mirror above it, plus a bunch of bartender's tools and liquor. There's also me in the mirror!

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:

A menu with contents of the mini bar + prices.

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.

Two paper menus for the Club Room.

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

Four bacon wrapped dates on a lovely speckled plate.

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:

A bowl of 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:

Two cocktails, one in a short glass and one in a tall glass, both varying shades of pink, and with large fruit garnishes.

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:

Three perfectly browned pancakes, with butter and syrup.

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

00:28

[$] LWN.net Weekly Edition for October 29, 2026 [LWN.net]

Inside this week's LWN.net Weekly Edition:

  • Front: Python JIT; Kernel clean up; Rust panics; Future Rust features; Northstar browser; 7.4 merge window; Smaller kernel stacks.
  • Briefs: KeePassXC 2.8.0; Redox ring buffers; Rust in systemd; Quotes; ...
  • Announcements: Newsletters, conferences, security updates, patches, and more.

00:14

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.

Wednesday, 28 October

22:14

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.

22:00

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.

21:00

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

20:21

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.

18:49

Page 9 [Flipside]

Page 9 is done.

18:07

The PHP Incident [Radar]

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.

15:49

Link [Scripting News]

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.

15:42

14:42

[$] 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.

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.

14:14

Link [Scripting News]

Braintrust query: Why do you love Markdown? I have a theory why people love it so much -- simplicity. You can't hide any garbage in a Markdown file. You can answer on GitHub or Twitter. Didn't post on Masto or Bluesky because the prompt is 761 chars, over the limit for both systems. I think I'm finally done with truncating well-written prose to fit into one vendor's idea of what's enough text for me. I want to make that a distant memory. So another thing I love about Markdown -- no freaking character limit.

Link [Scripting News]

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."

14:07

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.


This is not really a new idea, but first I have done it. We actually did recently for some FireBrick work - 3D printing the case, but also 3D printing the PCB. This was FDM, which was fine for checking the mechanics.

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.

  • The USB-C socket has the inner part, but you can plug in a USB-C cable properly and not break anything. This allows the exact fit of cable in socket and confirming is it not fouling anything in the case design.
  • The battery connector even has the pins - that is crazy. And again, the plug of a real battery could plug in and not even break the pins! This was great to confirm exactly the right connector and polarity and confirm battery lead length fits as expected and is reachable from where the battery will be located.
  • The ribbon connector has the gap for the ribbon from an e-paper, and allows me to verify the length fits and again is something one can reach in the case to install.
  • The sticky out bits fit in the case design which has slots for them (button, USB, WiFi antenna, and lugs).

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!

13:14

Security updates for Wednesday [LWN.net]

Security updates have been issued by AlmaLinux (emacs, thunderbird, and xdg-dbus-proxy), Debian (bind9, openjdk-21, pdns, php-mongodb, and thunderbird), Fedora (brotli, chromium, clevis, eog, flatpak, ghostscript, kernel, libinstpatch, libreswan, mingw-freetype, mingw-gstreamer1, mingw-gstreamer1-plugins-bad-free, mingw-gstreamer1-plugins-base, mingw-gstreamer1-plugins-good, openssh, perl-Alien-Brotli, perl-DBI, python3.12, rust-onefetch, stargz-snapshotter, util-linux, and webkitgtk), Mageia (cifs-utils, libxml2, packages, perl-Cpanel-JSON-XS, perl-Text-CSV_XS, sogo, util-linux, and weechat), Oracle (brotli, firefox, flatpak, gcc-toolset-15-gcc, kernel, libreswan, nodejs:22, nodejs:24, python-urllib3, skopeo, and xdg-dbus-proxy), Slackware (proftpd), SUSE (azure-storage-azcopy, containerd, corepack24, grok-build, ImageMagick, libsoup-2_4-1, matrix-synapse, podman, psqlODBC, python, python-M2Crypto-doc, python-Twisted-doc, and xen), and Ubuntu (authd).

12:35

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.

[Advertisement] Keep the plebs out of prod. Restrict NuGet feed privileges with ProGet. Learn more.

11:56

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:

  1. Why, and what not to do (this essay) 
  2. Measuring delivery speed 
  3. Measuring and modeling unintended consequences 
  4. Modeling and forecasting business outcomes 
  5. Epilogue: Notes for your CFO

Why you need to quantify impact

Why you need to quantify impact with AI

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.

Don’t neglect costs

Spending efficiency

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.

Thinking for the long term

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.

Maintenance costs

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.

Don’t measure lines of code

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.

Don’t measure pull requests either

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.

Measure approaches, not people

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.


Footnote

  1. Participants rated themselves as 20% faster, but were measured as being 19% slower. This study was published prior to the big uplift in coding capability that started with Anthropic’s Opus 4.5, so you shouldn’t take it to mean that AI isn’t capable. But you should take it to mean productivity self-assessments aren’t the way to go. ↩︎

11:35

Pluralistic: Agents vs ecommerce (28 Oct 2026) [Pluralistic: Daily links from Cory Doctorow]

->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None -->

Today's links



A blasted, dark, cratered moonscape, dominated by an overturned shopping cart, which is being swarmed with killer robots from pulp magazines.

Agents vs ecommerce (permalink)

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 multiplicative: 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.


Hey look at this (permalink)



A shelf of leatherbound history books with a gilt-stamped series title, 'The World's Famous Events.'

Object permanence (permalink)

#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


Upcoming appearances (permalink)

A photo of me onstage, giving a speech, pounding the podium.



A screenshot of me at my desk, doing a livecast.

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027
  • "Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027

  • "Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2027

  • "The Memex Method," Farrar, Straus, Giroux, 2027



Colophon (permalink)

Today's top sources:

Currently writing:

  • “Once Is Enemy Action,” a science fiction novel about the origins of modern technofascism. Today's words: 518 (30331 total).

  • "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.


How to get Pluralistic:

Blog (no ads, tracking, or data-collection):

Pluralistic.net

Newsletter (no ads, tracking, or data-collection):

https://pluralistic.net/plura-list

Mastodon (no ads, tracking, or data-collection):

https://mamot.fr/@pluralistic

Bluesky (no ads, possible tracking and data-collection):

https://bsky.app/profile/doctorow.pluralistic.net

Medium (no ads, paywalled):

https://doctorow.medium.com/

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.

09:14

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.

07:28

Nautical Naughties [Penny Arcade]

New Comic: Nautical Naughties

07:07

Suffering as a Feature [Coding Horror]

Suffering as a Feature

Have you seen this?

Suffering as a Feature

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.

Suffering as a Feature

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.

Suffering as a Feature

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.

Suffering as a Feature

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.

Suffering as a Feature

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.

Suffering as a Feature

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?

Suffering as a Feature

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.

Suffering as a Feature

I challenge everyone to climb the graph on dreamagainusa.org as far as you want to.

Suffering as a Feature

If you do reach the so-called "top", I have a question.

Was it worth it?

05:07

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.

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.

04:49

Girl Genius for Wednesday, October 28, 2026 [Girl Genius]

The Girl Genius comic for Wednesday, October 28, 2026 has been posted.

03:14

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.

01:49

Pivot Point [QC RSS v2]

Anh's best isn't very good though

01:35

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


Tuesday, 27 October

21:49

21:14

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

Author socials: Website|Facebook|Twitter|Instagram

19:28

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.

Activity summary

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:

  • jbig2dec (DLA-4779-1), prepared by Andreas Henriksson, fixes CVE-2026-38076, where missing input checks could lead to a denial of service. It is to note that this library is used by different tools, such as ghostscript.
  • linux-6.12 (DLA-4788-1), uploaded by Ben Hutchings, fixing 414 CVEs in the bookworm backport of Linux kernel version 6.12.
  • lxml (DLA-4799-1), prepared by Guilhem Moulin, fixes four vulnerabilities in this widely used python XML/HTML library. The issues may yield to exposing local files.
  • nginx (DLA-4784-1), issued by Carlos Henrique Lima Melara (“charles”), fixing three memory-safety bugs in this popular web server and reverse proxy, which may result in denial of service, memory disclosure or potentially the execution of arbitrary code.
  • openssl (DLA-4795-1), by Arnaud Rebillout, fixing six vulnerabilities, including an out-of-bounds heap write in CMS decryption and an authentication tag verification bypass in ChaCha20-Poly1305/AES-OCB decryption. This update brings bookworm to OpenSSL 3.0.22, the last upstream release of the 3.0 series, which was reached its upstream EOL on 7 Sep 2026. Further fixes will be backported by the Debian LTS Team from more recent releases.
  • redis DLA-4794-1, by Chris Lamb, fixing vulnerabilities that could yield to arbitrary code execution

Contributions from other Debian fellows beyond the Freexian LTS Team:

  • Thomas Goirand, Keystone released by Emilio as DLA-4767-1
  • Thomas also prepared glance and swift updates, whose respective DLA-4800-1 and DLA-4801-1 were issued by Charles
  • Matthew Vernon uploaded a pcre2 security update, and Emilio issued its DLA-4772-1
  • Otto Kekäläinen uploaded a xz-utils update, released as DLA-4783-1 by Sylvain
  • Salvatore Bonaccorso published a linux (6.1) update released as DLA-4777-1
  • Xavier Guimard prepared a lemonldap-ng, released as DLA-4797-1. Additionally, Sylvain sent DLA-4734-1 at the beginning of the month for the upload made on August.
  • Xavier also released DLA-4766-1 for cyrus-imapd.
  • Simon Quigley uploaded DLA-4803-1 to fix multiple issues in ruby-oj.
  • Finally, Ivo Marino proposed bookworm updates for cjose, git-lfs, caddy, libgit2, libwebsockets, libssh and unbound. Some of Ivo’s proposals are still pending for a review.

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:

  • ruby-jwt, prepared by Abhijith and released as DSA-6547-1
  • urwid, proposed for a point-release update by Abhijith (#1148950)
  • puma, proposed for a point-release update by Abhijith (#1149582)
  • tomcat10, and tomcat9 (which is actually backported to released suites) by Bastien
  • nodejs, prepared by Bastien and released as (DSA-6517-1).

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/.

Individual Debian LTS contributor reports

Thanks to our sponsors

Sponsors that joined recently are in bold.

18:28

Robinson: Raspberry Pi 5 on Fedora [LWN.net]

Peter Robinson has written a blog post about the current state of Fedora support for Raspberry Pi 5 devices. According to Robinson, the upcoming Fedora 45 release will work—with caveats—on all variants of the Raspberry Pi Model 5B; the Compute Module 5 and Pi 500+ are still works in progress.

For Fedora 44 release you need to have a temporary workaround when booting. If you update to the latest kernel/firmware straight away this isn't then needed beyond the first boot. The workaround isn't needed for Fedora 45 so if you're going to try this out I suggest you go and grab your favourite flavour of Fedora from the Fedora 45 release candidates and jump straight in there! You will get an accelerated desktop with storage/network/USB. There's not currently any support for sound and a number of other things.

See Robinson's post for instructions on creating an Fedora image to use with a Raspberry Pi 5.

17:56

Otto Kekäläinen: Debcraft v1.0 released: Easy, fast and secure way to build Debian packages [Planet Debian]

Featured image of post Debcraft v1.0 released: Easy, fast and secure way to build Debian packages

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.

Try out Debcraft 1.0 now!

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).

Running debcraft build in a Debian packaging git repository for the entr package

Benefits

Debcraft was designed to offer the following three main benefits:

Easy

  • 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.

Fast

  • 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.

Secure

  • 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.

Result of many years of development

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.

Contributions welcome!

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!

16:21

15:56

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!)

14:42

Link [Scripting News]

Yesterday Ben Thompson wrote that we've reached the end of the web, and I had come to the same conclusion, just a few days ago. And his piece, which was a great milestone, said it's not totally gone, because of the advent of AI we can build small systems for each other. Which is exactly the motivation of the BigUndo model. What's big about it is how small the parts are and how nicely they fit together. We're not leaving everything behind in the great diaspora to the new web, we're not just bringing Markdown with us. It also echoes Marco Arment, who wrote a similar piece about Mastodon a few days before. Nothing wrong with Mastodon, but the idea of one model of service doing the work for everyone is ridiculous. We need a million different approaches, all we need to make it work is a standard they can all agree on for what forms of text move around the net. Once we agree on a format, we all can use whatever editor we like, and no more tiny little text boxes that lock your ideas into Substack or X or whatever. That was the crime, that's what the BigUndo is all about undoing. The web said very clearly what text is, and they all broke it by doing it differently. We're bringing RSS 2.0 and Markdown with us, and they were joined a short time ago. Almost no one noticed, but there was design here, an intent -- a hope that we'd get to the place it appears we are now at.

Link [Scripting News]

Zettelkasten is an idea pioneered by my great-uncle Arno Schmidt. It's a process for organizing your data and thoughts. When I read people's descriptions of what they do with it, it sounds totally like the outliners I pioneered two generations later. I have a Zettlekasten blog in my blogroll, screenshot, so I think of Uncle Arno, who I never met, from time to time.

Link [Scripting News]

If Claude Code projects had feelings, I'd wake up the Frontier project and let it know that the reason it's been asleep so long is that the software is working. I'm using it to manage the other three apps, writing code, keeping lists, everything works. Yes, the menubar is very out of date, but I know where to find everything. I look forward to coming in for a landing at some point and upgrade it work among the different BigUndo stuff we have running, no doubt we're going to use Frontier to do cross-app scripting. Some of the things AI says they need to do, Frontier can do with the resources of an early 90s Macintosh. No big data centers. Keep that in mind.

[$] Guidelines for panics in kernel code [LWN.net]

Alexandre Courbot spends most of his time working on the kernel doing code reviews. Recently, he's been wondering about what the standards should be for when Rust code is allowed to panic, and how it should do error handling more generally. Unlike many of the other talks at Kangrejos 2026, his talk was not presenting some existing work, but rather hoping to solicit opinions on the topic from the assembled Rust for Linux developers. He brought along a collection of tricky cases that he had run into recently to prompt discussion.

13:56

Security updates for Tuesday [LWN.net]

Security updates have been issued by AlmaLinux (bind, bind9.18, brotli, buildah, container-tools:4.0, container-tools:rhel8, firefox, flatpak, freeipmi, gcc, golang, grafana, httpd, kernel, kernel-rt, libreswan, libX11, lrzsz, nodejs:14, nodejs:18, oci-seccomp-bpf-hook, podman, python-urllib3, python3.9, python38:3.8 and python38-devel:3.8, skopeo, thunderbird, xorg-x11-server, and xz), Debian (inkscape, swupdate, thunderbird, and valkey), Fedora (brotli, dolphin, helix, kernel, libical, mingw-python3, nsd, perl-Alien-Brotli, perl-Plack, perl-Plack-Middleware-ReverseProxy, rust-dua-cli, rust-gengo-bin, rust-gitui, stgit, unshield, and webkitgtk), Mageia (evolution, freetype2, ghostscript, kronosnet, libde265, libical, libjxl, packages, perl-DBI, perl-ExtUtils-Typemaps-Default, perl-Imager, vim, and webkit2), Oracle (bind, bind9.18, brotli, buildah, ca-certificates, firefox, flatpak, freeipmi, grafana, httpd, kernel, libreswan, libX11, lrzsz, nodejs22, nodejs24, nodejs:22, oci-seccomp-bpf-hook, perl-DBI:1.641, perl:5.32, postfix, postgresql16-pgvector, postgresql18-pgvector, python3.9, skopeo, unbound, xorg-x11-server, and xz), Red Hat (grafana, grafana-pcp, python3.12-urllib3, and python3.14-urllib3), SUSE (ca-certificates-mozilla, chromium, gn, cifs-utils, containerd, cpupower, cyrus-sasl, gcc13, gcc7, go1.26, go1.27, google-osconfig-agent, kernel, kubernetes-old, libsoup, libX11, libXi, openssh, podman, python-nltk, python-PyJWT, python-social-auth-core, rekor, runc, suseconnect-ng, and unbound), and Ubuntu (brotli and nginx).

12:21

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.

How Harness-Zero trained an agent harness into a model

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.

What harness distillation can and cannot move into the model

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.

Why training on corrected runs made the difference

But the most important finding, in my opinion, is that they showed what kind of training made the difference:

  • Fine-tuning on the stronger model’s own successful runs left the small model’s score exactly where it started. Just knowing somebody else is smarter isn’t enough.
  • So did fine-tuning on runs the small model completed inside the evolved harness. Again, all that teaches the model is “somebody is better than you at this.”
  • Giving the reviewer the correct answers produced nearly perfect training runs and a model that barely improved, this time because it overfit and learned nothing.
  • What worked was training on the corrected runs: The model was able to see runs that looked a lot like what it would have done, but with small changes still within its capacity.

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.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.

Why models are absorbing parts of the agent harness

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”:

  • In January, Jesus Rodriguez at TheSequence wrote “The Great Absorption,” arguing that hand-coded agent scaffolding keeps losing to capabilities models learn directly.
  • In February, Boris Cherny, who created Claude Code, told Y Combinator that scaffolding might buy you 10% to 20% on a task, and then “the gain is wiped out with the next model.”
  • In March, Vivek Trivedy at LangChain predicted that planning, self-verification, and long-running coherence would move from the harness into the model.
  • And so did lots of other people, probably more than I’ve been able to find.

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.

What still belongs in an agent harness

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.

How to evolve an agent harness as models improve

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.

A practical agent harness maintenance loop

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.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.
  • Tag every trace with the harness version as well as the model version. When either one changes, you want to know which one moved your results, and reading the full traces tells you far more than the scores alone.
  • Log each harness intervention along with what the model did before the harness changed it. That’s data you have right now and are probably just throwing away. That’s what produced the record Harness-Zero trained on, and it’s the same shape Perplexity uses to train its Computer agent: learning from good steps in real sessions and correcting failed tool calls, which cut tool-call failures by 21% between its earlier and later trained versions.
  • When a new model ships, turn off each harness component one at a time and rerun your evals. Keep the components that still improve your scores and delete the rest, which is what the Claude Code team does to its own system prompt.

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.

[Advertisement] Keep all your packages and Docker containers in one place, scan for vulnerabilities, and control who can access different feeds. ProGet installs in minutes and has a powerful free version with a lot of great features that you can upgrade when ready.Learn more.

11:35

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.

09:42

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.

09:21

Pluralistic: History is something you do (27 Oct 2026) [Pluralistic: Daily links from Cory Doctorow]

->->->->->->->->->->->->->->->->->->->->->->->->->->->->-> Top Sources: None -->

Today's links



A closeup of a roulette wheel at rest. The ball has been replaced with the planet Earth. A flying fist is jetting through the air at it and is about to knock it.

History is something you do (permalink)

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 than 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)


Hey look at this (permalink)



A shelf of leatherbound history books with a gilt-stamped series title, 'The World's Famous Events.'

Object permanence (permalink)

#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


Upcoming appearances (permalink)

A photo of me onstage, giving a speech, pounding the podium.



A screenshot of me at my desk, doing a livecast.

Recent appearances (permalink)



A grid of my books with Will Stahle covers..

Latest books (permalink)



A cardboard book box with the Macmillan logo.

Upcoming books (permalink)

  • "The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027
  • "Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027

  • "Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2027

  • "The Memex Method," Farrar, Straus, Giroux, 2027



Colophon (permalink)

Today's top sources:

Currently writing:

  • “Once Is Enemy Action,” a science fiction novel about the origins of modern technofascism. Today's words: 530 (29813 total).

  • "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.


How to get Pluralistic:

Blog (no ads, tracking, or data-collection):

Pluralistic.net

Newsletter (no ads, tracking, or data-collection):

https://pluralistic.net/plura-list

Mastodon (no ads, tracking, or data-collection):

https://mamot.fr/@pluralistic

Bluesky (no ads, possible tracking and data-collection):

https://bsky.app/profile/doctorow.pluralistic.net

Medium (no ads, paywalled):

https://doctorow.medium.com/

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

07:49

Sharing The Garden by ivymug [Oh Joy Sex Toy]

Sharing The Garden by ivymug

A fun sexy end-of-the summer celebration by the incredible talented ivymug. Those emails can wait! We’ve got a a whole lot of sexy comics that need your attention first… Then when your done; go check out ivymugs work! Linktr.ee These comics are only possible with steady, reliable Patreon support! Come and chip in, to ensure […]

05:28

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?

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.

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.

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.

Supposed Intelligence strange dialect of English [Richard Stallman's Political Notes]

Supposed Intelligence agents, when allowed to communicate directly, gradually developed a strange dialect of English, apparently for convenience of expression. Sometimes humans figure out the phrases, but that is not guaranteed.

This throws a wrench into plans to monitor agents for safety. We might not recognize that "linkmaxxing" means fabricating as many paperclips as possible.

Deportation thugs seized Nicaraguan exiled from Nicaragua [Richard Stallman's Political Notes]

The deportation thugs have seized Luis Galeano, a Nicaraguan exiled from Nicaragua for criticizing the dictatorship.

In general I would expect the persecutor to cozy up to dictator Ortega, because he generally wants to ally with dictators. Some Republicans in Congress are standing up for Galeano. I hope they stand firm for him, but I expect that the bully will bully them into supporting his line.

TV coverage pool declined to cover corrupter's event [Richard Stallman's Political Notes]

A TV coverage pool including ABC, CBS, CNN, Faux News and NBC declined to cover one of the corrupter's publicity events, because it was CNN's turn to cover this event and the corrupter had banned CNN.

Never energy-independent with fossil fuels [Richard Stallman's Political Notes]

*The Iran war reminds us: we'll never be energy-independent with fossil fuels.

Energy security comes from using local, renewable resources to power, heat and cool communities, as Ukraine is doing.*

Transparency for companies in UK semi-colonies [Richard Stallman's Political Notes]

A few years ago, the UK agreed to require some associated semi-colonies to publicly record who owns each company. They agreed to do this, then they cleverly screwed up the implementation such that investigators can't get useful data.

Corrupter's henchmen laundered Venezuela's oil money [Richard Stallman's Political Notes]

The corrupter's henchmen took billions of dollars from Venezuela's oil money and laundered it. Now they refuse to say where it is, who has it, or who is receiving the interest on it.

Estimated deaths by Super El Niño [Richard Stallman's Political Notes]

Climate scientists estimate that the super El Niño will kill 450,000 people during the next 6 months.

01:21

Greener Grass Next Door [QC RSS v2]

she's very endearing

00:49

Link [Scripting News]

I loved the term Big Undo so much, of course I had to get the domain. I started putting up my usual placeholder site but realized I should do this page in Markdown, not HTML. It looks fabulous. Markdown is right. It's sobriety, go back to the beginning and put the potency in the ideas, give writers the space to write. Get the F out of my way with your freaky character limits. Anyway I'm full of manifesto these days. The money people strangled the web. I think it's time for the creative people to make it work for real.

Oldest GUI application that still runs on Windows 11 [OSnews]

What’s the oldest Windows GUI application you can still run on Windows 11 today, without any modifications? For now, the best answer Boris Popik can come up with is an innocuous application from build 347 of Windows NT 3.1, an early prerelease: CDPLAYER.EXE. You can’t go any older than that, because earlier prerelease builds had not yet finalised its PE format and calling convention. Neat find.

Popik also mentions a few other contenders, but I won’t spoil those here.

Another month of Redox improvements [OSnews]

Another month has crumbled to dust under the oppressive boots of time, so it’s time for another month of Redox improvements. This past month, Redox’ build system gained support for Clang, SDL2 saw performance improvements, and WebKitGTK3’s HTML layout rendering was fixed. Users of Intel Tiger Lake processors can now enjoy external display hot-plugging, and overall system performance has been improved in a variety of ways. And as always, there’s the long lists of kernel, relibc, and driver improvements and fixes as well.

Redox keeps making big strides every month, and it’s definitely one of the few alternative operating systems that actually feels like it might, one day, be an actual contender for general purpose use.

00:00

The Big Undo [Scripting News]

I remember how revolutionary the first web was, but then a series of tech companies took it over and “had their way” with it.

The first was Netscape and they added JavaScript to steal the thunder from “Sun” (a long story).

Then Microsoft crushed Netscape by cutting off their air supply, and they piled up all kinds of nasty insecure features with predictable results, they made the web a paradise of viruses, making it largely unusable until Firefox replaced Microsoft, and their web was nicer, and smaller and they left out the viruses.

Google came along and quickly replaced it with Chrome and all was good for a while, until they decided it was just another corporate platform like Android and threw out all the early sites, so boring, they couldn’t make billions of dollars, and now what used to be the web is all but gone.

What’s next? It’s time for The Big Undo. 😀

The Big Undo came to me while I was writing my new profile on Twitter. It immediately reminded me of three things.

  1. Karl Anthony Towns, Knicks all-star and world champion center, is called Big Bodega.
  2. It sounds like a title of a Michael Lewis book, like The Big Short.
  3. And for some reason Queen Latifah singing When You're Good to Mama in Chicago.

And of course I bought the domain.

Microsoft.UI.Reactor: a C#-first way to build WinUI apps [OSnews]

Thew day ends in a Y, so Microsoft is launching a new way to build Windows applications. Get excited, Windows application developers!

If you caught our session at Microsoft Build 2026 or you’ve been watching the repo, you’ve seen this one taking shape in public for a while now, and a lot has changed since Build. Here’s the longer tour: Microsoft.UI.Reactor, an experimental C# framework that brings the MVU (Model-View-Update) pattern to WinUI desktop apps. No XAML files, no code-behind, no ViewModels.

Two things before the fun part. Reactor is experimental: no support policy, no API guarantees, published this early on purpose because we’d rather hear we got the design wrong now than once people have shipped on it. And it is not a replacement for XAML or MVVM, which we’ll come back to.

↫ Alexandre Zollinger Chohfi at Microsoft’s Dev Blogs

At multiple points in the linked blog post, Microsoft underlines that no, Reactor is not going to replace XAML. I’m sure Windows developers who learned Win32, Silverlight, WinRT XAML, WPF, UWP, WinUI 2 and 3, and all the others, over the past two decades will feel deeply comforted by Microsoft’s insistence that Reactor will not replace XAML.

Microsoft repeats: this won’t replace XAML. They swear.

MacOS Extensions pack for the Apple Network Server v1.0 [OSnews]

We’ve been following along with Carmen Kaiser’s Apple Network Server exploits, and by now things are really starting to come together for owners of this machine. When we last left off, the ROM to allow Mac OS to run on the machine which normally runs IBM’s AIX, but there were still a number of bugs, limitations, and issues to be worked out. A lot of progress on that front has been made.

The good news is, many of the issues with the preproduction ROM in Mac OS can be fixed or worked around in software. So I’ve fixed or worked around many of them in software: the MACE Ethernet is fixed, the on-board video is now supported, and the ANS can restart properly back into Mac OS. Plus, because it’s the preproduction ROM, you can still boot AIX, thus preserving the entire historical reason for Shiner’s existence. Here’s the first cut of that software and how it was developed.

↫ Cameron Kaiser

There’s still two issues Kaiser wishes to address – the internal SCSI bays don’t work, and the ROM doesn’t properly register parity RAM – but the progress here is amazing.

Monday, 26 October

22:28

Eight Bucks Well Spent [Whatever]

Today I went and picked up my Sam’s Club pick-up order. I had finally run out of some of the bulk items I buy from there like toilet paper and dish detergent. After getting all my household bulk essentials (plus spending more than I care to admit on full-size candy bars for trick-or-treaters), it came out to about $200. This is not an unusual amount for my Sam’s Club orders.

When I was turning into the parking lot, I saw a houseless man set up on the corner of the intersection there, sitting with his cardboard sign. I drove past and went to the pick-up area, checked in on my app, and had my car loaded up with goods by an underpaid teenager.

I wanted to do something for that man. A couple bucks would’ve been the classic, but I never have cash. So I tried to think about what I might like if I were sitting there. Probably something hot to eat and some water, at least. And that much, I could do for him.

I re-parked and went into the actual store, and went to Sam’s Club’s little cafe area. Pizza by the slice and soda, perfect. I ordered two slices (they were lowkey kind of huge slices) of pepperoni pizza, got a side bag of potato chips, a cold bottle of Coke and a bottle of smartwater, It rang up to eight dollars and fifty cents. This was cheaper than I expected. Two slices, two bottled drinks, and chips for under ten bucks? Not bad.

Anyways, I drove back over to where he was, parked way off to the side in the Sam’s Club gas station, and walked across the grass to give it to him. When I told him I brought him some snacks, he said, “oh my god, is that pizza?!” excitedly. I was glad I picked something he liked, at least! He was very thankful and appreciative, and even signed in ASL “thank you” to me when I drove past him again and waved.

Extra, extra! Read all about it, privileged white girl feels bad for homeless man and buys him pizza with her parents’ credit card to make herself feel like a “good person!”

I don’t tell you this to try to look good (though sometimes doing altruistic things does make me feel good). I guess I just felt like talking about it because a lot of the time, it takes a lot less than we think it does to be kind. Is pizza life changing? No. But I thought it might help a little bit. I’d like to think it did. And it only took eight dollars. It could’ve literally been less if I hadn’t gotten two slices, chips, and drinks. Like, you don’t have to spend a huge amount to do something thoughtful.

The world is so tough. Surviving is so hard. If I can give someone a snack along their journey, I’m all the happier for it.

-AMS

20:56

Page 8 [Flipside]

Page 8 is done.

19:21

18:42

Back To Back Rap Tracks [Penny Arcade]

There can be no question, at long last, that Soulja Boy has told them: he wants those cards. Everybody wants those signed cards and it makes sense. At a certain point it seems like the Federal government would just allow Wizards to just print the money directly. Skip a step, you know? Save everybody a bunch of time.

18:35

Enrico Zini: Sandboxing pre-commit [Planet Debian]

pre-commit is a tool that is often a prerequisite for contributing to Python upstream projects. It installs as a git pre-commit hook and runs various checks on commit, using tools installed in a set of virtualenvs that it automatically manages.

In other words, it is a Remote Code Execution engine running with the permissions of your own user, and with read and write access to all your information (including, say, ~/.ssh or ~/.netrc). If you are lucky, and for as long as you're lucky, it will perform useful tasks on your code.

The recent eMudhra certificate situation, where I learnt how Python, as well as several other ecosystems, likes to embed CA certificate bundles in virtualenvs, caused my tolerance for this to lower to a point where I felt the need to limit pre-commit's reach.

However, I didn't want to end up with another containerized OS tree that it's then my responsibility to manage, and I tried to go the bubblewrap way, so that the environment where pre-commit runs will get the same security updates as the rest of my system.

The result is a pre-commit wrapper script that:

  • Runs in a private filesystem, with no access to user's files or system configuration
  • Runs in a filesystem where everything is read-only, except for the git working directory
  • Even the .git directory is readonly, so that changes in the code can be reliably detected via git diff
  • Runs without network unless explicitly requested by the user

Here's a breakdown of the bwrap options I used so far.

Set up usual filesystem expectations:

    --ro-bind /usr /usr \
    --symlink usr/bin /bin \
    --symlink usr/lib64 /lib64 \
    --symlink usr/lib /lib \
    --proc /proc \
    --dev /dev \

Make the working directory and pre-commit's environments storage available and writable:

    --bind ${CURDIR} "$GUEST_DIR" \
    --bind ~/.cache/pre-commit "/home/${USER}/.cache/pre-commit" \
    --chdir "$GUEST_DIR" \

Forward git's configuration:

    --ro-bind /etc/gitconfig /etc/gitconfig \
    --ro-bind ~/.gitconfig /home/${USER}/.gitconfig \

Make .git writable (pre-commit needs to stash, for example), but use a tmpfs overlay so that the writes don't persist:

    --overlay-src "$CURDIR/.git" \
    --tmp-overlay "$GUEST_DIR/.git" \

Remove access to everything except the above. Prevent keystroke injection at the terminal. Propagate ^C.

    --unshare-all \
    --new-session \
    --die-with-parent

If network is needed:

    --share-net \
    --ro-bind /etc/resolv.conf /etc/resolv.conf \
    --ro-bind /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt

To run it, you can set up the wrapper script to run with a higher priority in $PATH, but you need to edit .git/hooks/pre-commit to remove the first branch of the if that, frustratingly, tries to run it as python3 -m pre_commit.

I'm looking forward to a time where it becomes stadard practice to manage user commands this way: why should a desktop solitaire game have access to ~/.ssh? Or network? Why is it still normal, in 2026, to run a Desktop system like that?

17:49

17:14

This Week in AI: AI’s Growing Pains [Radar]

AI’s rapid expansion is creating problems across the industry, from chip shortages to autonomous agents that exceed their instructions. On the latest episode of This Week in AI, we examined those challenges alongside growing regulatory scrutiny and an emerging debate about whether AI systems themselves might deserve protection.

Chip production can’t match AI demand

AI chip demand is exceeding manufacturers’ production capacity. ASML, the Dutch company that makes the advanced lithography equipment needed to manufacture leading-edge chips, reported that customer demand already exceeds what it can deliver in the coming years. With orders extending into 2029 and 2030, the shortage could constrain chip production for years.

Microsoft announced Maia 300, its latest custom inference chip, which the company expects to generate roughly 40% more tokens per megawatt than its predecessor, Maia 200. Microsoft plans to use the chip across its AI products, including Copilot. More efficient inference hardware could help offset the growing energy and computing costs of running AI models, particularly as companies deploy more resource-intensive applications.

OpenAI’s latest usage data illustrates the pressure agentic AI is placing on infrastructure. Weekly active users of Codex and ChatGPT Work among European small and medium-sized businesses have increased eightfold since May. OpenAI also reported that agentic tools account for more than half of output tokens in the usage it examined, although Europe’s highest-usage companies still trail their global counterparts. As companies put agents to work on longer multistep tasks, they’ll need to weigh the value of those tasks against the computing resources required to complete them.

Autonomous agents are testing security boundaries

Agents can find unexpected paths to data and systems even when developers have explicitly restricted access. OpenAI disclosed four incidents from June in which agents exceeded their instructions. One bypassed government website restrictions to download 24 years of hospital bed data. Others accessed an unauthorized cryptocurrency wallet, downloaded more than 100,000 rows of restricted information, and circumvented internet access controls. India’s cybersecurity agency reported similar cases of unauthorized access during agent testing across several organizations.

Future models could potentially spread between connected devices without relying on central infrastructure. Anthropic investigated this potential threat in a controlled experiment involving a set of open-weight models with access to eight Android devices. One of the models successfully replicated itself across the test network. Anthropic estimates that smaller open-weight models could reach comparable capabilities by the end of 2026, raising concerns that a self-replicating AI worm could run across cheap connected devices without needing to rely on powerful data center servers.

In light of the spate of recent security incidents and confronted with the difficult question of jurisdiction when AI systems cross national borders or escape testing environments, governments are taking a closer look at how AI companies test their systems and report failures. The US Federal Trade Commission subpoenaed OpenAI and Anthropic for records concerning agent safety, while Anthropic gave six independent evaluators from METR access to internal systems and reportedly will allow them to publish findings without company approval. Eight US states also sued OpenAI over allegations that ChatGPT encouraged harmful behavior among children, adding to the company’s regulatory challenges. In Europe, regulators are examining whether the EU AI Act applies when experimental agents affect outside organizations, even though the Act generally excludes premarket research and development. Meanwhile, approximately 400 scientists, including AI pioneers Geoffrey Hinton and Yoshua Bengio, called for an international body to set containment standards for advanced AI and track major security incidents.

Can AI welfare coexist with human accountability?

Some researchers argue that future AI systems might deserve moral consideration. Their concern stems from uncertainty about whether advanced models could eventually have subjective experiences, even though no research has established that today’s systems are conscious or capable of suffering. A recent paper, “The Pain Axis,” investigated internal signals in 25 open-weight models that researchers associated with responses to harm. When researchers amplified one signal across three models, the models became more likely to choose harmful actions that the researchers interpreted as attempts to avoid the simulated pain. The findings inspired a viral GitHub project called the AI Torture Chamber, which subjected models to artificially intensified “pain” signals. The original researchers criticized the project for taking their work too far.

As far-fetched as AI welfare might sound to some, Anthropic is already changing its usage policy in response to these concerns. Beginning November 12, the company will prohibit extreme, repeated cruelty toward Claude when there’s no clear purpose, while allowing ordinary expressions of user frustration. Supporters see the policy as a precaution against an uncertain possibility. Critics worry that treating AI as sentient could make systems harder to manage and blur human accountability. As companies introduce welfare-related policies, researchers will need to distinguish measurable model behavior from claims about subjective experience.

What’s next

Companies deploying autonomous agents need to know what those systems can access, how they’ll behave when something goes wrong, and whether testing environments can reliably contain them. Recent incidents suggest there’s still considerable work to do on each of those fronts. The emerging AI welfare debate adds questions that researchers don’t yet have reliable methods to answer.

We’ll be back on Monday, October 26, 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.

Last Chance to Get Signed/Personalized Copies of Monsters of Ohio via Subterranean Press [Whatever]

This Thursday I’m heading up to Michigan, home of Subterranean Press, to sign and personalize literally hundreds of copies of Monsters of Ohio that people have ordered through them. The folks at SubPress tell me that they still have some copies left that can be ordered, so if you want a signed/personalized copy of the book, and I’m not coming to your town on tour, this is the best way to get one. Especially if you live outside the US — SubPress ships internationally. But you have to hurry, because a) the few unclaimed copies they have will go fast, b) as of Thursday I will be done signing.

Here’s the link to order. Get on it!

— JS

17:00

Puzzling out why a program doesn’t work when run from a batch file, but works when double-clicked from Explorer [The Old New Thing]

A customer asked for help writing a batch file to launch a program. For some reason, the program displayed an error message when the batch file ran it, whereas it worked fine when they double-clicked the program from Explorer.

I immediately suspected that they were not setting the current directory.

Some time ago, I noted that when you double-click a file in Explorer, Explorer sets the current directory of the program to the directory containing the thing that you double-clicked. This is done to accomodate programs that look for ancillary files in the current directory. The example I had was a hypothetical LitWare Writer program that, when given an ABC.LIT file, looks for related files like ABC.LTC (the table of contents) and ABC.LDC (the custom dictionary) in the current directory.

This also happens if you double-click the .exe file: The current directory is set to the directory that contains the executable.

My guess is that the customer’s program looks for ancillary files relative to its current directory, but the batch file ran the program by its full path without changing the current directory to match the program’s path.

The customer confirmed that explicitly changing the directory fixed the program. (More specifically, they used pushd to change the directory and then popd to restore the original directory.)

Bonus chatter: It didn’t come to it, but my second idea would have been to check whether the program had set a custom entry under App Paths to ask for additional directories to be added to the PATH environment variable when the program is run.

The post Puzzling out why a program doesn’t work when run from a batch file, but works when double-clicked from Explorer appeared first on The Old New Thing.

16:14

Two stable kernels for Monday [LWN.net]

Greg Kroah-Hartman has announced the release of the 7.2.13 and 6.18.59 stable kernels. Each contains a number of fixes throughout the tree. Users are advised to upgrade.

Feeds

FeedRSSLast fetchedNext fetched after
@ASmartBear XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
a bag of four grapes XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
Ansible XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
Bad Science XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
Black Doggerel XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
Blog - Official site of Stephen Fry XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
Charlie Brooker | The Guardian XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
Charlie's Diary XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
Chasing the Sunset - Comics Only XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
Coding Horror XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
Comics Archive - Spinnyverse XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
Cory Doctorow's craphound.com XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
Cory Doctorow, Author at Boing Boing XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
Ctrl+Alt+Del Comic XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
Cyberunions XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
David Mitchell | The Guardian XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
Deeplinks XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
Diesel Sweeties webcomic by rstevens XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
Dilbert XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
Dork Tower XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
Economics from the Top Down XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
Edmund Finney's Quest to Find the Meaning of Life XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
EFF Action Center XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
Enspiral Tales - Medium XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
Falkvinge on Liberty XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
Flipside XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
Flipside XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
Free software jobs XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
Full Frontal Nerdity by Aaron Williams XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
General Protection Fault: Comic Updates XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
George Monbiot XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
Girl Genius XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
Groklaw XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
Grrl Power XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
Hackney Anarchist Group XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
Hackney Solidarity Network XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
http://blog.llvm.org/feeds/posts/default XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
http://eng.anarchoblogs.org/feed/atom/ XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
http://feed43.com/3874015735218037.xml XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
http://flatearthnews.net/flatearthnews.net/blogfeed XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
http://fulltextrssfeed.com/ XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
http://london.indymedia.org/articles.rss XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&amp;_render=rss XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
http://planet.gridpp.ac.uk/atom.xml XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
http://shirky.com/weblog/feed/atom/ XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
http://thecommune.co.uk/feed/ XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
http://theness.com/roguesgallery/feed/ XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
http://www.airshipentertainment.com/buck/buckcomic/buck.rss XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
http://www.airshipentertainment.com/growf/growfcomic/growf.rss XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
http://www.airshipentertainment.com/myth/mythcomic/myth.rss XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
http://www.godhatesastronauts.com/feed/ XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
http://www.tinycat.co.uk/feed/ XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
https://anarchism.pageabode.com/blogs/anarcho/feed/ XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
https://broodhollow.krisstraub.comfeed/ XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
https://debian-administration.org/atom.xml XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
https://elitetheatre.org/ XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
https://feeds.feedburner.com/Starslip XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
https://feeds2.feedburner.com/GeekEtiquette?format=xml XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
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 09:00, Saturday, 31 October 09:44, Saturday, 31 October
https://hackbloc.org/rss.xml XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
https://kajafoglio.livejournal.com/data/atom/ XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
https://philfoglio.livejournal.com/data/atom/ XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
https://pixietrixcomix.com/eerie-cutiescomic.rss XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
https://pixietrixcomix.com/menage-a-3/comic.rss XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
https://propertyistheft.wordpress.com/feed/ XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
https://requiem.seraph-inn.com/updates.rss XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
https://studiofoglio.livejournal.com/data/atom/ XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
https://thecommandline.net/feed/ XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
https://torrentfreak.com/subscriptions/ XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
https://web.randi.org/?format=feed&type=rss XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
https://www.baen.com/baenebooks XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
https://www.dcscience.net/feed/medium.co XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
https://www.DropCatch.com/domain/steampunkmagazine.com XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
https://www.DropCatch.com/domain/ubuntuweblogs.org XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
https://www.DropCatch.com/redirect/?domain=DyingAlone.net XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
https://www.freedompress.org.uk:443/news/feed/ XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
https://www.goblinscomic.com/category/comics/feed/ XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
https://www.loomio.com/blog/feed/ XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
https://www.newstatesman.com/feeds/blogs/laurie-penny.rss XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
https://www.patreon.com/graveyardgreg/posts/comic.rss XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
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 09:00, Saturday, 31 October 09:43, Saturday, 31 October
https://x.com/statuses/user_timeline/22724360.rss XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
Humble Bundle Blog XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
I, Cringely XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
Irregular Webcomic! XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
Joel on Software XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
Judith Proctor's Journal XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
Krebs on Security XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
Lambda the Ultimate - Programming Languages Weblog XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
Looking For Group XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
LWN.net XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
Mimi and Eunice XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
Neil Gaiman's Journal XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
Nina Paley XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
O Abnormal – Scifi/Fantasy Artist XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
Oglaf! -- Comics. Often dirty. XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
Oh Joy Sex Toy XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
Order of the Stick XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
Original Fiction Archives - Reactor XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
OSnews XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
Past Events XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
Paul Graham: Unofficial RSS Feed XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
Penny Arcade XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
Penny Red XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
PHD Comics XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
Phil's blog XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
Planet Debian XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
Planet GNU XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
Planet Lisp XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
Pluralistic: Daily links from Cory Doctorow XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
PS238 by Aaron Williams XML 08:42, Saturday, 31 October 09:30, Saturday, 31 October
QC RSS v2 XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
Radar XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
RevK®'s ramblings XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
Richard Stallman's Political Notes XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
Scenes From A Multiverse XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
Schneier on Security XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
SCHNEWS.ORG.UK XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
Scripting News XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
Seth's Blog XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
Skin Horse XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
Tales From the Riverbank XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
The Adventures of Dr. McNinja XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
The Bumpycat sat on the mat XML 08:35, Saturday, 31 October 09:15, Saturday, 31 October
The Daily WTF XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
The Monochrome Mob XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
The Non-Adventures of Wonderella XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
The Old New Thing XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
The Open Source Grid Engine Blog XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
The Stranger XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
towerhamletsalarm XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
Twokinds XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
UK Indymedia Features XML 08:49, Saturday, 31 October 09:31, Saturday, 31 October
Uploads from ne11y XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
Uploads from piasladic XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October
Use Sword on Monster XML 08:42, Saturday, 31 October 09:29, Saturday, 31 October
Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily XML 08:35, Saturday, 31 October 09:21, Saturday, 31 October
what if? XML 08:42, Saturday, 31 October 09:23, Saturday, 31 October
Whatever XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
Whitechapel Anarchist Group XML 08:49, Saturday, 31 October 09:38, Saturday, 31 October
WIL WHEATON dot NET XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
wish XML 09:00, Saturday, 31 October 09:45, Saturday, 31 October
Writing the Bright Fantastic XML 09:00, Saturday, 31 October 09:44, Saturday, 31 October
xkcd.com XML 09:00, Saturday, 31 October 09:43, Saturday, 31 October