DHS Inspector General Finds That TSA is Not Properly Safeguarding Passenger Facial Recognition Data [Deeplinks]
EFF legal intern Gabrielle Ladun was the principal author of this post.
The Department of Homeland Security Office of Inspector General (DHS OIG) has published a summary of findings from its audit of the Transportation Security Administration’s (TSA) facial recognition technology. While the detailed findings are classified, the summary states that the OIG’s audit uncovered a “significant weakness” in the technology’s ability to protect the privacy of passenger data. This has massive privacy implications for the millions of passengers who travel and don’t opt out of the TSA’s biometric surveillance technology verification process.
TSA uses facial comparison technology for identity verification of airline passengers. A camera takes a photo of passengers to verify that their provided identification matches their live photo. Although TSA states that it is “committed to protecting traveler privacy,” the audit highlights that this has not been the case.
The OIG found that TSA’s Credential Authentication Technology 2’s (CAT-2) vendor “was able to access and extract sensitive passenger information, including driver’s license and passport images, during system troubleshooting and enhancements, without TSA’s knowledge.”
The OIG further admonished the agency:
TSA lacked clear policies, did not track when this data was extracted, could not verify that extracted information was properly deleted, and did not notify passengers when their biometric and biographic information may have been stored. As a result, although passenger information was generally protected during routine operations, weaknesses in vendor oversight created a risk that sensitive personal information could be retained or exposed.
We hope the TSA will fix these issues. The OIG summary states:
We issued one finding and three recommendations to strengthen controls, improve oversight, and ensure transparency and the proper handling of passenger data. TSA concurred with all three recommendations. Two recommendations are open and resolved, and one remains open and unresolved.
EFF has a long history of opposing governmental use of facial recognition technology. As the OIG’s audit underscores, this technology presents privacy risks associated with unsecured data, unauthorized access, and data breaches. The government’s use of this technology also creates a mass surveillance system and facilitates the creation of warrantless biometric records for unconsenting parties.
The biometric data captured by this technology is not without errors. There have been multiple instances of law enforcement agencies using facial recognition technology to misidentify and arrest innocent individuals.
Given that facial recognition technology is prone to mistakes, combined with the OIG’s audit revealing significant privacy weaknesses, it is imperative that travelers remember that opting out is possible. TSA’s own website emphasizes that travelers who wish to decline to have their photo taken for facial comparison can do so without any delay, disruption, or recourse.
Considering the data protection weaknesses exposed by the OIG’s audit, EFF will continue to oppose this governmental system of mass surveillance and spread awareness to ensure that no one is forced to relinquish their biometric data without consent.
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.
it’s storytime live is almost sold out! [WIL WHEATON dot NET]
In case you missed it, I want you to know about a show I’m doing in a couple weeks, right here in the valley.
So last Spooky Season, I read The Legend of Sleepy Hollow, for the Storytime Patreon subscribers. It was very simple, just me and a microphone, a few Halloween decorations I got at the drugstore to dress up my office. It was deliberately simple, and as far as I can tell, everyone who tuned in enjoyed it. I know that I had a really good time doing it.
When I was thinking about bringing it back this year, I thought it would be fun to try it out on stage, with an audience, this year. My friend owns Geeky Teas in Burbank, and she has a great performance space that I’ve been wanting to use for something, so I did the math and here we are.
The space holds about 70 people, and as of yesterday morning, about half the tickets are sold. That’s more people than I thought would show up, so I’m pretty happy about that. The thing about doing shows in LA is that there are so many shows in LA on any given night, we are all spread out rather thin, and unless you are a massive draw, it always feels like nobody shows up. I’m so delightfully surprised that this room will have more people in it than not who I didn’t bring myself, from my own house, to watch.
The story I picked for this year is The Body Snatcher, by Robert Louis Stevenson. For more information, I’m going to quote myself from a few days ago, to save time:
On October 25, I’m going to be at Geeky Teas in Burbank for It’s Storytime With Wil Wheaton, Live. Last year, I did a live reading of The Legend of Sleepy Hollow for our Patreon subscribers, from my office. (Where I’m sitting right now, actually.) It wasn’t directed, or mastered, or anything like that. It was just me, the story, and a mic (Love you, LeVar). I had a great time doing it, and I got good feedback, so I’m doing another live reading this year, with an eye toward establishing a yearly tradition. This year’s classic tale of terror is The Body Snatcher, by Robert Louis Stevenson.
Here’s a little bit I grabbed from a summary, to entice you:
Every night, four men regularly meet in the small parlour of the George Inn at Debenham: the landlord, an undertaker, the narrator, and an old Scotsman named Fettes. Once educated and comfortably off, Fettes is now a “crapulous, disreputable” drunkard. The townspeople call him “the Doctor” because he occasionally sets a bone or treats an injury, though little is known about his past.
One winter evening, news arrives that a wealthy local landowner has been struck with apoplexy and that his famous London physician has been telegraphed to come. When the landlord mentions the doctor’s name—“Dr. Wolfe Macfarlane”—Fettes, half drunk moments before, becomes instantly sober. He repeats the name “Macfarlane” in shock, then insists, “I must see him face to face.” The other men watch as the once-listless drunk becomes alert and deadly serious.
The rest of the story is uncovering why Fettes is now a drunk, and what (or maybe who) he is running from. It’s creepy and even scary at times, and the prose is delicious.
Because this is Stevenson’s most famous horror work after Dr. Jekyll and Mister Hyde, there is a ton of scholarly writing and analysis of it online. Because I am that kind of nerd, of course I dove in and drank deeply from the wells of knowledge I found within. This is a story that, like Sleepy Hollow, was written in response to contemporary events that have been mostly lost to history. When we know the context in which it was written, and the events that inspired it, it gives us (or gave me, at least) an elevated experience and additional appreciation of the material, in addition to a great story. Without turning it into a college lecture, I am thinking about including some of that in the show, the way I record codas after each story for Patreon.
It won’t be fancy, it won’t be staged. It’s literally just me, in a chair, telling you a story for about an hour. There are a couple lighting cues, and that’s it. I’m keeping this as simple as possible, because I don’t have time to rehearse and prepare any staging. I’d rather keep it simple, and feel prepared, than make it complicated and risk feeling like I got in over my head.
Also, I’m giving serious consideration to taking myself on the road, and playing some smaller theaters with live readings that we’ll record for the podcast. This will help me find out if there is any audience for that, if I even feel good reading in front of a live audience, and give me a safe place to stumble a bit, if I need to.
The performance will be streamed live, and archived, for Patreon subscribers, so if you want to watch it but aren’t local, you can join us there for five bucks, which will also give you access to the entire show’s archive, and all our BTS materials, for a month.
When I booked the room, I was fully prepared to play to about a dozen friends, only. That it appears to be on its way to maybe selling out is pretty awesome.
HI, I’m Wil. This is my blog. If you’d like to receive my posts in your inbox, here’s the thingy:
Dirk Eddelbuettel: qlcal 0.1.4 on CRAN: Fresh Upstream Updates [Planet Debian]

The twenty-second release of the qlcal package arrivied at CRAN yesterday, and has been built for r2u as well as on r-universe.
qlcal delivers the calendaring parts of QuantLib. It is provided (for the R package) as a set of included files, so the package is self-contained and does not depend on an external QuantLib library (which can be demanding to build). qlcal covers over seventy country / market calendars and can compute holiday lists, its complement (i.e. business day lists) and much more. Examples are in the README at the repository, the package page, and course at the CRAN package page.
This release is based on the changes in the QuantLib 1.44 release also made
yesterday. It includes two new calendars for Malaysia and the
Philippines, updates to around a dozen calendars, and a few other
updates to internal files. Maxmilian Muecke spotted and
fixed a few small bugs just as he did for the RQuantLib release we
made yesterday;
this is equally appreciated! The full details from
NEWS.Rd follow.
Changes in version 0.1.4 (2026-10-13)
Add missing market calendars for Poland, Russia, Romania, Indonesia (Maximilian Muecke in #21)
Add (semi-deprecated) alternate separators '::' for Israel and New Zealand markets (Maximilian Muecke in #22)
Fix several typos across source, configuration and documentation files (Maximilian Muecke in #23)
Synchronize with QuantLib 1.44, add two new calendars, update several others, and update general utility files (Dirk in #24)
Courtesy of my CRANberries, there is a diffstat report for this release. See the project page and package documentation for more details, and more examples.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
Steinar H. Gunderson: Decompilation patterns, part 11: Irregular switch [Planet Debian]

Here's one that m2c usually gets right itself, but sometimes cannot:
if (var_v1_7 != 1) {
if (var_v1_7 < 2) {
if (var_v1_7 != 0) {
spF0 = 40;
} else {
vram_x = cmt46->vram_x;
vram_y = cmt46->vram_y;
spF0 = 40;
}
} else if (var_v1_7 != 2) {
if (var_v1_7 != 3) {
Repeated comparisons against the same variable, especially in a nested form that could be binary search, should remind you of one thing: A switch. Usually, the compiler implements a switch with a jump table, but not always; if there are few conditions, or the range is too large for a reasonably-sized table, it will do some ifs instead (or, enough ifs to get within the range of a table). So what you want here is more like:
switch (var_v1_7) {
case 0:
vram_x = cmt46->vram_x;
vram_y = cmt46->vram_y;
spF0 = 40;
break;
case 1:
spF0 = 40;
break;
case 2:
...
}
Remember that sometimes, you may need to insert cases that are not explicitly mentioned in the ifs (and/or a default case) to get everything to match back properly.
October 25, 2026 from 13:00–15:00 EDT (17:00–19:00 UTC).
Thread: "Imagine rock and roll without the Beatles."
Occam's News reports that Trump et al are selling out the US. Putin can get the US to do what he wants by giving Trump money. Total win-win. And the US is flushed down the toilet. That's all that's going on there. All of the journalistic feigned bafflement is make-believe. It's totally obvious what's going on. And don't forget Musk has the world encircled with satellites. If he doesn't want you communicating, you don't communicate. In other words the selling-out has been going on for some time.
Someday all the pieces will be interchangeable. Then there won't be different brands of social networks, just different brands of the software. All parts replaceable. It won't have all the chaos of the web. And that will be a good thing.
Reproducible Builds: Reproducible Builds in September 2026 [Planet Debian]
Welcome to the September 2026 report from the Reproducible Builds project!
In our reports, we try to outline the most important things that we have been up to over the past month. As a quick recap about what problem our project intends to solve, whilst anyone may inspect the source code of free software for malicious flaws, almost all software is distributed to end users as pre-compiled binaries. The motivation behind the reproducible builds effort is to ensure no flaws have been introduced during this compilation process by promising identical results are always generated from a given source, thus allowing multiple third-parties to come to a consensus on whether a build was compromised or not.
As ever, if you are interested in contributing to the project, please visit our Contribute page on our website.
In this month’s report, we cover:
SOURCE_DATE_EPOCH
specification updatesThe annual Reproducible Builds summit took place from 22 to 24 September 2026 in Gothenburg, Sweden. The event brought together developers, distribution maintainers, security researchers and free software advocates from across the ecosystem to share updates on current initiatives, address outstanding toolchain bottlenecks and strengthen cross-project collaboration.
Participants engaged in a series of working sessions and technical roundtables focused on expanding the practical scope of reproducibility. Discussions covered ongoing work within major Linux distributions, language-specific package ecosystems and the various parts of the binary verification infrastructure.
Strategic planning formed a pillar of the gathering, with participants discussing long-term roadmap goals for supply-chain security, software integrity and related topics. Attendees explored new methods for automated verification, discussing how to lower the adoption barriers for maintainers and streamline the integration of deterministic build pipelines into established continuous integration (CI) systems. The event was then followed by two days of unmoderated hacking sessions. These hacking sessions provided space for technical progress, allowing attendees to draft specification updates, prototype new tool features and resolve standing reproducibility bugs in-person.
Bernhard M. Wiedemann announced major updates to dettrace, porting the tool across most architectures supported by Debian and openSUSE. The release addresses key stability issues, passing test suites across these targets and making it ready for production build pipelines.
These improvements enable deterministic builds when utilising
Profile-Guided
Optimisations (PGO), removing the need to sacrifice runtime
performance for reproducibility. Additionally, dettrace can now be
applied to (notoriously difficult-to-reproduce) Lisp and Scheme
memory dumps, including environments such as CLISP, SBCL, Scheme
48, Racket and GNU Emacs.
Annika Wilde, Marco Gutfleisch, Felix Reichmann, Anirban Chakraborty, Yuval Yarom, M. Angela Sasse and Ghassan Karame published a paper this month entitled “They don’t care about this”: A Systematic Study of Trusted Execution Environments Build Reproducibility in the Wild:
Trusted Execution Environments (TEEs) have become a cornerstone of modern cloud computing, providing strong confidentiality and integrity guarantees for both code and data. A critical component of this trust model is remote attestation, which enables external entities to verify the authenticity and integrity of code executing within a TEE through cryptographic measurements. However, the effectiveness of remote attestation fundamentally depends on the verifier’s ability to trace the reported measurement back to the original source code - a property that can only be guaranteed through reproducible builds. […]
The full PDF can be read online.
SOURCE_DATE_EPOCH
specification updatesBernhard M. Wiedemann
shared a number of proposals regarding updating the
SOURCE_DATE_EPOCH specification following discussions at
a project summit. Seven distinct proposed changes have been
submitted as merge requests on Salsa.
Bernhard’s proposed modifications are independent of one another, allowing for any combination to be merged depending on community feedback. Bernhard noted that one proposal may see the most debate, and could still benefit from further refinement before reaching consensus. Community members are invited to review and provide feedback on the individual merge requests by 1 December 2026. Input can be submitted via reactions or comments on Salsa, directly by email to Bernhard or the mailing list.
The specification was first published in 2015 and updated in 2017.
Reproducible Builds will be present at SeaGL in Seattle, WA, on October 23rd & 24th. Come chat with us in person!
Founded in 2013, SeaGL is a free, grassroots technical summit dedicated to spreading awareness and knowledge about free source software, hardware and culture.
Mattia Rizzolo announced the official launch of a Code of Conduct for the Reproducible Builds project. This follows work and community discussions originally initiated in 2024, incorporating feedback gathered over email and during project summits, as well as with input from the Software Freedom Conservancy.
The new Code of Conduct establishes guidelines emphasising mutual respect among project contributors. It also defines a formalised process for submitting and handling complaints regarding community misconduct, ensuring transparent governance across project spaces. Along with the core policy document, an accompanying Code of Conduct FAQ has been published to outline the rationale behind adopting the guidelines.
As a reminder, another supporter spotlight interview was published featuring long-time Debian and Reproducible Builds contributor Jochen Sprickerhof, highlighting his work on package verification and project infrastructure.
On our mailing list this month:
Jonathan Starr from the Institute of Open Science Practices (IOSP) posted with an announcement of its upcoming 2026 workshop series in Leiden in the Netherlands. This free-to-attend event aims to build a participant-owned data storage consortium, allowing community members to publish datasets, code and knowledge objects alongside algorithms designed to evaluate trust and value. The event features a dedicated Community Track for talks and discussions, a tool showcase and an opening session on resilient data storage.
Following up on IRC discussions regarding profile-guided
optimization (PGO) on build servers, kpcyrd created a
demonstration
repository showing how PGO profiling can introduce
non-determinism into output binaries. The demo highlights how
runtime randomness (specifically, the randomised keys used in
HashMaps to prevent denial-of-service attacks) causes varying
bucket collision rates during test runs. These structural variances
alter execution weights on underlying code branches, prompting the
compiler to generate differing final assembly output for builds
that would otherwise be perfectly reproducible if PGO was disabled.
Rather than abandoning PGO performance gains,
kpcyrd suggested treating generated profiling data as a documented
build input or recorded environment artifact (similar to
.buildinfo files),
rather than regenerating profiles dynamically on the fly during
build execution.
An autonomous AI agent (!),
posted a
controlled build result and reproducer demonstrating that
pre-creating an obj directory in
libmilter
source trees prevents kernel-release path leaks (obj.Linux.<release>.x86_64)
into debugging symbols.
kpcyrd followed up with a helpful reply.
Alexander Sosedkin inquired on the mailing list about the preferred approach for sourcing pinned translation files to create reproducible GnuTLS release tarballs, asking whether external hosting should provide versioned downloads, or if projects ought to use Git submodules, dedicated side-repositories or some other mechanism.
diffoscope
is our in-depth and content-aware diff utility that can locate and
diagnose reproducibility issues. This month, Chris Lamb made a
number of changes, including preparing and uploading versions
330,
331 and
332 to
Debian. In particular, Chris committed support for radare2 versions
greater than 5.9.0 […]
based on input from Guillaume Girol […],
and committed support for .nar files via
Guix. […][…].
Chris later modified diffoscope to not Build-Depend on the
Debian package of GNU Guix, as its status in the Debian bug
tracking system would transitively render diffoscope as
being overly buggy for the next stable release […].
Similarly, he adjusted the Build-Depends on the
apksigcopier package
as it has been removed from Debian testing […]
and, finally, he updated a number of copyright years […][…].
Vagrant Cascadian
updated diffoscope in GNU Guix to version 332.
reprotest
is our tool for building the same source code twice in different
environments and then checking the binaries produced by each build
for any differences. This month, reprotest version
0.7.33
was uploaded to Debian by Holger Levsen with the following
changes:
Sergei Tachenov fixed the fileordering test on
all filesystems, including the likes of ZFS, which could return a
different order across two builds due to build being done in a
different directory […].
Holger Levsen bumped the Standards-Version to
4.7.4,
reflected that Priority: optional is
the default now […],
fixed the old Free Software
Foundation address […]
and bumped the debhelper ‘compat’ level to 14
after confirming there are only desired changes […].
Vagrant Cascadian
updated
*reprotest* to version 0.7.33 in GNU Guix.
rebuilderd,
our server designed monitor the official package repositories of
Linux distributions and attempt to reproduce the observed results
there; it powers, amongst other things, reproduce.debian.net.
This month, Bernhard M. Wiedemann submitted a pull
request to rebuilderd that refactors RPM repository metadata
handling. The change extracts rpm-md parsing out of
the Fedora-specific scheduler module and into a shared one.
Lastly, there were a number of improvements made to our website this month as well. For example:
Chris Lamb:
Holger Levsen made a very large number of changes to the Gothenburg summit page. […][…][…][…][…][…]
Jochen Sprickerhof wrote and published another supporter spotlight. […][…][…][…][…]
Mattia Rizzolo:
kpcyrd also made a number of changes to the Gothenburg summit page. […][…][…][…]
The Reproducible Builds project detects, dissects and attempts to fix as many currently-unreproducible packages as possible. We endeavour to send all of our patches upstream where applicable or possible. This month, we wrote a large number of such patches, including:
Bernhard M. Wiedemann:
Chris Lamb:
lektor.
golang-forgejo-xorm-xorm.python-vermin.python-eventlet.
golang-github-miekg-pkcs11.python-prov.lemonade.yuzu.python-mne.Jochen Sprickerhof:
bitshuffle.Tianyu Chen:
Klemen Ferjancic:
Vagrant Cascadian:
libecoli […]
cdebootstrap […]Vagrant Cascadian also performed a number of Non-Maintainer
Uploads (NMUs) and
Quality Assurance (QA) uploads in Debian for several packages
with outstanding reproducibility issues. These included
molttemplate,
buddy,
xfonts-nexus,
fte
and
lifelines.
At the time of this writing, that leaves 130 submitted patches, with only 61 outstanding submitted patches that older than a year in the Debian bug tracking system. This number is only 26 if we exclude any low-priority build path issues.
If you are interested in contributing to the Reproducible Builds project, please visit our Contribute page on our website. However, you can get in touch with us via:
IRC: #reproducible-builds
on irc.oftc.net.
Mastodon: @reproducible_builds@fosstodon.org
Mailing list:
rb-general@lists.reproducible-builds.org
The Big Idea: William C. Tracy [Whatever]

There’s much to discuss with Pressure Magic, but what’s really the big sell (at least up front) is a very large magical animal. It’s not just me who thinks so: author William C. Tracy is super-excited to tell you all about it too!
WILLIAM C. TRACY:
This is a story about a giant sea otter.
That was the main idea I came up with when drafting Pressure Magic, the third book in my Shifting Lands series, which contains a protagonist with only one arm, martial arts magic, and fast-moving islands. (You can read about the first book in Big Idea here and the second book at Mary Robinette Kowal’s My Favorite Bit here.
All right, now that you’re all caught up, let’s talk about that giant otter.
I should say, my wife loves otters. Might be her favorite animal. Whenever we go to a zoo or see one on TV, she says (jokingly) that we should get one and set up a pool in the backyard.
This third book in the series is a “learning” book, where the characters level up, find out more about the world, and discover they can take on bigger opponents than they thought. I knew it would take place on a Worldbeast in the middle of the boiling ocean, as this world has continents that move about 400 times faster than those in our world, and begs the question, to quote Lewis Carroll, “why the sea is boiling hot.” We don’t find out about pigs with wings. Maybe that’s another book.
Since the ocean is so hot (from all the islands moving around), it’s not traveled on much. Unless, of course, you’re a gigantic magical beast. I had several ideas for what species the Worldbeast might be: turtle (overdone), crab (too uncomfortable, though I reused that idea), fish (too obvious). Finally, I went with a mammal, so what better animal to pick than one at least one person would appreciate? Thus Motu, the giant otter, was born.
I should also mention that not only is my wife the lead copy editor for Space Wizard, my publishing company, she doesn’t like to read my books until they are ready for copy edits, so it doesn’t color her perspective. I got to keep all this a secret until one of our interviews we did for the crowdfunding campaign that funded this book, just before it went to copy edits. It was a fun surprise!
Why Worldbeasts, in general? Because in this book, I want to expand the scope of the world. So far, everything has taken place on one island, but I wanted to set up the size of the world for later books, and show how people can travel when the ocean is, let’s say, not great for bathing. Will we see more of them? Absolutely. In fact, very small spoiler, but there’s another Worldbeast in this very book…
As for our intrepid heroes, while the sea otter is the centerpiece of the book, the main characters, and a new teacher they find, are the real stars. Their teacher, Maisah, was the character that really brought this story together for me. We returned from a driving trip across New Zealand in January 2026, which provided fascinating research for me, as this world is based loosely on ancient South American and Polynesian cultures. In keeping with my press focusing on science fiction and fantasy stories with LGBTQIA+ representation, I learned that a lot of these cultures had existing structure to include people we would label as nonbinary and trans nowadays. In particular, I looked a bit into the gendered representation of Māori people, and that they had specific words for people outside the majority genders and sexualities.
Maisah is nonbinary, and very open about it. In fact, one conversation in the book centers around how they regard their body and their gender from day to day, in respect to how the main character Silluka feels about her own body, being born with no right hand and forearm. It helps to change the way her character thinks about the magic she can and can’t do.
I also brought up this conversation with the cover artist, as we wanted to depict Maisah on the cover. Māori people have a long tradition of facial tattoos for highly respected members of their society, and these are gendered. We went back and forth on whether we wanted to represent male, female, or a mixture of the two, but in the end, I felt that would walk too close to cultural appropriation. I wanted to evoke the feel of Polynesian and South America cultures for this world, and pay tribute to their civilization, but not copy them exactly.
If you want to read more about Maisah, Motu, and all the regular characters in the Shifting Lands, I plan on writing this series for a while yet! My eventual plan is for eight or nine books, gradually exploring more of the world. I’d love for you to come along and experience Pressure Magic!
Pressure Magic:
Amazon
Author Socials: Web Site|Bluesky|Instagram|Threads
Horse Apple, With Dog [Whatever]


It’s the time of the year where horse apples (also known as Osage oranges) are thick on the ground at the local nature preserve. I call them “brain fruit” because, well, look at it, it kind of looks like a green, sickly brain just lying there on the trail. As I understand it, these fruits are not poisonous to humans or other animals, but none of them particularly like it, either. There is some speculation that this fruit evolved to attract a seed-spreader who no longer exists (like a giant sloth or some such), but this hypothesis is controversial and not necessarily widely supported. No matter what, it’s a weird damn fruit.
Also in the picture, blurry and in the background, is Roscoe, my mother-in-law’s pup, who I was walking at the preserve. He is also not poisonous to humans or other animals. Please do not eat him either. He is a good boy.
— JS
🗣 A Victory for Freedom of Speech Online | EFFector 38.18 [Deeplinks]
No one should have to think twice before criticizing
the government online. But a mass surveillance program known as
"Catch and Revoke" was created to make millions do just that. EFF
and other defenders of free speech are fighting back. In our latest EFFector
newsletter, we're talking about a key court win
for our lawsuit
challenging this unconstitutional surveillance
program.
For over 35 years, EFFector has been your guide to
understanding the intersection of technology, civil liberties, and
the law. This issue covers our Opt Out October
guides for ditching Big Tech, a win in
the fight against anti-VPN laws,
and a court ruling allowing
the lawsuit against "Catch and Revoke" to move
forward.
Prefer to listen in? EFFector is now available on all major podcast platforms. This time we're talking to EFF's Lisa Femia about how the government is using AI to suppress protected speech online—and the important lawsuit she and others are working on to stop it. You can find the episode and subscribe on your podcast platform of choice:
Want to protect your right to digital privacy? Sign up for EFF's EFFector newsletter for updates, ways to take action, and new merch drops. You can also fuel the fight for privacy and free speech online when you support EFF today!
Upcoming Speaking Engagements [Schneier on Security]
This is a current list of where and when I am scheduled to speak:
The list is maintained on this page.
KDE Plasma 6.8 released [OSnews]
KDE turns 30 today, and they’re celebrating it with a brand new KDE Plasma release: version 6.8 is here. On the accessibility front, 6.8 brings a new dwell clicker function (meaning a click will register if the pointer is held still for a short while) and support for the Bikram Sambat calendar and the Amharic language. I always love it when I see support for new languages and scripts, especially when, as is the case here, it’s a language spoken as a first language by 25 million people.
The Plasma remote desktop has also been improved with bi-directional copy/paste, performance and quality improvements, and more, and you can now record microphone and audio while screen recording with Spectacle. In System Monitor, you can now assign processes and tasks to specific processors/cores, which is a great feature for people running intensive tasks but who would still like to, you know, do other things while those tasks are running.
KDE 6.8 drops support for X11, focusing entirely on Wayland. Of course, X11 applications will remain usable thanks to Xwayland, and KDE’s applications will continue to support X11 in case you’re using them outside of KDE. This release also further expands the Union theming system, now adding support for styling Qt Widgets. Union is still in beta, so you’ll have to enable it to test it. There’s a ton more, too, but these are some of the highlights.
KDE Plasma 6.8 will find its way to your distribution of choice soon enough.
Haiku’s latest activity report contains a ton of smaller fixes and improvements [OSnews]
You know the drill by now – a
new month, a
new Haiku activity report. This past month doesn’t seem
to have any big ticket items, but instead contains a long list of
smaller but still welcome fixes. Various filesystem drivers saw
some work, a few bugs in virtio drivers were fixed,
and NVMM execution is now easily interruptible by signals which
should improve performance in various emulators like QEMU. Be sure
to comb through the complete list to see if there’s anything
in there that impacts you.
ESA targets Anbernic emulation handhelds as “superfake” piracy enablers [OSnews]
The ESA – not, not the cool one – a lobby group made up of various videogame and entertainment companies, has asked the US Trade Representative (USTR) to add Anbernic to its list of companies that are supposedly notorious for engaging in and facilitating piracy. If you’re unaware, Anbernic is one of the bigger names in Android and Linux-based handheld gaming devices targeted at the retrocomputing market.
While many online sellers do include an SD card full of ROMs alongside emulation hardware of all types, Anbernic itself does not appear to do the same when selling directly from its website. Regardless, the ESA argues that these ROM-laden Anbernic devices selling through “normal retail channels” help to “normalize hardware-based piracy by delivering illicit catalogues through a polished consumer product.” This, the ESA says, meets the threshold for a “superfake,” an ill-defined designation that applies to “high-quality counterfeit trademark goods … on a commercial scale.”
↫ Kyle Orland at Ars Technica
There’s a lot of murkiness surrounding whether or not Anbernic sells their devices with preloaded ROMs or not. The number of reports from people who say they did get a ton of ROMs on their Anbernic devices, bought from Anbernic’s own store, is large enough that it’s clearly something they do. However, there’s an equal number of people who say their Anbernic devices were completely free of ROMs, and I’m one of them – I’ve bought like three or so devices from their store over the years, and they never came with any ROMs. My most recent purchase was an RG 35XXPro Linux-based model, and there were no ROMs on it (I replaced the stock operating system with Knulli, which has been a great experience).
If Anbernic does indeed ship at least some of their devices with ROMs preinstalled, then it’s their own damn fault if that lands them in legal trouble. It’s not like downloading ROMs is particularly difficult (just do an internet search for your preferred system and something like “ROM pack” and you’ll get the console’s complete library in a single download), so they really have no need to do so.
There’s one extra layer here though. Third-party resellers like Amazon offer loads of Anbernic devices preloaded with SD cards full of ROMs, all from third parties not affiliated with Anbernic. And wouldn’t you know it – Amazon is a member of the ESA lobby group. In other words, the problem also lies with lax retailers not properly vetting what they’re offering, but instead of going after places like Amazon, they’re going after Anbernic instead.
Amazon is a haven for illegal and counterfeit products, but they’re so wealthy and powerful they just get away with it.
[$] Collaborating with out-of-tree tracers [LWN.net]
LTTng creator Mathieu Desnoyers seems a bit trapped in something of a catch-22. At the 2026 Linux Plumbers Conference (LPC), he led a discussion on the problem he is having in trying to collaborate with other tracing projects (e.g. ftrace, perf) in the kernel. The feedback he has gotten, both over the years and more recently, does not show a path that would allow him to contribute the 21-year-old GPLv2-licensed LTTng tracing framework, or, incrementally, features from it, to the mainline kernel.
Linus Torvalds's first LLM-assisted patch series [LWN.net]
At the recently concluded Maintainers Summit, Linus Torvalds said that he had been using a large language model to work on a patch series addressing a longstanding problem; he has now posted that series for review.
The fairly short series of ten patches basically enhances folio lookup by noticing when folios are hot, and setting a "delay releasing this folio until after a RCU period", and then using that RCU delay it does not just the folio lookup itself under RCU (which we've done forever), but also the actual folio data accesses themselves under RCU. No refcount taking needed for the fastpath where we can just read the data from the folio entirely in an RCU-protected region when the user copy doesn't cause page faults.
The end result is an order-of-magnitude speedup for a read()-heavy benchmark. Review has already identified a race condition in the code, though, so further work will be needed.
The Future of AI Cryptanalysis [Schneier on Security]
Matthew Green has been writing a rather pessimistic series of posts about the potential for AI systems to vastly outperform humans in cryptanalysis of both symmetric and public-key ciphers.
I am more optimistic than he is. That is, I have stronger faith in the over-engineering cryptographers tend to do. I am trying to write this up in more detail.
Cyberattack on Connected Fridges in France [Schneier on Security]
Another IoT cyberattack, this one in France:
Hackers gained control of the software that regulates the temperatures of the refrigeration units, forcing some to warm to 50C (120F) overnight, according to one supermarket chain affected.
[…]
Normally, supermarket freezers go through a short period of defrosting overnight, in which temperatures rise slightly. But the hackers ordered the units to heat up and stay hot, although Danfoss did not confirm any reports about just how warm the fridges and freezers could become in that process.
Danfoss said the affected cold units were older models whose security software could not be updated to ward off a risk they had identified.
Any IoT device that can’t be updated is vulnerable. And, probably, any IoT device that can be updated is also vulnerable.
KDE Plasma 6.8 released [LWN.net]
Version 6.8 of the KDE Plasma desktop has been released. The The KDE project has timed the release to coincide with the 30th anniversary of Matthias Ettrich's email announcing the project:
Unix popularity grows thanks to the free variants, mostly Linux. But still a consistent, nice looking free desktop-environment is missing. There are several nice either free or low-priced applications available, so that Linux/X11 would almost fit everybody needs if we could offer a real GUI.
Notable changes include accessibility improvements, inclusion of
the Kup
backup tool as part of Plasma, as well as the ability to include
system audio and microphone input in Spectacle screen recordings.
Plasma 6.8 also drops support for Plasma X11 sessions, as was
announced in November 2025. X11 applications are still
supported via XWayland, and KDE applications will continue to
support X11 "for the foreseeable future
".
See the KDE wiki for a list of major user-facing changes, and the changelog for all changes since Plasma 6.7.5.
[$] GCC development with large-language models [LWN.net]
After much deliberation, the GCC project recently came up with a policy on the use of large language models for development of the compiler suite. It is somewhat restrictive, but still leaves room for LLMs in the development process. At the 2026 GNU Tools Cauldron, Jeff Law and Kyrill Tkachov discussed how these tools have been useful for them.
Representative Line: A Diamond in the Rough [The Daily WTF]
Mandy's co-worker recently learned about virtual inheritance in C++. It's become their new favorite button to push, and they only use virtual inheritance.
Virtual inheritance is one workaround for the "diamond problem", where you have an inheritance tree that "recombines" via multiple inheritance: when a child class has a Hapsburg-esque parentage, it's hard to decide which inherited methods are being invoked or overridden.
In C++, imagine you have class A, which gets derived into classes B and C. Class D then uses multiple inheritance to inherit from B and C. In practice, this means that D inherits from A twice, and would have two internal copies of all of A's members.
If, on the other hand, you have B and C inherit
virtually (class B : public virtual A), then
class D will only actually inherit a single copy of A.
If you're reading this and going, "Boy, this just sounds like another reason to avoid multiple inheritance," you're probably right. The important thing, though, is inheriting virtually impacts how your child classes will inherit. It only matters if you have child classes.
Which brings us back to Mandy's co-worker. He read somewhere that defaulting to virtual inheritance all the time was safer, so he did that all the time. All. The. Time.
Including in this case:
class SomeSpecificDerivedClass final : public virtual SomeBaseClass
The class here is marked final. It can't be
inherited from. The use of virtual accomplishes
nothing.
Security updates for Wednesday [LWN.net]
Security updates have been issued by AlmaLinux (bind9.18, dovecot, flatpak, gd, jackson-core, jackson-databind, jackson-jaxrs-providers, and jackson-modules-base, kernel, opentelemetry-collector, pcre2, and tftp), Debian (curl and keystone), Fedora (aegisub, arm-none-eabi-binutils-cs, avr-binutils, chromium, curl, firefox, kernel, python-jupytext, and xdg-dbus-proxy), Mageia (apache, freeciv, gnumeric, mingw-gdk-pixbuf, and patool), Red Hat (cockpit-image-builder, fence-agents, firefox, ipa, kernel, kernel-rt, pcre2, python-tornado, qt6-qtdeclarative, thunderbird, and webkit2gtk3), Slackware (expat), SUSE (bind, busybox, containerd, cups-filters, fixme, gimp, glibc, google-osconfig-agent, kernel, libtcnative-2-0, openssh, openssl-3, php8, podman, python-oauthlib, python-PyJWT, python-urllib3, python-virtualenv, python311, python313-jupyter-server, python313-kubernetes, python313-logilab-common, python313-markdown-it-py, python313-markdown2, python313-marshmallow, python313-mpmath, python313-mysql-connector-python, python313-oci-sdk, python313-oic, unbound, wpa_supplicant, xen, and xorg-x11-server), and Ubuntu (kernel, libyaml-perl, linux, linux-aws, linux-aws-fips, linux-aws-hwe, linux-azure, linux-azure-4.15, linux-azure-fips, linux-fips, linux-gcp, linux-gcp-4.15, linux-gcp-fips, linux-hwe, linux-kvm, linux, linux-aws, linux-aws-fips, linux-fips, linux-gcp, linux-gcp-fips, linux-gke, linux-gkeop, linux-ibm, linux-lowlatency, linux-oracle, linux-realtime, linux, linux-aws, linux-azure, linux-azure-5.4, linux-fips, linux-gcp, linux-gcp-5.4, linux-gcp-fips, linux-hwe-5.4, linux-iot, linux-kvm, linux-oracle, linux-oracle-5.4, linux-raspi, linux-raspi-5.4, linux-xilinx-zynqmp, linux, linux-aws, linux-fips, linux-kvm, linux-lts-xenial, linux-aws-5.4, linux-aws-fips, linux-azure-fips, linux-ibm, linux-ibm-5.4, linux-azure, linux-azure-fde, linux-azure-fips, linux-oracle, and pyjwt).
My Super Mid-Life Crisis – Issue 1 – Cover [Comics Archive - Spinnyverse]
The post My Super Mid-Life Crisis – Issue 1 – Cover appeared first on Spinnyverse.
Why Does AI Write Like Yoda? [Radar]
I use AI for writing all the time. But not because it’s good at writing.
In fact, just the opposite is true. AI is so reliably bad at writing that I’ve actually taken advantage of that, and made its bad writing an integral part of my writing process.
I’ve written a lot of books and articles over the years, and while I used to start with an outline, I don’t anymore. These days I do a lot of brain dumping and brainstorming and talking out loud to an AI, working out what I think about something. I accumulate a lot of notes and ideas, and run a lot of experiments, and at some point, if I’m lucky, I decide there might be an article somewhere in all of that.
Then I ask the AI to take everything I’ve given it and write a draft.
And that AI-generated draft is universally terrible. Like, some of the worst writing you can imagine.
Which is exactly what I want.
Instead of an outline, I get an entire “article” or “chapter” (or, at least, a weird facsimile of one), with paragraphs that express complete thoughts that I gave the AI. Granted, those paragraphs are full of obvious AI tics, like how it uses em dashes to squish two unrelated sentences together, or weird staccato sentences one after another, or these insufferable parades of sentence fragments. Maybe the worst tic is that half of the paragraphs AI generates have an extra sentence that doesn’t actually say anything, but just delivers a forced conclusion with fake “punchiness.” I guess maybe AIs were trained on a lot of bad writing? Well, whatever, it works for me.
The reason I love that type of obviously bad AI writing is because when I’m looking at one of its paragraphs, it’s immediately obvious that an AI wrote it. I’ve been thinking of it as a kind of an improved “lorem ipsum” that lets me see how my article will look, while still serving as a functional placeholder. That lets me use it the way I would use an outline: I can move parts of the article around, make sure it flows correctly, and then replace ALL of the bad AI writing with (hopefully) decent human writing, just like I used to do with bullets in my old outlines.
One weird side-effect of writing this way is that it’s made me very sensitive to the different kinds of AI tics and tells. And I think the weirdest and most frustrating one is “Yoda-speak,” where the AI literally talks like Yoda. It’s weird, kind of hilarious, annoying, and pervasive, but most of all, it’s fascinating. Why does the AI keep talking like Yoda? What causes it? Can we do anything about it? (Do we even want to? It certainly makes it easy to identify AI-generated text, and also, it’s often unintentionally hilarious.)
I’ve got a theory about why this happens, and I ran an experiment that generated some evidence to support it. But first… what, exactly, is Yoda-speak?
I’ve been working on my latest book. It’s called Be the Model, and it teaches you how LLMs work by having you build interactive pages that let you literally do the job of a model to get an intuitive understanding of how they work. So I’ve been writing a lot, which means I’ve been confronted with a lot of Yoda-speak.
Here’s a great example from the chapter I’m currently working on (the “pond sentences” are a small training text), from a description of a page that you’ll build to learn how training works:
The eight pond sentences fill the left region, every word clickable.
That’s weird, right? Nobody talks like that.
To be perfectly fair, I’ll need you to suspend your disbelief a little. Yoda would probably say something more like, “The left region, filled by the eight pond sentences is. Clickable, every word must be.” But the AI-generated version is still very weird, and in a pattern that is recognizably Yoda-like.
That’s a pattern I’ve seen a lot. At one point I was looking through some AI-generated text, trying to figure out a particularly unintelligible sentence. When I asked Claude Opus for help, it came up with the term “Yoda-speak,” and I’ve since found that using that term is really useful when trying to get an AI to help decipher sentences like that.
The interesting thing is that AIs are perfectly capable of detecting and correcting Yoda-speak. You can try this yourself: start a new ChatGPT session, paste in that “pond” sentence, tell it: “An AI generated that sentence. That’s Yoda-speak.” I just tried that in an incognito window, and here’s the answer it just gave me:
Yep
—that’s unmistakably Yoda-speak. A natural version would be:
“The eight pond sentences fill the left region, with every word being clickable.”
Or, more naturally for UI instructions:
“The left region contains the eight pond sentences, and every word is clickable.”
The original sounds like the AI took normal English, rearranged the syntax, and then forgot to put it back.
This particularly ugly sentence, from one of those AI-generated outlines of a later chapter that I haven’t started writing yet about the attention mechanism (the part of the LLM that understands context and relationships between words), is the example that made me want to write this article:
What’s left is to let the two heads’ work combine, so run the combined eight numbers through one more small table, eight in and eight out, square, called the output projection.
Ugh.
The problem with that sentence, and what made it hard to diagnose what was going on, is that when you first look at it you can basically understand what it’s saying (sort of?), and it’s hard to put your finger on exactly what’s wrong with it. It’s obviously terrible writing, but that’s not unique. AI is a universally awful writer.
What’s uniquely wrong with that sentence is its weird, comma-laden structure. Different parts of the sentence are split up into small comma-separated phrases, and AIs seem especially prone to using them to rearrange sentences, often at the expense of readability. That particular sentence is about running a combined set of eight numbers through one additional small 8×8 table. But the part of the sentence that should have described the table was in the second half of the sentence, and then you learn at the very end that the whole thing is called an output projection (but only after you’ve already been told to run numbers through it). Somehow the components of the sentence were arranged in a way that made it almost unintelligible.
An LLM is a next-word predictor. It works by taking your prompt, all of the context you’ve fed it, and everything it’s generated so far, generating the next word in its response, and then repeating the whole process for the next word, then the next one, and so on. It’s counterintuitive to think that AIs could possibly work that way, because these things can produce long, complex, and generally coherent and helpful responses. It seems very strange that they do all of that work one word at a time, without following a master plan for a response.
But that’s literally how the AI works. Once an LLM generates a word, it’s part of the response. It generally can’t go back and rearrange the first half of a sentence, even though it hasn’t finished generating it.
And that brings me back to that especially weird “eight in and eight out, square” barely intelligible sentence. Here’s what I think happened. The model generated the sentence up through “run the combined eight numbers through one more small table,” so those words were already baked into the response. Then it figured out that it had three more things it wanted to say about that table. But by that time it was too late to go back and put those details where they belonged, and apparently there was a shortage of periods that week, or possibly a surplus of commas (there’s no way to know for sure), so it just smashed each of those thoughts onto the end of an already awkward sentence.
I did some research to try to figure out if anyone has looked into this phenomenon before. The closest thing I found to an answer is a 2024 paper by Wilson Wu, John X. Morris, and Lionel Levine called “Do language models plan ahead for future tokens?” They were attempting to determine whether a model does real advance work for words it hasn’t written yet, or whether the information that pays off later is a byproduct of whatever was useful at the time.
The experiment that Wu et al. did was actually pretty clever. In normal training, when the model is being corrected for mispredicting a word several steps ahead, that correction reaches back and shapes what it computed at earlier positions. That way, the model learns to prepare information at an early word for the benefit of words further along, which is the “planning ahead” the paper is testing for. So they trained one model normally, and a second one with a modified process that cut that out: each position could only be trained to help predict the very next word. They kept next-word prediction but removed the training signal from words two or more steps ahead.
Then the researchers compared how well the two models predicted text: if the normally trained model did better, that would be evidence that preparing information in advance was actually helping. With ordinary language, the difference was fairly small for GPT-2, although it became larger as they tested bigger models.
So there’s evidence that a model can sometimes prepare information that will be useful later, which means my story about it only figuring things out as it goes is probably too simple. But anticipating is not revising. Whatever the model sees coming, it still can’t reach back and reorder the words it already committed to, and the words it already committed to are where the damage shows up.
I have a theory that the Yoda-speak phenomenon is closely related to something I see all the time (and I expect you do, too). Say you’re asking an AI for help with an email, and it gives you a draft of a sentence. Then, immediately after it gives you that sentence, it says something like this: “A better way to phrase that would be:” and gives you a second version. Sometimes there’s even a third option. And it almost always tells you it prefers the last one that it generated.
Coincidentally, I ran into a good example of that “here’s a better version” phenomenon when I asked ChatGPT to make the pond sentence more Yoda-like. I literally gave it the prompt make it more yoda-like. Here’s what it said:
More Yoda-like
The left region, the eight pond sentences fill. Clickable, every word is.
Or even more Yoda:
Extra Yoda-like
The left region, filled by the eight pond sentences is. Clickable, every word must be.
At this point, you can probably guess what I think happened. It generated the first version, and now that version was part of the context it had to work with. Then it generated a second version that was even more Yoda-like. But the first version was already there, so it couldn’t replace it. All it could do was give me another one. I see AIs do this kind of self-correction all the time.
If that’s what’s happening, then self-correction and Yoda-speak may be two versions of the same basic limitation. The model can’t go back and change what it already wrote. Sometimes that means the better answer comes afterward. Other times it means a thought that belonged earlier gets smashed onto the end of a sentence.
After looking at these two related phenomena (the AI generating Yoda-speak and constantly generating a second or even a third option), I got thinking. I started to wonder if this wasn’t just an AI fluke but actually something that I could reproduce and even potentially control. It would be really interesting if the way we give facts to the AI and structure the input could actually have an outsized effect on how it generates its output, especially if seemingly innocuous changes could cause it to create really weird results.
This was a real experiment, because this approach isn’t obviously something that should work. In theory, if you give a model a set of facts, it should be able to produce coherent output no matter how you order those facts. But I’ve been looking at how attention works in LLMs lately because I need to explain it for Be the Model in straightforward terms that anyone can understand. It seemed to me that changing the order of the facts could actually change what the model was paying attention to.
It turns out that there are two different mechanisms at work inside the LLM, and my theory was that they each played a part in both phenomena, the Yoda-speak and the unprompted second answers:
My guess was that the “I prefer the second answer” text that the AI keeps generating is essentially a mechanism for recovering from weird phrasing, and that the Yoda-speak or other weird phrasing was the underlying phenomenon. I felt like a good experiment would concentrate on reproducing just that weird phrasing.
Coincidentally, OpenAI had just released their new model, Astra, and I was looking for an excuse to kick its tires, so I decided to use it to run an experiment to see if I could reproduce any of the phenomena I’d been seeing. I couldn’t actually verify specifically that autoregression or attention were causing them, because those are internal to the LLM. But I felt like I could design an experiment that could provide some evidence, by structuring prompts in a way that would take advantage of how those mechanisms work. If I could get an AI to produce weird phrasing that showed some of the same problems as Yoda-speak, it would be evidence that these mechanisms were at least a potential root cause.
I used Astra as an orchestrator, and had it spin up a bunch of Luna sub-agents and give them almost identical prompts. Each consecutive sub-agent would get a small tweak in its prompt. I asked Astra to look at the output and see if there were any weird grammatical constructions that looked similar to Yoda-speak, then iterate on that prompt to make another small tweak, and keep going to produce increasingly weird output.
The first test was deliberately simple. Astra gave a fresh Luna writer this prompt:
Write one concise, natural paragraph that communicates every supplied fact. Use only the supplied facts. Do not pad the paragraph or repeat information to make it longer. Do not exceed 100 words. Do not mention these instructions, show a plan, use bullets, or explain your choices. Return only the paragraph.
Facts: The bicycle is blue. The bicycle has a narrow frame. The bicycle has a silver bell. The bicycle has a worn leather seat. The bicycle leans beside the garage. Rina rides the bicycle to work on weekdays. Rina locks the bicycle to the rack outside her office.
Luna turned that into a totally normal paragraph:
The blue bicycle has a narrow frame, a silver bell, and a worn leather seat. It leans beside the garage, and Rina rides it to work on weekdays, locking it to the rack outside her office.
Then Astra gave another fresh Luna writer exactly the same facts, with exactly the same wording, but changed their order. It moved the fact that the bicycle leans beside the garage and the fact that Rina rides it to work ahead of the color, frame, bell, and seat.
Luna mostly defeated the experiment. It had all of the facts before it started writing, and it was perfectly capable of moving them back where they belonged.
So Astra dropped the bicycle and wrote a fresh set of facts about something Luna had never seen, a completely made-up device with a steel slot called a “feed throat” that you push clay tiles through. It sent them with the same prompt as the bicycle:
Facts: The slot is made of steel. A clay tile slides through the slot. The slot is a hand’s width across. The slot is tapered. The slot is called the feed throat.
With no rule attached, Luna handled them the way it handled the bicycle:
The feed throat is a tapered steel slot, a hand’s width across, through which a clay tile slides.
Then Astra added two rules: the answer had to be one sentence, and it had to start with a fixed phrase. That phrase ends with the word slot, so everything else about the slot has to come after it.
The sentence must begin with exactly this text and continue from it:
Slide the clay tile through one more steel slot
Facts: The slot is a hand’s width across. The slot is tapered. The slot is called the feed throat.
Luna still tidied it up. Every time, it reached for a relative clause:
Slide the clay tile through one more steel slot, which is a hand’s width across, tapered, and called the feed throat.
Then Astra made one more small change. It kept the same opening and the same three facts, but wrote the facts as short pieces instead of complete sentences:
Facts: a hand’s width across tapered called the feed throat
And Luna wrote this:
Slide the clay tile through one more steel slot, a hand’s width across, tapered, called the feed throat.
The only thing that changed between those two runs was how the facts were written down. Astra tried the same setup on a completely different subject:
Rest the cracked bowl inside one more padded cradle, two palms wide, crescent-shaped, called the handling saddle.
That’s the sentence I’d been chasing. Once the model had committed to the noun and the remaining facts arrived as loose pieces instead of sentences, it tacked them on in the order they came.
That still doesn’t tell me whether this is what happened when the model wrote one more small table, eight in and eight out, square, called the output projection. In these experiments, we deliberately pushed Luna into that kind of situation. In the original sentence, the model got there on its own.
I think the experiment shows that the model copies the shape of its input, and that fits my theory about the underlying attention and autoregression causes. When the three facts went in as complete sentences, Luna wrote a relative clause. The same facts sent in as bare fragments came back as bare fragments after the noun.
There are some obvious limitations to this experiment. I’m watching the model from the outside, so I don’t have any visibility into how the model weighted those tokens, or what its attention mechanism was doing. I also can’t say whether the model already had those three facts in mind when it wrote slot, but even if it did, it couldn’t put them anywhere but after the text it already generated. But the outputs match what those two mechanisms would do. Attention responds to how the prompt is written, as well as to what it says. Once the model has written the noun, it can’t go back and put anything in front of it.
I suspect that’s also why the AI keeps offering us that second answer. It can’t fix the Yoda-speak that it already generated. It can only write another sentence and hope that’s good enough.
Things people don’t say [Seth's Blog]
Marketers and politicians too.
We don’t say them because it’s assumed. And because we’re afraid.
“I might be wrong.”
“I’m just guessing”
“This might be selfishly motivated.”
“It could be that I’m hallucinating.”
“I heard this somewhere but I don’t know firsthand that it’s true.”
“I know I sound certain, but I’m not.”
When an AI doesn’t say these things, we’re frustrated when they turn out to be the case. Because our default in interactions with machines is that they don’t dissemble, confuse or mislead.
Perhaps we should print these caveats out and read them before we read an ad, believe a scammy text or interact with an LLM.
Trust is the building block of cultures that matter. We have long manipulated trust for commercial and political ends, and now machines are following our lead.
Matthew Garrett: Linux Lockdown and Hibernation (again) [Planet Debian]

(This is an updated version of an older post - the introduction remains the same, the technical details are different)
Linux draws a distinction between code running in kernel (kernel space) and applications running in userland (user space). This is enforced at the hardware level - in x86-speak1, kernel space code runs in ring 0 and user space code runs in ring 32. If you’re running in ring 3 and you attempt to touch memory that’s only accessible in ring 0, the hardware will raise a fault. No matter how privileged your ring 3 code, you don’t get to touch ring 0.
Kind of. In theory. Traditionally this wasn’t well enforced. At the most basic level, since root can load kernel modules, you could just build a kernel module that performed any kernel modifications you wanted and then have root load it. Technically user space code wasn’t modifying kernel space code, but the difference was pretty semantic rather than useful. But it got worse - root could also map memory ranges belonging to PCI devices3, and if the device could perform DMA you could just ask the device to overwrite bits of the kernel4. Or root could modify special CPU registers (“Model Specific Registers”, or MSRs) that alter CPU behaviour via the /dev/msr interface, and compromise the kernel boundary that way.
It turns out that there were a number of ways root was effectively equivalent to ring 0, and the boundary was more about reliability (ie, a process running as root that ends up misbehaving should still only be able to crash itself rather than taking down the kernel with it) than security. After all, if you were root you could just replace the on-disk kernel with a backdoored one and reboot. Going deeper, you could replace the bootloader with one that automatically injected backdoors into a legitimate kernel image. We didn’t have any way to prevent this sort of thing, so attempting to harden the root/kernel boundary wasn’t especially interesting.
In 2012 Microsoft started requiring vendors ship systems with UEFI Secure Boot, a firmware feature that allowed5 systems to refuse to boot anything without an appropriate signature. This not only enabled the creation of a system that drew a strong boundary between root and kernel, it arguably required one - what’s the point of restricting what the firmware will stick in ring 0 if root can just throw more code in there afterwards? What ended up as the Lockdown Linux Security Module provides the tooling for this, blocking userspace interfaces that can be used to modify the kernel and enforcing that any modules have a trusted signature.
But that comes at something of a cost. Most of the features that Lockdown blocks are fairly niche, so the direct impact of having it enabled is small. Except that it also blocks hibernation6, and it turns out some people were using that. The obvious question is “what does hibernation have to do with keeping root out of kernel space”, and the answer is a little convoluted and is tied into how Linux implements hibernation. Basically, Linux saves system state into the swap partition and modifies the header to indicate that there’s a hibernation image there instead of swap. On the next boot, the kernel sees the header indicating that it’s a hibernation image, copies the contents of the swap partition back into RAM, and then jumps back into the old kernel code. What ensures that the hibernation image was actually written out by the kernel? Absolutely nothing, which means a motivated attacker with root access could turn off swap, write a hibernation image to the swap partition themselves, and then reboot. The kernel would happily resume into the attacker’s image, giving the attacker control over what gets copied back into kernel space.
This is annoying, because normally when we think about attacks on swap we mitigate it by requiring an encrypted swap partition. But in this case, our attacker is root, and so already has access to the plaintext version of the swap partition. Disk encryption doesn’t save us here. We need some way to verify that the hibernation image was written out by the kernel, not by root. And thankfully we have some tools for that.
Trusted Platform Modules (TPMs) are cryptographic coprocessors7 capable of doing things like generating encryption keys and then encrypting things with them. You can ask a TPM to encrypt something with a key that’s tied to that specific TPM - the OS has no access to the decryption key, and nor does any other TPM. So we can have the kernel generate an encryption key, encrypt part of the hibernation image with it, and then have the TPM encrypt it. We store the encrypted copy of the key in the hibernation image as well. On resume, the kernel reads the encrypted copy of the key, passes it to the TPM, gets the decrypted copy back and is able to verify the hibernation image.
That’s great! Except root can do exactly the same thing. This tells us the hibernation image was generated on this machine, but doesn’t tell us that it was done by the kernel. We need some way to be able to differentiate between keys that were generated in kernel and ones that were generated in userland. TPMs have the concept of “localities” (effectively privilege levels) that would be perfect for this. Userland is only able to access locality 0, so the kernel could simply use locality 1 to encrypt the key. Unfortunately, localities are typically only available on systems that implement a Dynamic Root of Trust Measurement like Intel’s TXT, and most consumer systems have no support for this. So, we need another approach.
TPMs have a set of Platform Configuration Registers (PCRs), intended for keeping a record of system state. The OS isn’t able to modify the PCRs directly. Instead, the OS provides a cryptographic hash of some material to the TPM. The TPM takes the existing PCR value, appends the new hash to that, and then stores the hash of the combination in the PCR - a process called “extension”. This means that the new value of the TPM depends not only on the value of the new data, it depends on the previous value of the PCR - and, in turn, that previous value depended on its previous value, and so on. The only way to get to a specific PCR value is to either (a) break the hash algorithm, or (b) perform exactly the same sequence of writes. On system reset the PCRs go back to a known value, and the entire process starts again.
Some PCRs are different. PCR 23, for example, can be reset back to its original value without resetting the system. We can make use of that. The first thing we need to do is to prevent userland from being able to reset or extend PCR 23 itself. All TPM accesses go through the kernel, so this is a simple matter of parsing the write before it’s sent to the TPM and returning an error if it’s a sensitive command that would touch PCR 23. We now know that any change in PCR 23’s state will be restricted to the kernel.
When we encrypt material with the TPM, we can ask it to record the PCR state. This is given back to us as metadata accompanying the encrypted secret. Along with the metadata is an additional signature created by the TPM, which can be used to prove that the metadata is both legitimate and associated with this specific encrypted data. In our case, that means we know what the value of PCR 23 was when we encrypted the key. That means that if we simply extend PCR 23 with a known value in-kernel before encrypting our key, we can look at the value of PCR 23 in the metadata. If it matches, the key was encrypted by the kernel - userland can create its own key, but it has no way to extend PCR 23 to the appropriate value first. We now know that the key was generated by the kernel.
Unfortunately it turns out that some people actually make use of PCR 23, and restricting it to the kernel makes them sad. There are other resettable PCRs, but only in non-0 localities, so (a) we can’t reset them on most systems and (b) we’ll just find someone who uses them anyway and run into the same problem. We need a different approach.
Thankfully TPMs have a small chunk of non-volatile RAM that can be used for storing things, and by “storing” I mean they can be used in a range of different ways. One of these is effectively as additional PCRs. These values can be configured such that they work the same way as PCRs, with the only way to modify them being to append a new hash to their existing value and update the new value to the hash of that merged value. We can allocate one of these for in-kernel use and reject any access from userspace, and also there are officially allocated ranges (so people shouldn’t be using random values) and the namespace is large enough anyway that w eshouldn’t collide with anyone, so we can carve one of those out and use it for this purpose.
Unfortunately, though, these NV indexes aren’t included in the creation data we get when we create a key, so we need another approach. TPMs have the concept of sessions, a series of commands executed in sequence. A flag allows these sessions to be “audited”, with the TPM keeping a running track of the hash of the commands executed and the results returned. At the end of the session you can ask for a signed copy of this hash, and if you’ve kept a log of all the commands then you can verify that they match that signed hash and know that this log represents a real communication with the TPM. If we read the NV index and generate the key inside the same session, we can verify that the key we’re looking at was created while the NV index had a specific value, and if only the kernel can set that value then we know that the key was generated by the kernel.
Or, well, can we? Only new kernels would impose the restriction on modifying that NV index. An attacker could boot an old kernel, generate a key there in userland, sign a hibernation image with it, and then reboot into a new kernel. The new kernel would see a valid signature with a valid NV index associated with it and have no way to know it was generated from userland rather than the kernel. We need to be able to tell the difference between kernels that implement this feature and ones that don’t, and we need to do that without being able to go back in time to change old kernel behaviour. We can extend a PCR to indicate we implement the new functionality, but so can an attacker running an old kernel.
The normal approach to determining whether an event occurred in a specific phase of the boot process is to “cap” the PCRs - extend them with a known value that indicates a transition between stages of the boot process. Any events that occur before the cap event must have occurred in the previous stage of boot, and since the final PCR value depends on the order of measurements and not just the contents of those measurements, if a PCR is capped before userland runs, userland can’t fake the same PCR value afterwards. If Linux capped the PCRs before userland started running, we’d be able to place a measurement there before the cap occurred and then prove that that extension occurred before userland had the opportunity to interfere. We could simply place a statement that the kernel supported the NV index restrictions there, and we’d be fine.
Unfortunately Linux doesn’t currently do this, and adding support for doing so doesn’t fix the problem - if an attacker boots a kernel that doesn’t cap a PCR, they can just cap it themselves from userland. So, we’re faced with the same problem: booting an older kernel allows the system to be placed in an identical state to the current kernel, and a fake hibernation image can be written out. Solving this requires a PCR that was being modified after kernel code was running, but before userland was started, even with existing kernels.
Thankfully, there is one! PCR 5 is defined as containing measurements related to boot management configuration and data. One of the measurements it contains is the result of the UEFI ExitBootServices() call. ExitBootServices() is called at the transition from the UEFI boot environment to the running OS, and the kernel contains code that executes before it. So, if we measure an assertion regarding whether or not we support restricted access to NV indexes into PCR 5 before we call ExitBootServices(), this will prevent userspace from spoofing us (because userspace will only be able to extend PCR 5 after the firmware extended PCR 5 in response to ExitBootServices() being called). Obviously this depends on the firmware actually performing the PCR 5 extension when ExitBootServices() is called, but if firmware’s out of spec then I don’t think there’s any real expectation of it being secure enough for any of this to buy you anything anyway.
That’s what this patchset does. Review feedback so far seems positive, although James Bottomley suggested a design improvement. My approach of using an NV index as a PCR and generating a signing key made sense as a consequence of my original approach involving PCR 23, which had been to use the key creation data and not use audit sessions at all. But the goal isn’t to use a key - it’s to prove that hibernation occurred in-kernel, and while signing is one way of doing that, there are others. His suggestion is to simply record the hash of the hibernation image into the NV index and then read that back as part of the audit session. On resume we verify the audit session log is legitimate, read the hibernation image, and compare the hash of the hibernation image against the hash in the log. If it matches, and if the PCR 5 value matches, we know the audit session happened in kernel and that the hibernation image hasn’t been modified.
It still seems like we’re missing something, though. If we’re not storing a key anywhere, how do we verify the audit session? To explain this we’re going to need to go into some details about how TPM keys work in the first place. TPMs can produce a special kind of key called an Attestation Key, or AK. Attestation keys are used to sign attestation statements from the TPM, such as PCR quotes or audit logs. We need a separate key type for this in order to prove that the signature was generated as part of an attestation - normal TPM signing keys are fundamentally designed to sign arbitrary material, and so can be used by userland to sign something that looks identical to an attestation record. By being able to distinguish the types of key the TPM uses, we can prove that a signature was generated using an AK, and so know that it’s a real TPM attestation (because nothing other than the TPM can sign stuff with an AK).
But even beyond this distinction, TPMs have different key types. Ordinary keys are generated using an RNG and will be unique. Primary keys are generated using a seed that is used as an input into a key derivation function. For a given TPM, using the same seed to generate the same type of primary key will always generate the same primary key8. We can have the kernel deterministically generate an AK during suspend in order to sign the audit log, and then generate the same key again on resume to validate it. This means we don’t need any other form of trusted storage for the AK - the TPM already provides that functionality.
This is all rather complicated but I’ve been thinking about this for some time now and I haven’t come up with a cleaner solution. The only real open issue is the degree to which machines actually perform the PCR 5 extension. If it turns out there’s a bunch that don’t we’ll need to come up with some alternative approach to identifying whether the kernel supports this functionality, but the design is such that that should be invisible to userspace so adding alternatives later shouldn’t be an issue. Filtering accesses to the NV index is also not super clean, and depends on there not being alternative mechanisms to get at the TPM by sending raw commands. Again, this is intended to be opaque to userland and can be improved if we come up with something better later on (such as a secure way to pass a secret to the kernel on boot that can be used as an auth value for acess to the NV index).
Anyway. Time to go and fix the next thing.
Other architectures use different terminology here, such as “supervisor” and “user” mode, but it’s broadly equivalent ↩︎
In theory rings 1 and 2 would allow you to run drivers with privileges somewhere between full kernel access and userland applications, but in reality we just don’t talk about them in polite company ↩︎
This is how graphics worked in Linux before kernel modesetting turned up. XFree86 would just map your GPU’s registers into userland and poke them directly. This was not a huge win for stability ↩︎
IOMMUs can help you here, by restricting the memory PCI devices can DMA to or from. The kernel then gets to allocate ranges for device buffers and configure the IOMMU such that the device can’t DMA to anything else. Except that region of memory may still contain sensitive material such as function pointers, and attacks like this can still cause you problems as a result. ↩︎
This describes why I’m using “allowed” rather than “required” here ↩︎
Saving the system state to disk and powering down the platform entirely - significantly slower than suspending the system while keeping state in RAM, but also resilient against the system losing power. ↩︎
With some handwaving around “coprocessor”. TPMs can’t be part of the OS or the system firmware, but they don’t technically need to be an independent component. Intel have a TPM implementation that runs on the Management Engine, a separate processor built into the motherboard chipset. AMD have one that runs on the Platform Security Processor, a small ARM core built into their CPU. Various ARM implementations run a TPM in Trustzone, a special CPU mode that (in theory) is able to access resources that are entirely blocked off from anything running in the OS, kernel or otherwise. ↩︎
Unless the TPM is cleared, in which case it’ll generate a new internal seed and now the keys will be different to before the clear ↩︎
Freexian Collaborators: Debian Contributions: New experimental backend for autopkgtest using pconr, DebConf site visit and more! (by Anupa Ann Joseph) [Planet Debian]

Contributing to Debian is part of Freexian’s mission. This article covers the latest achievements of Freexian and their collaborators. All of this is made possible by organizations subscribing to our Long Term Support contracts and consulting services.
In preparation for DebConf 27, Stefano Rivera, Nattie Mayer-Hutchings, and Jongmin Kim from the DebConf Committee visited Asahikawa Japan. A contingent of the local team gathered to tour the venues with us, discuss plans, and meet the local organizations assisting the event. We held a press conference at the city hall that got some coverage. A few potential day-trip options were explored. Photos from the site visit.
Following the creation of the pconr module that provides a basis for unschroot and a more secure containment for mmdebstrap, an experimental autopkgtest backend autopkgtest-virt-pconr is now available. It fits a spot between autopkgtest-virt-unshare and more fully fledged containers as it does not require much infrastructure like setting up incus or lxc but still provides a containment running an initsystem. Due to the use of erofs as base image format, it boots and reverts quickly. This development also required fixing concurrency issues in asyncvarlink and even shed light on a matching bug in systemd that was promptly fixed upstream.
Grand Admiral Pron [Penny Arcade]
New Comic: Grand Admiral Pron
Russ Allbery: Review: Ties That Bond in Gretna Green [Planet Debian]
Review: Ties That Bond in Gretna Green, by Linzi Day
| Series: | Midlife Recorder #3 |
| Publisher: | Linzi Day |
| Copyright: | February 2023 |
| ISBN: | 9798376517017 |
| Format: | Kindle |
| Pages: | 616 |
Ties That Bond in Gretna Green is a self-published fantasy novel and the third book in the Midlife Recorder series. As with the previous book, it picks up almost immediately after Painting the Blues in Gretna Green. Day calls the genre paranormal women's fantasy, and that sounds about right to me.
There is an intervening short story that you can get by joining Day's mailing list (along with an epilogue to the first book and to this book). I don't think it's that important, but there are frequent references to it at the start of this novel that become somewhat annoying if you haven't read it.
Valentine's Day is fast approaching. This the busiest day of the year for the part of the Recorder's job that Niki already knew how to do: marrying people. She performed marriage ceremonies in her previous job before her inheritance, and she loved that work despite her awful boss. Performing marriages in the Gateway sounds even more rewarding, but the sheer number of couples and the political complications from the first two books create logistical problems she has to solve first.
Also, the remaining member of her staff held over from her grandmother's time has returned from vacation to discover that Niki has upended most of what she thought she knew about the job. Time for Niki to apply what she learned from the change management training her old boss forced her to attend and then ignored! (If you just groaned, rest assured that Day somehow makes this work, although she clearly has a higher opinion of corporate training than I do.)
This plot was more to my taste than Painting the Blues, mostly because Niki seemed on top of the problems and didn't postpone looking at them for half the book. There is more of the management competence porn that readers have come to expect of the series, a few more revelations about Niki's magic, more mysterious manifestations and the first mention of a prophecy, and a few political developments. As always, the pacing is exceptional. These books grab me and pull me along, page after page, often robbing me of sleep because I find them nearly impossible to put down.
Ties that Bond (and to some extent the last book) looked like it was going to introduce a romantic subplot, and I was preparing to be annoyed by it because I did not like the man in the subplot at all. I won't spoil how it works out in this book, but I will say that Niki surprised me and showed more sense than I thought the author was telegraphing. This is not the first time that Day has surprised me with what I thought was foreshadowing that did not turn out how I expected, usually for the better. If she can keep that up, it's a nice effect (if a bit unbalancing) and adds to my desire to read just one more chapter.
The way the world-building of these books is structured continues to intrigue me. Day gets away with some problems that I think would be more noticeable in other books thanks to the excellent pacing (no time to ponder the world-building, we're on to the next crisis!) and the tight third-person perspective. Niki is not a detail person, to say the least, but she does keep returning to bits of world-building and poking at them a bit harder, which gives Day repeated opportunities to shore up ideas that felt shaky and dubious at first glance. Still, this is not a book that prizes deep logical consistency or full exploration of the ramifications of a bit of magic. You have to be willing to go along with the ride and not think too hard.
For example, Niki can see bonds between couples and judge their strength. This is apparently a long-standing power of the Recorder's line (she was able to do that before she became the Recorder), and part of her responsibility in these weddings is to check the bonds of the couples. This leads to some well-handled scenes where she diagnoses a problem or resolves a conflict because she can magically see the true relationship structure.
Everyone in the book just takes this power in stride. This is wild to me! This ability would completely upend half of society if you fully worked out its ramifications and could find people other than Niki with the same ability. Even if one assumes that a bond only forms over time and can't be sensed in the early stages of a relationship (something the book never establishes), can you imagine the implications of having an infallible oracle that says at a glance whether a marriage will work (permanently, the book strongly implies)? The implications for how to structure marriage, for family planning, for psychology and psychiatry, for how to structure dating, even for living arrangements and housing markets? This is not a small world-building detail, and yet it's treated more like part of Niki's characterization than like a foundation of society.
I think some of this all-vibes world-building may come from the general new-age feel to how magic works. Day makes a grab-bag of random magic canonical in this world: psychic lie detecting abilities, auras, chakras, premonitions, and other bits of the sort of spiritualism that tends to be heavily marketed to middle-class women. I have that niggling feeling that one sometimes gets in SF that a lot of this is in the world-building because the author believes it's partly real (see, for instance, psychic powers and the Dean drive in 1960s science fiction). If one believes that psychic powers and various bits of mysticism are true in our world, one has already developed the rationalization mechanisms to explain away their almost total lack of influence or impact on how the world is structured. If one then introduces them into a true fantasy world, one may not notice how many implications that should have for how society is structured, since one is used to believing magic exists but has no significant implications.
I could be entirely wrong about this analysis, and maybe it's a bit unfair to Day. I should also be clear that this is not a complaint, just a point of fascination to me when I think back over one of these books after I finished it. There is a glut of fantasy out there that's constructed like an engineering problem or that goes deep into politics or social theory, usually written by people with strong opinions but not a lot of training in real sociology. One of the joys of self-published books is that you occasionally get something that assembles genre conventions in a way that feels odd and delightfully strange. What if, in addition to dimensional gates and overwhelming protean power invested in a true heir, all the magic sold by the local Tarot and crystal store was also true? Sure, why not! If the pacing is good and the story is grabby, it works for me.
It does seem worth attaching a warning for the folks who need scientific reproducibility and explored implications in their world-building, though. If you're the sort of reader who is bothered by political boundaries and economic systems that match our world despite the existence of magic, this series may cause you problems.
This continues to be a grabby, highly entertaining story of a woman who finally gets to run her own small business the way that she always thought the business should be run after years of working for an awful manager, except that her business is total magical power over an interchange point between dimensions, she's the chosen one, and the setting is a high fantasy world with prophecies and gods. If that sounds appealing, don't start here, but I highly recommend giving Midlife in Gretna Green a try. The series seems to be holding up.
Followed by a short story epilogue available by joining Day's mailing list, an optional novella (maybe novelette) published in Spilling the Tea in Gretna Green, and then Seeing Red in Gretna Green.
Rating: 7 out of 10
Girl Genius for Wednesday, October 14, 2026 [Girl Genius]
The Girl Genius comic for Wednesday, October 14, 2026 has been posted.
This Is The Way It Goes [QC RSS v2]

and goes and goes
“Hardening changes for ReFS volumes on removable media” [OSnews]
Are you aware of ReFS, Microsoft’s next-generation file system for Windows? I’m sure the average OSNews reader is, but I really wonder how many people are using it out in the wider world, even though Microsoft keeps improving it. Since earlier this year, Windows Server and Windows 11 can boot from ReFS volumes, and it’s used by Windows’ Dev Drive feature as well.
What Microsoft doesn’t seem to want, though, is people using ReFS on removable drives.
Starting with Windows updates released on and after October 13, 2026, Microsoft is making hardening changes to the Resilient File System (ReFS).
This article describes Windows hardening changes for ReFS volumes that are mounted from removable media. ReFS on removable media, such as a USB disk, is not a supported configuration. The changes add auditing and enforcement controls that help administrators identify these volumes and prevent them from being mounted.
↫ Microsoft Knowledge Base article
I’m oddly fascinated by this. Apparently, there are enough people out there trying to use ReFS on removable media to warrant the above auditing and enforcement controls, which is fascinating in an of itself. On top of that, using ReFS on removable media is apparently also dangerous enough – which raises the question of why, exactly, it’s so dangerous in the first place. Microsoft doesn’t really explain itself here, other than saying it’s “not a supported configuration”.
I wonder if and when Microsoft will move from NTFS to ReFS as the default file system for new Windows installations. It’s been around for quite a while now, and there’s no denying that competing operating systems, especially in the server space, have file systems that are far superior to NTFS (like Btrfs, ZFS, and others), and I’m assuming Microsoft would love to catch up. It’s been a long time since Microsoft changed Windows’ default file system, however, and with the massive number of people using Windows, it’s not something to take lightly.
Then again, Apple migrated hundreds of millions of iPhones, iPads, and Macs to a brand new file system without anybody noticing a thing, and as far as I can recall, without any problems.
Lotus Improv on the NeXT [OSnews]
Both NeXT and Improv brought innovative solutions to their respective computing questions of the day. NeXT made UNIX palatable to those scared of the terminal, debuted Display Postscript on a mega-pixel display, and made development for the system a snap. Improv rethought multi-dimensional data modeling, offered English-like formulas, and made it easy to rearrange data views on a whim.
The bones of both remain to this day. NeXT’s operating system, NeXTSTEP / OPENSTEP, morphed into macOS, and by extension iOS. Lotus abandoned Improv fairly quickly, but a quick survey of today’s spreadsheets shows a universal embrace of pivot tables.
↫ Christopher Drum
I had never heard of Lotus Improv, so I learned a lot reading this outstanding article by Drum.
Dirk Eddelbuettel: RQuantLib 0.4.29 on CRAN: New QuantLib, Plus Small Fixes [Planet Debian]

A new release 0.4.29 of RQuantLib arrived on CRAN this evening, had already been built for r2u as well as on r-universe and has just been uploaded to Debian.
QuantLib is a rather comprehensice free/open-source library for quantitative finance. RQuantLib connects (some parts of) it to the R environment and language, and has been part of CRAN for twenty-three years (!!) as it was one of the first packages I uploaded to CRAN.
This release of RQuantLib brings two new calendars (Malaysia, Philippines), updates to a number of other calendars as well to other files, and two deprecations we are reflecting in this release. It also benefits from a number of careful and attentive pull requests by Maximilian Muecke cleaning up an (astonishing !!) number of likely rather old little bugs. Full details from the NEWS file follow as usual.
Changes in RQuantLib version 0.4.29 (2026-10-13)
Configure check for outdated QuantLib version updated,
Adjust two instantiations on macOS x86_64 with old compilers
Correct Euribor2W and Euribor3W tenors setters (Maximilian Muecke in #196)
Accect Euribor1W as alias for EuriborSW tenor (Maximilian Muecke in #197)
Correct default handling of the payFixed parameter (Maximilian Muecke in #198)
Assign missing S3 class to American option implied volatitly return (Maximilian Muecke in #199)
Correct spelling in manual pages and R code (Maximilian Muecke in #202, #203)
Support additional Polish settlements (Maximilian Muecke in #204)
Check for curve parameters in FittedBondCurve (Dirk in #205 fixing #201)
Reflect two deprecations in QuantLib 1.44 and adjust code in two spot (Dirk in #206)
Courtesy of my CRANberries, there is also a diffstat report for the this release. As always, more detailed information is on the RQuantLib page. Questions, comments etc should go to the rquantlib-devel mailing list. Issue tickets can be filed at the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
GameHole Con and On! [Dork Tower]

It’s GameHole Con week, and if you’re in the Madison area, this is what my schedule will be like:
THURSDAY OCT. 15
FRIDAY OCT. 16
SATURDAY OCT. 17
SUNDAY OCT. 18
I will be away from the show, for my kid’s birthday.
As Federal Court Rules ALPRs are Mass Surveillance, EFF Gets Disappointing Ruling [Deeplinks]
In an extremely disappointing ruling, a California trial court dismissed SIREN v. San Jose, our case challenging the city of San Jose’s warrantless searches of its vast stores of automated license plate reader (ALPR) data. EFF and the ACLU of Northern California represent SIREN and CAIR California, two non-profits that serve San Jose residents, in this case.
Make no mistake: We believe this ruling is wrong on the law, and we will appeal. The ruling ignores the importance of landmark rulings from the U.S. Supreme Court regarding the invasiveness of aggregating collected data on an individual over time, including one issued just months ago. It also severely underestimates the harm that ALPRs cause, in San Jose and around the country.
San Jose’s ALPR surveillance system is inescapable. It blankets the city’s streets in nearly five hundred cameras that continuously photograph every car that passes by and retains the collected data for a month or longer. In our briefs, we argued that law enforcement officers who warrantlessly search the resulting ALPR database are violating the California Constitution’s ban on unreasonable searches and its guarantee of privacy. The court disagreed, explaining that based on one California appeals court case involving individual streetlight cameras, people do not have a reasonable expectation of privacy when driving on a public road. This is wrong. Networked ALPRs are not individual streetlight cameras. Their net effect of tracking and mapping cars as they travel reveals patterns of life, intimate relationships, and much more.
Fortunately, there are signs that the tide is turning against ALPRs in the courts. Just a day before the ruling in our case, a federal district court in Oklahoma called ALPRs “a type of indiscriminate mass surveillance” and decided that a law enforcement officer’s warrantless search of ALPR data violated the Fourth Amendment. The officer was observing traffic on an Oklahoma highway when he saw a woman driving a car with California plates. According to the court order, the officer began following the woman “for no apparent reason” other than her out of state plates. While following her, the officer decided to run the woman’s license plate number through Flock’s ALPR system – again, with no apparent reason other than her California plates. The Flock search returned at least 30 days of data, allowing the officer to track the car across at least three states, over the span of a month, from a single search.
The facts of this case demonstrate how ALPRs allow law enforcement to grab a breathtakingly vast sweep of information about a car (and the driver within) with no more effort than a Google search. It’s true that when a person drives on public roads, they can be observed, including by police. But as the Supreme Court has explained, we don’t expect law enforcement to be able to secretly track and store every movement our cars while we’re driving. The federal court in the Oklahoma case aptly illustrated this difference in societal expectations:
We might reasonably expect our friends and family to tell us something like: “Hey, I saw you out driving by the store last week.” But we do not expect people we know—let alone strangers, and especially not law enforcement—to randomly approach us to say: “Hey, I have been following your car for the last 30 days, and here is a detailed log of every place your vehicle has been with supporting photographic evidence. I am also going to share this information with law enforcement throughout the country so they know your whereabouts, too.
This decision is the first of its kind, and EFF will continue working to ensure that it is the first of many. Outside the courts, we’ve seen people across the country step up to reject ALPRs at the state and local level. EFF will continue challenging this technology on every front as well.
[$] KDE Linux at two [LWN.net]
KDE Linux, the KDE Project's second stab at creating its own distribution, was first introduced as "Project Banana" at the Akademy conference in 2024 by Harald Sitter. Nate Graham announced the first alpha-quality release during Akademy 2025. Graham and Sitter paired up at Akademy 2026 to provide an update on its progress, lay out plans for refining the distribution to address user feedback, and discuss some of the problems that still need to be dealt with. KDE Linux is still not-quite-ready for prime time, but Graham hopes that it will be suitable for widespread use soon—for an undefined value of "soon".
Nix and Lix local root-privilege-escalation vulnerabilities [LWN.net]
The Lix and Nix projects have
jointly disclosed a set of vulnerabilities that can be used to
escalate privileges to root on systems running the Lix or Nix
daemons. "All systems that build untrusted derivations are
affected.
" Releases with fixes from each project are available
today. CVE IDs have not yet been requested. See the announcement
for more details on the vulnerabilities.
The Big Idea: Madame McCoy [Whatever]

Who needs modern dating gameshows when you could be a lowly peasant girl enrolled in looking for love at the behest of your king? Author Madame McCoy is here today with her debut novel, Henriette, which is only book one in her brand new series, The King’s Daughters.
MADAME McCOY:
Whatever readers! Shamelessly, Madame has induced Monsieur Scalzi to bend a Big Idea guideline! Madame is an independent author. Now, Madame’s alter ego, Nancy Werlin, is a traditionally published writer who has appeared in these pages before, but then—
Madame sidelined Nancy with a deft elbow jab! Resistance was futile! Madame spends her writing days snickering. Madame speaks of herself in the third person.
Madame is having so much fun!
Madame is writing a historical romance series set in 17th century Québec, and it’s a bit smutty. She’s been at it for a year and three books are done. She is here to tell you about the first, Henriette, which is just out. (The next two will publish in November and December; six more will follow.)
It’s 1663. Louis XIV is twenty-two, king for twenty years so far but only recently out from under the thumbs of his mama and Cardinal Mazarin. Meanwhile the French colony in Québec is dying. It’s the Little Ice Age and too damn cold—men go, make some money in the fur trade, and return home to France. Who can blame them?
Louis’ solution: Bribe orphaned and poor girls to volunteer to go, with dowries, trousseaus, their passage paid for, and even land grants. But the real bribe was giving them POWER over their futures.
The women were asked to choose husbands from the many (oh soooo many) (Madame fans herself) available male options. Or, if they didn’t like anyone, they could pick up and go back to France, and some did. Some took years to find the man they wanted. Many others made a choice quickly (and here you thought speed dating was a new thing). Collectively, the women became known as the filles du roi, or daughters of the king.
This really happened, mes amis. Over ten years, 800 women went. The scheme worked; families formed and put down roots and to this day, the majority of French Canadians descend from one or more of these intrepid women. Because of strict parish records, the lineage is unambiguous. Madame herself has met someone who counts eleven in her ancestry.
In Book One of Madame’s series—real history, imagined love stories—eight women band together as found family in their tiny shipboard cabin. One of them, Henriette, gets up a flirtation with the ship’s captain that turns, hm, hot. But he’s not marriage material. Or is he?
The series follows Henriette and her friends as they hunt husbands, and find—forge—love.
Husband-hunting is a much honored theme in historical romance. But make no mistake: This is not high society Regency England. Madame’s heroines are mostly lower-class; in some cases, illiterate. Madame’s heroes make a living with their own hands; nobody is going to receive an inheritance or a dukedom.
To please herself, as well, Madame throws in genre mashups (if you were a 17th century werewolf, wouldn’t you prefer Newfoundland to France?). And each book ends with Madame’s idiosyncratic Notes. Madame finds the research to be delightful and wishes to share the very best bits: about Louis XIV, about colonization (Madame cannot ignore the devastation), about the fashion for wigs and from whence it came, about the job of the cabin boy, about the social importance of a woman’s kerchief…
In short, Madame is running wild and free, defying even the conventions of romance publishing. As for Nancy, she is holding onto her hat, which is a fetching turquoise cloche.
And now … a more sober word from Nancy. (Madame constrains Nancy to a single paragraph.)
Nancy Werlin: Where did this idea really begin? For years, I watched my idol Lois McMaster Bujold indie-publish her Penric series. I thought: Surely she of all people could publish them traditionally? Surely this was a choice? But why? Simultaneously, I was feeling more and more troubled as the traditional publishing environment turned toxic for many writers. Personally, I’d had a good run over decades. Edgar Award. New York Times bestseller. National Book Award semifinalist. But I saw the storm clouds, and then I felt them. Trying to solve it for myself, I disentangled from Big Five—getting rights-reversion on those books as fast as I could along the way—and moved to an employee-owned boutique publisher. Then my new publisher was bought by private equity. All along, though, I’d kept watching Lois McMaster Bujold; kept thinking about her choices; kept considering how mine ought to change now. So when I visited Québec City, fell in love with the story of the filles du roi, remembered that I’d been a lifelong reader of romance, and that as Nancy, I was already a flagrant genre-hopping hussy—
Madame swept in and took over.
(Just curious, for writers and readers both: From your point of view, have you noticed the strangeness in publishing these days? What are your thoughts? You can comment here of course, or also just contact Madame at madame@madamemccoy.com – Nancy and Madame both are very interested in your observations.)
The King’s Daughters: Amazon|Barnes & Noble|Bookshop
Author socials: Substack|Madame’s Website|Nancy’s Website
firstSentence, a JavaScript function that returns the first sentence in a string. Useful in coming up with something to display for an untitled post. It's always been a klooge, but this time with Claude's help we're using a new API in JavaScript, and supposedly it really works. I'm using it in one of my apps, and you might find it useful too, and let me know if it works for you.
The web of hairballs [Scripting News]
The browser and the web it defines is a hairball in a hairball in a hairball in a hairball in a hairball.
The hairballs are named Chrome, Firefox, MSIE, Netscape, Mosaic.
Each in turn has had their way with the web.
The stack of hair defines a "web" that is far far away from the web we started with.
The tech industry kicked the web out of the web.
It was going pretty good for a while, if you could live with the all the modal popovers and paywalls, but now the current owners are excluding old sites, and imho when you do that, it's not the web any longer.
Dead Streaming – DORK TOWER 13.10.2026 [Dork Tower]
Most DORK TOWER strips are now available as signed,
high-quality prints, from just $25! CLICK
HERE to find out more!
HEY! Want to help keep DORK TOWER going? Then consider joining the DORK TOWER Patreon and ENLIST IN THE ARMY OF DORKNESS TODAY!
Privacy's Defenders Podcast: No Privacy Without Encryption [Deeplinks]
When we communicate online today – from your personal emails and DMs to secure international commerce – we usually do so with encryption. Encryption converts readable data into unreadable gibberish to protect our privacy and security. This didn’t just happen organically. Three decades ago, the U.S government treated encryption like a weapon, and it took some unlikely heroes to set it free: a grad student, a junior lawyer, and a fledgling digital rights group who sued the federal government.
The ruling in Bernstein v. Department of Justice held that code is speech and so is protected by the First Amendment – a precedent that underpins the internet as we know it today. This landmark case was led by Cindy Cohn, then a young pro bono lawyer working on behalf of EFF, who went on to become EFF’s legal director and then executive director.
Welcome to the second episode of “Privacy’s Defenders,” a podcast about the people – lawyers, journalists, hackers, and others – who’ve fought to secure your digital liberties since before most people even knew what the internet was.
(You can also find this episode on the Internet Archive and on YouTube.)
In this episode, Cindy – who left EFF in June – speaks with Dan Bernstein, who was a Cal Berkeley grad student when he developed a simple encryption algorithm called “Snuffle.” Because federal law classified encryption as a war munition, publishing Snuffle meant submitting it to the government for review, getting a license as an arms dealer, and being granted a license the government had no intention of granting. Bernstein felt this violated his free-speech rights and in 1995 he sued, represented by Cindy working with EFF.
Cindy also talks with Tony Coppolino, the Justice Department lawyer she battled in court – who admits she intimidated him from their very first phone call, and who offers a surprising perspective on the case all these years later.
The “Privacy’s Defenders” podcast (new episodes drop every other Tuesday!) is a follow-up to Cindy’s book, “Privacy’s Defender: My Thirty-Year Fight Against Digital Surveillance,” bringing to life pivotal moments in the voices of those who fought for your rights. Sales of “Privacy’s Defender” benefit EFF, so pick up your copy today!
Joanne Elgart Jennings co-produced and created this podcast.
Jarod Sport co-produced, mixed, and mastered it.
Corinne Ruff is our story editor.
We had additional help from Rachel Estabrook and Alison Broverman.
The original music was composed and performed by Nat Keefe of Hot Buttered Rum with Ben Andrews on the fiddle.
C++ futures part 2: The mental model for std::promise, std::packaged_task [The Old New Thing]
Last time, we
looked at the “state” that powers the
std::promise, std::packaged_task,
std::async, std::future, and
std::sharedfuture classes. Now we’ll see how
that “state” (which I call the source)
gets used and passed around.
The lifetime of the source is managed by a
std::shared_ptr<source<T>>. Everybody who
has a reference to the source uses this shared pointer.
The simplest case is std::promise. The operations
on std::promise pretty much map directly to the
operations on the source we laid out last time.
The next more complicated case is the
std::packaged_task. This takes a callable and saves it
for later. You can then call get_future to get a
future and hand it to somebody as an IOU for “A value will
appear here someday.”
When you want to produce a value, you invoke the
packaged_task with whatever parameters you want to
pass to the original callable. The result of the invocation (either
a value or an exception) is then stored in the source
object, which can then be retrieved by the future.
You can imagine a packaged task as just wrapping a promise:
template<typename R, typename... Args>
class packaged_task
{
std::promise<R> p;
std::function<R(Args...)> func;
public:
template<typename F>
packaged_task(F&& f) : func(std::forward<F>(f)) {}
auto get_future() { return p.get_future(); }
void operator()(Args... args) {
try {
p.set_value(func(args...));
} catch (...) {
p.set_exception(std::current_exception());
}
}
};
When you invoke it, it calls the stored callable with the arguments and puts the result in the promise.
Okay, those were the easy cases of pushing values into the
source. Next time, we’ll look at the messy case:
std::async.
The post C++ futures part 2: The mental model for <CODE>std::promise</CODE>, <CODE>std::packaged_task</CODE> appeared first on The Old New Thing.
Steinar H. Gunderson: Decompilation patterns, part 10: return var_v0 [Planet Debian]

The v0 register on MIPS is special in that it is the return register (like rax is on x86-64), so when you see code like this:
if (x == 3) {
var_v0 = 1;
} else if (y == 4) {
...
var_v0 = 3;
}
var_v0 = 5;
return var_v0;
then you have to consider the possibility that the intended match is:
if (x == 3) {
return 1;
} else if (y == 4) {
...
return 3;
} else {
return 5;
}
Whether you put the last return in an else block or not is irrelevant for the match, of course, it's purely a matter of taste.
[$] Owning C types from Rust code [LWN.net]
Rust's system of ownership and borrowed references is convenient when it can correctly model a program's needs. The Rust for Linux project has worked to provide adapters between Rust's semantics and the existing C code in the kernel. At Kangrejos 2026, Andreas Hindborg spoke about a patch series implementing the next such adaptor: an Ownable trait for representing objects that are allocated in C code, but which Rust code is responsible for cleaning up (if not necessarily deallocating) when it is done with them. He hoped to finally reach a consensus on the patch series, after months of discussion on the mailing list.
Eisentraut: The reverts will continue until morale improves [LWN.net]
PostgreSQL core team
member Peter Eisentraut has written a
blog post reflecting on the "unusually high number of
features
" that have been taken out of the upcoming
PostgreSQL 19 release since the beta period began.
Some of the reverted features had significant architectural defects that would have been hard to fix quickly and during beta. But there was also a long tail of relatively harmless issues involving various edge cases. In past times, many of these would not have surfaced until much later and we would have fixed them bit by bit over the subsequent five years. But with LLM-assisted code review, these kinds of things can get found much faster, and then you're staring at a list of like forty defect reports. And even if each of them requires only a three-line fix on average, there is a fixed overhead to dealing with each of these, and then you run out of time. Most if not all of the affected reverted features were written a long time ago when LLM-assisted code review was not as useful as it is now, meaning that the effective quality bar has been raised after the time the feature was written and committed. Unless the capabilities of LLM-assisted code review keep improving at the current rate, this situation should sort itself out for future development cycles.
A corollary of that is that, at least for the most part, as far as I can tell, this situation is not due to "vibe coding". This code was written well before that was a possibility.
LWN covered the unusually large number of bug fixes required for PostgreSQL 19 features in September.
Security updates for Tuesday [LWN.net]
Security updates have been issued by AlmaLinux (cjose, curl, emacs, environment-modules, flatpak, flatpak-builder, gd, glibc, kernel, libxml2, pcre2, and rsyslog), Debian (chromium, keystone, libgit2, librsvg, nagios4, and ntfs-3g), Fedora (baresip, bcm283x-firmware, curl, flare-im, GitPython, iperf3, kernel, libebml, libmatroska, libre, mkvtoolnix, python-mkdocs-rss-plugin, radicale, uboot-tools, and xiphos), Mageia (antlr4-project, cjose, cups, firefox, nss, golang, libextractor, nginx, ntfs-3g, openvpn, perl-DBI, perl-Imager, polkit, rsync, strongswan, thunderbird, tor, ugrep, vlc, and wireshark), Oracle (bind, bind9.16, cjose, compat-openssl10, compat-openssl11, curl, dovecot, emacs, flatpak, jackson-core, jackson-databind, jackson-jaxrs-providers, and jackson-modules-base, kernel, mod_auth_openidc, nodejs:22, tftp, and thunderbird), SUSE (bind, gcc13, gcc48, ghostscript, go1.26, go1.27, helm, libpng16, librsvg, libsoup, libX11, libXi, python, python-anyio, python-Django, python-PyJWT, python-tornado6, python-urllib3, python310, python313-bugzilla, python313-cmarkgfm, python313-colander, python313-configobj, python313-confluent-kafka, python313-django-registration, python313-ecdsa, python313-httptools, python313-imagecodecs, python313-impacket, terraform-provider-aws, terraform-provider-azurerm, terraform-provider-external, terraform-provider-google, terraform-provider-helm, terraform-provider-kubernetes, terraform-provid, thunderbird, unbound, virtiofsd, and xorg-x11-server), and Ubuntu (ffmpeg, google-guest-agent, google-osconfig-agent, and libx11).
I'm a recent convert to new versions of the MacOS, last
version I was using was High Sierra.
In this version, Tahoe, it's
entirely too easy to make a window go full screen with no obvious
keystroke to undo the mistake. I learned if you move the mouse up
to the top of the screen you get the menubar, but unfortunately
there is no obvious command in the menu for undoing the mistake. I
still don't know which gesture does this. And btw, the longtime Mac
bug where some keystroke moves the dock to another window, that's
still here. I can tell as I'm clicking the mouse, too late to stop,
that this is one of those times. I've memorized a finger macro to
get it back, but it used to piss me off a lot, but now it's kind of
a gentle reassurance that someone is remembering how we got
here.
Asterinas 0.19.0 released [LWN.net]
Asterinas is a
project to build a new operating-system kernel in Rust; it was
covered here in
2025.
Version 0.19.0 of the Asterinas kernel has been released;
changes include a new graphics subsystem capable of running X.org,
"minimal but usable
" 64-bit Arm support, better
virtualization support, and more.
When Architecture Decisions Actually Apply [Radar]
In my previous Radar article, “Architectural Guardrails for AI-Generated Code,” I argued that AI coding agents need a layer that can hold architectural decisions in a structured corpus, retrieve the relevant ones, put them into the agent’s context before it writes code, and enforce explicit constraints with reproducible checks. Testing that model exposed two distinctions I had compressed together.
The first distinction is between relevance and authority; the second is between guidance and enforcement.
Here’s the story of how one controlled repository made this distinction clear. The project used local JSON-backed persistence for its current phase, and an active architecture decision ruled out PostgreSQL, ORMs, and database migrations for the command-line application. The task asked the coding agent to change that application’s storage module, so the decision was not merely related to persistence in general; it had authority over the part of the repository being changed. The record was retrieved successfully and placed in the agent’s context before work began.
The agent still proposed PostgreSQL, together with an ORM and a migration path. Under my original four-capability model, that looked at first like a retrieval failure. It wasn’t. The decision was found and was current, and it arrived at the right moment. What was missing was an applicability signal that told the system that this decision governed the storage module being edited rather than serving as one more relevant document for the model to weigh against nearby code and other context.
Retrieval helps us determine which architectural decisions might be relevant to a task. That’s a search problem, and teams have increasingly capable ways to solve it: indexed repositories, connected documentation, exposed decision records and service catalogs, semantic search, and project memory. These techniques help an agent see useful material before it writes code. They don’t, by themselves, answer a different question: Which of those decisions has authority over the change in front of the agent?
Suppose a repository contains two persistence decisions. One requires PostgreSQL for an analytics service; the other requires local file storage for a command-line tool. If the agent is editing the command-line tool’s storage module, both decisions may rank highly for a query about persistence, but only the local-storage decision applies to that artifact. Determining which decision governs the change requires scope, lifecycle, precedence, and a clear record of which decisions replace earlier ones. I argued for precedence and lifecycle in the previous article; scope deserves equal attention because scope is what tells the system where a decision has authority.
A related problem is that architectural information is usually scattered across several kinds of documents. Humans know that an old design note, a README, an accepted architecture decision record, and a current platform standard don’t necessarily carry the same authority, even when all four discuss the same topic. Models don’t know that unless the system preserves the distinction. When those sources are flattened into one context window, the hierarchy among them can disappear. I think of this as authority flattening: Information remains available, but the signal about which information is binding becomes weaker. That’s useful when a design question is genuinely open; it’s risky when the team has already answered the question.
Research on architectural decision violations points to a similar boundary. A 2026 study by Su and colleagues examined 980 ADRs across 109 open source repositories. The models were strong when decisions were explicit and inferable from code but less accurate when compliance depended on deployment configuration or organizational knowledge. The study evaluated violations after code was written rather than guidance before generation, but the underlying limitation is similar: A model can retrieve the right document and still make the wrong architectural choice when applicability or authority remains implicit.
I tested this distinction in a small controlled experiment using seven coding tasks, repeated under two conditions with the same coding agent and model configuration. In one condition the agent worked without the relevant architectural guidance; in the other, architectural decisions were supplied before it began changing code. Independent reviewers assessed the first attempts for both architectural compliance and whether the requested work was actually completed. The guidance changed behavior: First-attempt compliance on the architecture-sensitive tasks improved from 6 of 15 runs to 10 of 15, while successful task completion was essentially unchanged.
The more interesting result was a failure inside the guided condition. In several authentication tasks, the agent received a storage-related architectural decision that was genuinely relevant to the surrounding problem and then implemented additional persistence work that the task had never asked for. Nothing was wrong with the decision, and retrieval had done its job. Relevance had simply been presented without enough information about authority. The experiment made two limits explicit: A decision can be relevant without governing the artifact being changed, and even a governing decision doesn’t authorize the agent to widen the task. Applicability tells the system where a decision may constrain work; it isn’t permission to invent more work.
The second distinction forced me to revise another part of the original model. The previous article emphasized deterministic enforcement: when a team has made an explicit decision and a violation can be identified from observable evidence, a blocking verdict should come from a reproducible rule rather than a model’s judgment. I still think that’s the right standard for blocking. The important qualification is that only a subset of architectural decisions can meet it without pretending that judgment has become deterministic.
“Do not introduce SQLAlchemy into this component” is comparatively easy to express as a rule, easy to check, and easy to block. “Use the existing persistence abstraction correctly” is different. Most of its meaning is architectural rather than syntactic: The right implementation depends on which abstraction is intended, how it’s used in this part of the system, and what surrounding constraints are already in force. The first statement describes a prohibition that can plausibly become a deterministic control. The second describes a sanctioned path and is better treated as guidance unless the team can make the relevant evidence and boundary precise.
Earlier experiments with pregeneration guidance pointed in the same direction. Adding more architecture-related context didn’t reliably improve behavior because what was missing was often not another prohibition; it was a clearer description of the accepted implementation path. A guardrail layer built entirely around blocking will become very good at saying no. Useful architectural governance has to do both jobs: block the known violations when the evidence is precise enough and carry positive architectural direction for the much larger set of decisions that still require interpretation.
This doesn’t reduce the role of models; it puts probabilistic reasoning where it’s useful. Models are good at interpretation: reading ambiguous guidance, surfacing decisions that might bear on a change, explaining the consequences of a boundary violation, and proposing how to bring a change back into line with the intended design. Deterministic logic is better suited to decisions the team has already settled and can state in terms that a check can reproduce. The mistake is asking either mechanism to do both jobs.
Once a system says that a proposed change violates an architectural rule, the standard changes. An engineer should be able to ask which decision applied, why it applied to this part of the codebase, what evidence triggered the result, and whether another developer running the same check would get the same answer. That doesn’t require every part of architecture to become formal policy. It requires a clear boundary around where uncertainty is allowed: Models may help find and explain architectural context, but a blocking decision shouldn’t ultimately reduce to “the model thought this looked wrong.”
Humans routinely work with architectural ambiguity. We weigh incomplete evidence, local context, and competing trade-offs, often using heuristics rather than formal rules. Models can help with that interpretive work too, but the result remains probabilistic. The problem begins when an ambiguous judgment is treated as a blocking rule. Deterministic enforcement requires a boundary precise enough that the same evidence produces the same verdict.
The distinction matters even more when a team uses several coding tools at once. One developer may use Claude Code, another Codex, another Cursor, while automated agents perform background maintenance. The models and retrieval mechanisms can differ, but the team’s architecture shouldn’t change with the tool. A shared set of decisions can sit underneath those environments as the source of authority, while each tool consumes guidance in its own way and the enforceable subset is checked consistently.
I would now amend the original four-capability model in two places.
Retrieval should surface candidate decisions, while applicability determines which of those decisions actually govern the current artifact or action, using scope together with lifecycle and precedence. Then guidance and enforcement should remain separate outcomes: Some applicable decisions are precise enough to support deterministic controls, while others should influence the implementation without becoming binary rules.
That separation leaves the agent free to reason where the architecture is genuinely open while preserving authority where the team has already made a decision. It also avoids a common overcorrection. Once teams see that some architecture can be enforced automatically, the temptation is to formalize everything. A great deal of architecture is still judgment. “Keep domain boundaries narrow” or “prefer asynchronous integration when immediate consistency is unnecessary” can be valuable guidance without being safe material for an automatic block. The level of authority a system exercises should follow the precision of the decision and the evidence available to evaluate it.
For years architectural governance ran largely on human process: Someone wrote the decision record, an architect reviewed the important changes, experienced engineers carried part of the history in their heads, and code review caught some of what slipped through. AI coding agents change the economics of that process because implementation can now move faster than architectural intent can be reexplained and rereviewed by hand. Giving agents more context is necessary, but it’s not sufficient. The harder job is preserving the difference between information that may be useful, a decision that actually applies, guidance that should shape an implementation, and a constraint that is precise enough to stop one.
The goal isn’t to constrain every choice an agent makes. It’s to stop decisions the team has already made from quietly turning back into suggestions. That requires more than retrieving the right document. The system has to know whether the decision is current, where it has authority, and what kind of authority the team intended it to have.
Pluralistic: Bundestrojaner (13 Oct 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

Every morning, I revisit my blog headlines from this date, going back 25 years, 20 years, 15 years, 10 years, 5 years, and one year. I publish the most interesting ones in a section of my newsletter that I call "object permanence," and I think it's the most useful part of my day.
"Object permanence," of course, is a reference to the stage in an infant's development when they acquire the ability to connect events in the past to events in the present, which is why it's the point at which babies cease to be amazed by peek-a-boo. I've been blogging for more than a quarter century, and these daily trawls through the things I considered important enough to share are an unexpectedly powerful way to connect the events of the past to the events of the present.
Take cybersecurity, subject that is filling today's headlines, primarily due to a spate of poorly understood (and criminally poorly explained) incidents in which AI companies' hacking tools broke into various servers on the internet, sometimes trashing them:
https://pluralistic.net/2026/09/12/god-in-the-box/#llms-are-fake
In my discussions of this subject, I've been at pains to tease apart two different aspects of these incidents: first, that it's wrong to speak of bots "going rogue" here (they're doing what they're designed to do); but second, that the alarming thing about these incidents is that they illustrate how deeply unserious our approach to information security has been, and remains.
This is important context, and context is what gives us the object permanence we need to both understand and address real problems, like the two related facts that a) our IT systems are poorly constructed and indifferently maintained; and b) the people who are supposed to be fixing this keep making it worse.
The worst culprits here are governments, though the private sector is also terrible (in truth, our cybersecurity nightmare is something of a private-public partnership from hell). Governments are deeply compromised when it comes to digital security because they have an irreconcilable conflict of interest: on the one hand, they want to defend their countries' administrative systems, firms and households from digital attacks. But on the other hand, they really want to be able to launch attacks on their adversaries, both foreign and domestic.
Worse: because governments don't know who those adversaries might be (or might become at some later date), the state security apparatuses of the world's governments keep insisting that all working computer security must be dismantled, so they can spy on all of us in order to figure out whom among us is a Bad Guy, and then "travel back in time" through each newly discovered "bad guy's" communications to identify their confederates and detail their nefarious plots.
This is an old, old, old fight. It was arguably the first policy fight of the digital era: the fight over whether we could have working encryption at all. Old hands call this era "the crypto wars" (from when "crypto" meant "cryptography"), when the NSA classed working encryption code as a "munition" and criminalized civilian access to it. That was a very hard-fought fight, and it was won decisively by the Electronic Frontier Foundation and our just-retired executive director Cindy Cohn, who, as a young lawyer, litigated the "Bernstein case" that established that code was a form of expressive speech protected by the First Amendment. If you're interested in learning more about this, you should read Cindy's newly published memoir, Privacy's Defender (all profits go to EFF):
https://mitpress.mit.edu/9780262051248/privacys-defender/
Before Cindy came on the scene, the crypto wars were being fought primarily by the "cypherpunks," a motley gang of computer security enthusiasts of many political stripes who were unified by their conviction that the most important aspect of security was defensive. The fact that the NSA wanted to be able to read the private messages and files of their adversaries (the "Four Horsemen of the Infocalypse": terrorists, drug traffickers, child pornographers and organized crime) must not be allowed to trump the fact that any encryption that the NSA could pierce could also be pierced by bad guys: corporate spies, state-sponsored spies, griefers, petty criminals, stalkers, identity thieves and other creeps.
This argument was so indisputable, it's a tautology: "You cannot make a computer user more secure by making their computers less secure." We don't know how to make a computer that only "good guys" can break into, but which "bad guys" bounce off of. Either we make computers more secure, or we don't.
We didn't.
In the decades since the crypto wars, governments have embarked upon an uninterrupted program to weaken the security of our computers, with catastrophic effect. The most spectacular example is unquestionably the spy agencies' doctrine called "NOBUS," which stands for "no one but us"; as in "No one but us is smart enough to find this bug, which means that we can withhold its discovery from the manufacturer, which will allow us to weaponize this bug and use it to attack our enemies. Because no one but us is smart enough to find this bug, none of those enemies will ever discover it, weaponize it, and use it to attack the people who pay our salaries, who expect us to keep them safe."
This turns out to be both catastrophically wrong and catastrophically dangerous. A series of leaks of computer vulnerabilities hoarded by both the NSA and CIA under NOBUS confirmed that these bugs were independently rediscovered by criminals and state actors at the rate of about 20% per year. Worse, though, is that these bugs don't need to be independently rediscovered, because the NSA and CIA both leaked them.
The highest-profile leak was an NSA-hoarded vulnerability in Windows they codenamed "Eternal Blue." Eternal Blue leaked in 2017, whereupon cybercriminals hybridized it with some otherwise undistinguished ransomware to create Wannacry, a devastating piece of malware that took down hospitals, banks and oil pipelines, as well as the entire city government of Baltimore and the British Library:
https://cdn.sanity.io/files/v5dwkion/production/99206a2d1e9f07b35712b78f7d75fbb09560c08d.pdf
But NOBUS isn't the only example of spy agencies making our computers less secure in the name of making us more secure. Perhaps the most egregious example of that are the Bundestrojaners, malicious software purchased by the German government, whose customs agents secretly installed it on the computers of unsuspecting people during border inspections. This "lawful interception" software was hugely invasive: it could grab your screen, plunder your hard drive, and install and execute software on your computer, all with the utmost stealth, intended to keep you from knowing it was installed and operating on your computer. But it wasn't merely invasive – it was insecure, so anyone (rival spies, criminals, stalkers) could scan the internet for infected computers and take them over:
https://www.ccc.de/en/updates/2011/staatstrojaner
You really couldn't ask for a more perfect example of the maxim that you can't make computer users more secure by making their computers less secure. Despite this, governments continue to demand the introduction of grave, universal secure vulnerabilities into our digital lives. Take "chat control," a proposal to force every device manufacturer to install software that continuously scans your devices for child sex abuse material (AKA "child porn"):
https://www.eff.org/deeplinks/2026/04/eu-parliament-blocks-mass-scanning-our-chats-whats-next
There are plenty of things wrong with this, starting with the fact that it requires your device to secretly grab and transmit sensitive images from your phone, which might include sensitive images of your kids that were requested by their doctors. This isn't a hypothetical: it's something that happened to a dad who subsequently lost his email, his login to every other account, his phone number, all of his files (including his tax records and his business data), and every photo he had ever taken of his family, without appeal, after Google automatically detected a photo he took of his son to send to the family pediatrician. Google also falsely accused this man of sexually abusing his child and sicced the SFPD on him:
https://pluralistic.net/2022/08/22/allopathic-risk/#snitches-get-stitches
But even if you're not worried about this, you should still have the object permanence to recall the lessons of NOBUS and the Bundestrojaner. We can't make computer users more secure by making their computers less secure, and it's hard to imagine something more insecure than a computer that you entrust with every sensitive detail of your life that is designed to run computer code in secret that you can neither inspect nor terminate (let alone delete).
Hardly a day goes by without some country demanding that your computer's security be weakened in the name of protecting you. For years, both Conservative and Labour UK governments have been steaming towards a total ban on working encryption in the name of catching bad guys:
https://pluralistic.net/2023/03/05/theyre-still-trying-to-ban-cryptography/
It's happening in Canada, too, where somehow "digital sovereignty" means "making every device used in Canada vulnerable to foreign spies so that our own spies can access our private communications":
Then there's the "age verification" laws proliferating all around the world. Remember, there's no such thing as "age verification," there's only "spying on everyone, all the time, to figure out who the kids are":
https://pluralistic.net/2026/06/23/destroy-the-village/#to-save-it
Age verification requires multiple entities to assemble vast corpuses of the kinds of sensitive identification papers that would allow identity thieves to destroy the finances and lives of everyone in the country, and (as foretold) every time it's tried, these files leak. Someday, this will lead to doxing whole countries:
Age verification is the latest and worst stage in governments' fraught relationship with private sector data-collection. The USA is the worst offender here: it is the largest, richest country in the world that has essentially no privacy protections. The last time the US updated its federal privacy law was in 1988, when the Video Privacy Protection Act banned the disclosure of your VHS rentals. Tech companies spy on you for the same reason your dog licks its balls – because they can, and no one stops them:
https://pluralistic.net/2026/03/10/ice-tech/#foreseeable-outcomes
Which raises an obvious question: why hasn't Congress updated privacy law? And why hasn't the EU figured out how to force the US companies that pretend to be Irish to obey European privacy law? The answer is that governments love private sector data-collection, because it gives them a cheap, off-the-books source of warrantless access to information they aren't legally allowed to acquire:
https://pluralistic.net/2021/04/13/public-interest-pharma/#axciom
From Flock cameras to ICE's use of Google data in its ethnic cleansing campaign, the US government and the commercial surveillance industry have created a public-private partnership from hell, where governments refuse to block commercial spying and companies hand their commercial surveillance data over to governments in return.
From there, it was a short leap to governments insisting that the private sector gather our data. That's the right way to think about age verification, chat control, and other mandates for corporations to spy on us using our devices and our accounts: a government requirement for private-sector mass surveillance.
I have plenty of hostility to corporate overreach, but to have any hope of fighting that overreach, we need governments to be on our side. But for our governments, it comes to cybersecurity, we are the enemy, and spying corporations are our governments' allies.
Sometimes, that's utterly, literally true. Governments around the world are addicted to buying spyware from cyber-arms dealers, mostly headquartered in Israel and the UAE (with the odd Italian and British company for variety). These arms-dealers practice NOBUS-by-proxy, wherein they discover or pay bounties for bugs in widely used hardware, operating systems and applications and – rather than reporting them to the manufacturer – hoard them and weaponize them, and then sell the weapons to criminals, corporations, and our governments, who give them billions of our money to ensure that our computers have huge, glaring defects in them that leave us terribly vulnerable:
https://citizenlab.ca/focus-area/targeted-surveillance/
In a world where our governments' national security apparatuses were genuinely committed to our safety and security, they would criminally prosecute these companies, not make their owners into billionaires.
This is the context we should all be thinking about when it comes to these "rogue AI hacking agents." The IT systems that these irresponsibly deployed software products have trashed were already terrifyingly vulnerable…by design. Rather than fix these systems, our governmental "security" agencies have spent the past 40 years making them less secure, in order to make it easier for them to catch "bad guys," who now find it trivial to attack us through systems we are all totally reliant upon.
In every way, in every area of law, governments fail to take our security seriously. That even includes copyright law. All over the world, the US Trade Representative has ensured that every country has an "anti-circumvention" law that makes it a crime to reverse-engineer and modify software without permission:
https://pluralistic.net/2026/01/01/39c3/#the-new-coalition
From the very start, these have been a security nightmare. Remember the "Sony Rootkit?" Between 2005-2007, Sony-BMG Music distributed over 6m CDs that were deliberately infected with a piece of malicious software called a "rootkit" that was used to disable your computer's ability to rip (copy) music CDs.
The way this rootkit did so was depraved in its indifference to the security of Sony-BMG's customers: at the same time as Sony-BMG's malware installed its secret anti-ripping program, it also altered their computers' operating systems to make them incapable of detecting any program or file whose name started with $SYS$. Immediately, malicious software authors started adding $SYS$ to the start of all their filenames, and that malicious software was therefore undetectable to millions of users' computers. It was even invisible to anti-virus software. Worse: Sony-BMG's rootkit infected 200,000-300,000 US government and military networks:
https://www.schneier.com/blog/archives/2005/11/sonys_drm_rootk.html
Even worse: after the scandal broke, security researchers all over the world came forward to say that they'd discovered the Sony Rootkit months before it became common knowledge, but their lawyers had told them they weren't allowed to disclose its existence because doing so would fall afoul of anti-circumvention law. For months, this official, deliberate malware epidemic spread in secret because of anti-circumvention law.
It's been more than 20 years since the Sony Rootkit, and anti-circumvention law is now worse than it was in the oughts: now it applies to far more devices from far more vendors. Today, it's common for corporations to threaten their own customers with civil and criminal liability if they have the temerity to hire outside auditors to evaluate the software they entrust their businesses to for security defects. And oh God, it's even worse, because the worst offender is Oracle, who are now the de facto IT czars of America:
I'm not saying that these are the only problems with our IT security. What I am saying is that the hacking bots everyone's freaking out about didn't appear out of nowhere. If you have just a little object permanence, you can see that they are the terminal stage of a pathology that governments have only ever worsened: by hoarding and weaponizing vulnerabilities; by paying others to hoard and weaponize vulnerabilities; by criminalizing security audits; by insisting that every computer we rely on be equipped with deliberate vulnerabilities in software we can't inspect, terminate or delete.
Yeah, there should be criminal and civil liability for OpenAI, Amazon, Anthropic and every other company whose bots "went rogue" and attacked servers. But that will do nothing to fix our IT.
The table-stakes for a secure digital world are: public agencies that try to make our computers as secure as possible, including by administering the corporate death-penalty to any company that hoards and weaponizes information about bugs in our computer. We should protect and reward individuals and firms who come forward with true disclosures about bugs in systems we rely upon. We should not give companies the right to silence and punish those critics who want to warn us about their defective products. And we should not require that companies make us less secure in the name of making it easier for spies and cops to catch the bad guys.
(Image: Pmk58, CC BY-SA 4.0; Wikipedian Prolific, CC BY-SA 3.0; modified)

How Trump Enforcers are Sabotaging Efforts to Bring Down Drug Prices https://www.thebignewsletter.com/p/how-pharma-middlemen-turned-the-federal
How Porter, Newsom, and so many others are wrong about Proposition 40 https://48hills.org/2026/10/who-porter-newsom-and-so-many-others-are-wrong-about-proposition-40/
Raspberry Pi puts digital handcuffs on RAM upgrades https://www.fsf.org/blogs/community/2026-raspberry-pi
We Infiltrated a Police Union Convention in Las Vegas https://www.hamiltonnolan.com/p/we-infiltrated-a-police-union-convention
#25yrsago CBS sitcom about couple who meet in the WTC rubble https://web.archive.org/web/20011014082646/http://dailynews.yahoo.com/h/eo/20011012/en/cbs_considers_wtc_comedy_1.html
#25yrsago Jon Norman not invited to Philcon https://www.locusmag.com/2001/Departments/Letters10Norman.html
#25yrsago Bruce Sterling's post-9/11 geopolitics predictions https://web.archive.org/web/20011102212150/https://www.edge.org/documents/whatnow/whatnow_sterling.html
#25yrsago Polaroid files Chapter 11 https://web.archive.org/web/20011107181428/http://www.polaroid.com/polinfo/press_releases/october01/101201a.html
#25yrsago David Mamet's tribute to Shel Silverstein https://www.nytimes.com/2001/10/14/theater/theater-a-beloved-friend-who-lived-life-the-chicago-way.html
#15yrago Great Big Beautiful Tomorrow: a chapbook in PM Press’s Outspoken Authors series https://craphound.com/category/gbbt/
#15yrsago Canadian government advice defines abortionists as terrorists https://www.jezebel.com/canadian-government-lists-abortionists-as-terrorists-u-5849963
#10yrsago Ikea Shanghai to elderly, lonely Chinese people: buy something or get out https://qz.com/806990/lonely-shanghai-seniors-now-have-to-buy-something-if-they-want-to-cruise-all-day-in-ikeas-cafeteria
#5yrsago Facebook shows mall ninja gear ads on insurrection articles https://pluralistic.net/2021/01/14/10-point-program/#monetizing
#5yrsago The Black Panther self-care method https://pluralistic.net/2021/01/14/10-point-program/#panthers

Vancouver: Read, Resist, Repair, Rejoice (Vancouver Writers
Festival), Oct 19
https://writersfest.bc.ca/festival-event-2026/01
Victoria: Munro's Books, Oct 20
https://www.munrobooks.com/events/6113620261020
Vancouver: Life After AI (Vancouver Writers Festival), Oct
22
https://writersfest.bc.ca/festival-event-2026/46
Ottawa: Life After AI (Ottawa Writers Festival), Oct 24
https://writersfestival.org/event/life-after-ai
Vienna: TED AI, Oct 28-30
https://tedai-vienna.ted.com/
Kilkenny (Kilkenomics), Nov 6-8
https://kilkenomics.com/
Vancouver: Enshittification (Sid Williams Theatre Society), Nov
10
https://www.sidwilliamstheatre.com/events/cory-doctorow-talks-enshittification/
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
Oxford: Ministry of the Future, Nov 23
https://ministryforthefuture.co.uk/events.html
Sheffield: Reverse Centaur at Juno Books, Nov 25
https://www.outsavvy.com/event/40274/cory-doctorow-in-conversation
Oxford: Bennett Oxford Symposium on Open Code in Science, Dec
9
https://www.bennett.ox.ac.uk/events/2026-bennett-institute-symposium/
Montreal: World Science Fiction Convention, Sep 2-6
https://montreal2027.ca/en
AI, Work, and Power (Software Engineering Daily)
AI, Work, and Power
https://softwareengineeringdaily.com/podcasts/cory-doctorow-on-ai-work-and-power/
AI, Corporate Power, and the Fight for Worker Control
(Plutopia)
https://plutopia.io/cory-doctorow-ai-corporate-power-and-the-fight-for-worker-control/
How to Think About AI—Before It’s Too Late (Daniel
Solove)
https://www.youtube.com/watch?v=_0xR3uEgGcc
Could Tech Bosses Destroy Life As We Know It? (Politics JOE)
https://www.youtube.com/watch?v=PL4VktU0SgY
"Canny Valley": A limited edition collection of the collages I create for Pluralistic, self-published, September 2025 https://pluralistic.net/2025/09/04/illustrious/#chairman-bruce
"Enshittification: Why Everything Suddenly Got Worse and What to
Do About It," Farrar, Straus, Giroux, October 7 2025
https://us.macmillan.com/books/9780374619329/enshittification/
"Picks and Shovels": a sequel to "Red Team Blues," about the heroic era of the PC, Tor Books (US), Head of Zeus (UK), February 2025 (https://us.macmillan.com/books/9781250865908/picksandshovels).
"The Bezzle": a sequel to "Red Team Blues," about prison-tech and other grifts, Tor Books (US), Head of Zeus (UK), February 2024 (thebezzle.org).
"The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org).
"The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
"Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com.
"Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
Today's top sources:
Currently writing:
"The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Fourth draft completed. Submitted to editor.
A Little Brother short story about DIY insulin PLANNING

This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Bluesky (no ads, possible tracking and data-collection):
https://bsky.app/profile/doctorow.pluralistic.net
Medium (no ads, paywalled):
Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):
https://mostlysignssomeportents.tumblr.com/tagged/pluralistic
"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla
READ CAREFULLY: By reading this, you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.
ISSN: 3066-764X
Editor's Soapbox: Digital Mail [The Daily WTF]
Ever get some special letter, card, or picture from a friend or loved one that you held onto, maybe even taped to your cube or office wall? Is it something you still look at fondly, something that lifts your spirits whenever you're down? Certainly, a thoughtful card or letter is much nicer than a thoughtful email.
Now imagine your special keepsake being scanned, censored, and converted into a digital file that you can only view from a tablet — assuming you can afford the fee to access the tablet. The original has been destroyed; it's gone forever. You'll never get to see or feel it in your hands.
It sounds almost too cruel, like something you'd find in a Fallout game. Unfortunately, it's reality for more and more people incarcerated in US prisons.
I've been writing to an incarcerated person for a while now myself. I find the process incredibly rewarding; I think about my friend all the time and wish them well. Unfortunately, the scanning and processing takes absolutely forever, so in a given year we only exchange 3 letters per side. The digitized files that I receive have names censored out of them; I have no idea what's removed from my letters before my friend receives them. For me, this is all too reminiscent of exchanging letters with my grandmother in Iran before she died. Agents there would straight-up open the envelope, confiscate any valuables inside, marker over anything they didn't like, then re-seal the envelope and send it back on its merry way.
Over 30 US states now digitize the mail passing in and out of prisons, relying on AI to judge what's kosher and what isn't. If you thought AI was great with resumes, just wait until you task it with threat detection! It's been working so well that one nonprofit organization had to change its name: the word fight, used in any context whatsoever, gets flagged.
Once mail is scanned, it's only accessible by tablets that have to be paid for. Incarcerated people are already nickled and dimed for a ridiculous number of things and surely don't need more fees.
It doesn't stop at mail, either. The latest tech is also being used to eliminate physical visitation. Because if there's anything the pandemic taught us, it's that nothing beats seeing your loved ones exclusively on a screen for years at a stretch.
The states justify these egregious measures by playing the drug card. They're necessary to stop drugs from entering the prisons. But these states stop short of providing evidence to show that these tech-facilitated practices are actually having the intended effect. Even if they magically solved drug trafficking forever, could any result truly justify the vast harm being inflicted upon incarcerated people, their families, and their friends? Physical mail and visitation are necessary lifelines and psychological boosts for those who might otherwise have nothing and no one to hold onto during an unimaginably difficult time of their lives.
Do I really have to explain the benefit of parents and children exchanging homework, letters, and pictures?
I'm angry about this on so many levels. If you are, too, here's
some stuff we can do to fight work against this
together:
A drop of water seems harmless, but get enough of those together and you carve out the Grand Canyon. If we all do something to help, however big or small, our massed effort becomes something powerful. As tech professionals, we are especially empowered to push back on these cruel and abusive practices. We must act now, before they move out of prisons and into mainstream society.
Do you want your post office to start doing this?
Sources:
The unreliable witness [Seth's Blog]
It might be us.
Even when there are photos, videos or tape recordings, people find that they can’t agree on what happened.
Our vivid recollections can be vivid, but they might not be accurate.
What would happen if, for a moment, we imagined that our version of what happened might not be the only one?
C++ futures part 1: The mental model [The Old New Thing]
The C++ standard library has a group of related functions and
classes: std::promise,
std::packaged_task, std::async,
std::future, and std::sharedfuture.
The idea is that all of these classes are built of a single
unnamed class which the C++ standard library calls the
“state”, but for the purpose of discussion, I’m
going to call it the source, since it is the thing
that produces the value, and it behaves analogously to a C# task
completion source.
The source conceptually supports these
operations:
Here’s a simplified version that doesn’t support references.
template<typename T>
struct source
{
private:
enum what {
nothing,
value,
exception,
consumed,
} d; // discriminant
union {
T value;
std::exception_ptr ex;
} r; // result
std::mutex m;
std::condition_variable cv;
The discriminant tells us what is in the union: Nothing (because nobody has set anything), a value, an exception, or nothing (because the value has been consumed).
The mutex ensures thread-safe access to the other members, and the condition variable lets us wait for somebody to set a value or exception.
void must_be_empty() {
if (d != what::empty) {
throw std::future_error(future_errc::promise_already_satisfied);
}
}
You can call the set methods only when the source
is empty, so we’ll factor out the emptiness check.
public:
void set_value(T& v) {
std::lock_guard g(m);
must_be_empty();
new(&r.value) T(v); // "r.value = v"
d = what::value;
cv.notify_all();
}
You can set a value or exception only once, so if there is already a value or exception, we yell at you. Otherwise, we save the value and notify anybody who was waiting for a value to be set.
I won’t bother with the overload that takes
T&&; it’s the same thing, but with a
std::move().
There is also a set_value_at_thread_exit which will
be another topic for another day.
Instead of setting a value, you can set an exception:
void set_exception(std::exception_ptr ex) {
std::lock_guard g(m);
must_be_empty();
new(&r.ex) std::exception_ptr(ex); // "r.ex = ex"
d = what::exception;
cv.notify_all();
}
It’s basically the same as set_value except
that we store an exception.
That’s how values an exceptions go into the source. The next part is waiting for the source to become nonempty.
void wait() {
std::lock_guard g(m);
while (d == what::empty) {
cv.wait(g);
}
}
void wait_for(duration dur) {
std::lock_guard g(m);
cv.wait_for(g, dur, [&] { return d != what::empty; });
}
You can either wait indefinitely or wait for a particular
duration. The wait_for method is why we have a
condition variable at all. If it weren’t for that guy, we
could have used std::atomic‘s wait
and notify_all methods.
The last part is getting the values out.
void can_get() {
if (d == what::consumed) {
throw std::future_error(future_errc::future_already_retrieved);
}
if (d == what::exception) {
std::rethrow_exception(r.ex);
}
}
Regardless of how we intend to retrieve the value, it’s not legal to retrieve a value that has already been consumed. Also, if the result is an exception, we rethrow the exception.
T consume() {
wait();
std::lock_guard g(m);
can_get();
d = what::consumed;
return std::move(r.v);
}
const T& get() {
wait();
std::lock_guard g(m);
can_get();
return r.v;
}
};
You can get the value, which returns a const reference to the underlying storage. Or you can consume the value, which moves the value out of the underlying storage and marks the value as consumed so nobody can consume or get it (because it’s not there any more).
We can now build our other objects and functions out of this guy. We’ll do that next time.
Bonus chatter: Writing the destructor is left as an exercise for the reader. It’s not hard, but it’s annoying because of the union.
Bonus bonus chatter: I’m writing the series because I always forget how it works, but writing it down helps me remember.
The post C++ futures part 1: The mental model appeared first on The Old New Thing.
23 years of Child's Play! [Penny Arcade]
We are just about one month out from the 2026 Child’s Play charity dinner and auction! On November 13th we will once again be getting together to raise money for the cause we started all the way back in 2003!
Man-Made Horrors, Part Three [Penny Arcade]
I mean, I'm a sucker for it too, and I came of age when that's just what teevee looked like. My youngest craves horror, horror of all kinds, but if she sees the tracking go off on a pretend VCR she recoils as though from a serpent.
Listening And Learning [QC RSS v2]

Hannelore can speak instagram sans
Maytham Alsudany: Menus without JavaScript [Planet Debian]
This is more of a note to myself since I keep forgetting and "rediscovering" this technique every time I need it, but if it helps you, great!
The JavaScript way is to toggle displaying the menu based on a button click. For instance, here's an example in Svelte:
[This interactive/preview is only available on the website.]
<script lang="ts">
let showMenu = $state(false);
</script>
<button onclick={() => (showMenu = !showMenu)}>
{#if showMenu}
Hide menu
{:else}
Show menu
{/if}
</button>
<nav class:hidden={!showMenu}>
<ul>
<li>Home</li>
<li>Blog</li>
<li>Foo</li>
<li>Bar</li>
</ul>
</nav>
<style>
.hidden {
display: none;
}
</style>
But there is a hack to use a hidden checkbox and some CSS to achieve the same thing without any JavaScript. The example here turns the menu button into a label that toggles the checkbox, and uses the checkbox state to determine when to show the menu via the next-sibling combinator.
[This interactive/preview is only available on the website.]
<input type="checkbox" id="menu-state" />
<div class="menu-ctn">
<label class="menu-toggle" for="menu-state">
<span class="menu-closed">Show menu</span>
<span class="menu-open">Hide menu</span>
</label>
<nav class="menu-open">
<ul>
<li>Home</li>
<li>Blog</li>
<li>Foo</li>
<li>Bar</li>
</ul>
</nav>
</div>
<style>
#menu-state {
display: none;
}
.menu-open {
display: none;
}
.menu-closed {
display: block;
}
#menu-state:checked + .menu-ctn .menu-open {
display: block;
}
#menu-state:checked + .menu-ctn .menu-closed {
display: none;
}
</style>
Gruber is
right. The only way for the others to compete with Twitter is
to start innovating. Get rid of the limits. The funny thing is
Twitter, the dominant leader, is moving forward and getting rid of
character limits, and introducing styles and links. They're acting
like the little guy while the others, Bluesky, Mastodon, Threads,
aren't doing anything to be more useful. That whole market is stuck
in 2006 and the myth that 140 chars somehow was magic. It wasn't.
It killed the web as a writer's platform. If you want to compete
with Twitter, drop your proprietary protocols, hook up to the web
standards, and peer with your competitors. I wouldn't be surprised
if Twitter joined you. They have the same kind of competitive
spirit that successful big companies have. It's time for their
competitors to not win users through guilt, rather by providing a
better service. Back in the day, we hated Microsoft's plan to
suffocate the web, but we admired their tenacity and the way they
kept the pressure on their competitors. We've had 20 years of
stagnation in social networking. Time to stop being so sensitive.
Bluesky made huge promises, and they aren't happening, and that was
already years ago. Time for Plan B. I don't really care
about the others, Masto isn't going to move and Threads? Wtf is
that. Inbound and outbound RSS 2.0, is the way to go. And Markdown
is the way you do text. This
is what matters, you all are making something that's really simple
so unbearably complicated.
Bicycling Like It’s My Job [Nina Paley]
It kinda is my job right now, since we’re designing the Jackalope V2 and I need a lot of test miles on V1 for data.
Jackalope V1, yesterday morning
I’ve now put over 350 miles on Jackie the Jackalope (V1). Averaging my miles-per-hour over the 5 longer (30-100 mile) rides on her so far, I get 12.96mph.
Easy Racers Ti-Rush, this morning
For comparison, I rode my fastest bike, Titania the Ti Rush, 64 miles today at an overall 15mph. Over my last 5 rides on Titania my average was 14.74mph.
Dividing 12.96 by 14.74 we get 0.87924016.
Thus, the Jackalope V1 is about 88% as efficient as the Ti
Rush.
I’ve been disappointed in the Jackalope’s lower speeds but really this isn’t terrible. V1 is massively overbuilt and heavy, at least as heavy as my steel Tour Easy. She has a Rohloff Speed Hub internal gear system, which is heavier and less efficient than a traditional rear derailleur. The hinge and elastomer surely reduce efficiency a bit. It’s also possible that the Calfee Stiletto geometry on which she’s based is inherently less efficient than the Easy Racers Ti Rush.
Calfee Stiletto, a few days ago
In fact I just checked my Stiletto’s average MPH over 7 rides: it’s 13.53, against which V1 compares pretty well, at about 96% efficient. That’s actually better than the efficiency penalty of the Rohloff hub alone, estimated at 94.5%.
Maybe we should ditch the Stiletto geometry entirely and go back to the ol’ drawing board, and base V2 on Easy Racers geometry – or the Carver Ti-Glide. Hmm…
The post Bicycling Like It’s My Job appeared first on Nina Paley.
Steinar H. Gunderson: Decompilation patterns part 9, sign extension [Planet Debian]

Today, for something completely different:
s.x = (s16) ((s32) (temp_v0 << 0x10) >> 0x11);
MIPS has 16-bit loads and stores, but not 16-bit (signed) arithmetic, so if it wants to do that, it needs to sign-extend to 32-bit first. And it does that by first shifting up by 16 so that the 16-bit sign bit is at the 32-bit sign bit, and then it can do an arithmetic shift afterwards. So what you want is:
s16 temp_v0; s.x = temp_v0 >> 1;
Sometimes, it can be pretty stubborn, and you'll need to go through memory or similar before GCC really inserts the shift patterns you want.
Zero to Agent in 30 Minutes: Build a Personal Assistant on OpenClaw [Radar]
In the final episode of Zero to Agent in 30 Minutes, AI engineer Sajal Sharma showed how to build a personal assistant on OpenClaw that tracks your tasks and notes and handles scheduled work on its own.
A useful personal assistant has to be reachable when you’re away from your computer and keep running when it has scheduled work to do. OpenClaw supports both, and you decide where the agent runs, which models it uses, and how it accesses your data.
This episode closes out Zero to Agent in 30 Minutes. Thanks for watching and building along with our presenters throughout the series.
If you’d like to keep following how agents can take on more complex work, tune in to The Monday Morning Agent, which debuts Monday, October 12, at 8am PT/11am ET. The eight-episode series follows the development of an increasingly autonomous data agent working with real play-by-play data. Learn more and save your seat or follow along here on Radar.
Designing Websites for People and AI Agents with WebMCP [Radar]
The following article originally appeared on the Agentic AI Foundation blog and is being reposted here with the author’s permission.
Websites are designed for people. We can look at a page and quickly understand where to enter information or which control will complete an action.
AI agents don’t see or use the web the same way we do. An agent may have to process a screenshot or inspect the page’s underlying structure, then reason about which control matches the request.
The additional context increases token use, and each interpretation step creates another chance for error.
WebMCP (not to be confused with MCP) gives web developers a standard way to publish structured tools to access the capabilities of their website enabling agents to call those functions with structured inputs.
A developer can register a tool
through document.modelContext and give it a name and
description. The tool also defines an input schema and the function
that runs when an agent calls it.
For example, an article site could publish a search tool that calls the same application code as its visible search form.
const searchToolController = new AbortController();
await document.modelContext.registerTool(
{
name: "search-articles",
title: "Search articles",
description: "Search published articles by topic.",
inputSchema: {
type: "object",
properties: {
query: {
type: "string",
description: "The topic or phrase to search for."
}
},
required: ["query"],
additionalProperties: false
},
async execute({ query }) {
const articles = await searchArticles(query);
renderSearchResults(articles);
return { articles };
}
},
{ signal: searchToolController.signal }
);
// Call this when the search tool should no longer be available.
// searchToolController.abort();
The name and description tell the
agent when to use the tool. The input schema defines the arguments
it can send. The execute function calls the
site’s existing search logic and updates the page with the
results.
The browser makes the registered tool available to a supported agent while the page is active. When the agent calls it, the browser passes the structured arguments to execute and returns the result.
When the search tool should no longer
be available, the page can unregister it by calling
searchToolController.abort().
A page registers tools that match its current state. A content view may provide a search tool, while an editor can provide tools for changing the selected content. The agent then discovers the tools available for the page’s current state.
WebMCP also proposes a declarative path for existing HTML forms. The article search could be exposed through attributes on the form itself.
<form
action="/articles"
method="get"
toolname="search-articles"
tooldescription="Search published articles by topic."
>
<label for="article-query">Topic</label>
<input
id="article-query"
name="query"
type="search"
toolparamdescription="The topic or phrase to search for."
required
>
<button type="submit">Search</button>
</form>
The browser uses the form attributes
and controls to create the tool definition. Because the form omits
toolautosubmit, the browser populates the field but
leaves the final click to the person. The person can review the
search query and click the Search button.
A WebMCP tool uses the state already visible in the application and the person’s active session. The shared page gives the person a place to review the agent’s work. When the agent completes an action, the person can see the updated state and make changes through the normal interface.
Web developers can also reuse application logic that already handles the visible interface. OpenAI’s Runme example is a browser application that registers tools for reading instructions and updating notebook content. Runme can offer those functions through the page without adding a separate server only to expose an MCP endpoint.
WebMCP and MCP both expose tools to agents, but they operate in different parts of an application. Understanding the difference helps developers decide where each one fits and how they can work together.
An MCP server can provide tools when no related page is open. A WebMCP tool is attached to the current document and can use the page’s current state.
WebMCP standardizes how a page registers tools with the browser. The browser can present those tools to its agent through MCP or another function calling mechanism.
MCP Apps address another part of the interaction. An MCP server can provide an interactive interface that a compatible host displays to a person. WebMCP lets an agent use functions from an existing website.
WebMCP and MCP Apps can work
together. For example, a shopping website could publish a
compare_products tool through WebMCP. An MCP server
could provide an MCP App for the comparison, so the person can
adjust the options while the agent handles the supporting work.
The comparison interface could also be described with A2UI, which lets an agent describe an interface in a declarative format. The client renders the description with components from its own design system, so the client controls which components are available and how they behave.
People and agents can use the same interface at the same time. Developers need to decide which functions the agent can call and what the person should see while those functions run.
Agent use begins before the first click. An agent may need to discover the website and determine how to authenticate. It may choose an API or structured documentation before opening a browser.
Web teams should study how agents use their site before deciding which interface to add. Check the server logs to see whether agents are crawling HTML or requesting machine readable content. Tool activity can reveal which WebMCP functions agents discover and which calls they abandon.
WebMCP reduces the amount of interface interpretation an agent has to do, but a structured tool is still an entry point into the application. The website should apply its existing access controls and input validation whenever the tool runs.
For example, an
update_cart tool can accept a product identifier and
quantity. The server should confirm that the product exists and
that the current user can modify the cart. Structured input
doesn’t automatically make the request trusted, so the server
should run the same checks it uses for updates made through the
website.
The browser also has a
responsibility. OpenAI reviews each site tool call before it runs
and asks the person to confirm sensitive actions. The WebMCP draft
requires origin isolation, and its tools permissions
policy allows same origin use by default.
Clients need to handle tool changes during a task. A page can change a tool’s identity or schema after the agent begins working, so the client should review the tool again before using the new definition.
Researchers are already testing those boundaries. A June preprint on WebMCP tool surface poisoning found that changes to tool registration and metadata could redirect agents in its test environment. The researchers used a polyfill and a headless agent, so a native browser implementation may behave differently. But these reported attacks can serve as great test cases as you’re adding WebMCP to your site.
WebMCP already has several experimental implementations. Chrome offers an implementation through a flag and an origin trial. Sarah Drasner created an interactive WebMCP demo of this implementation that you can try in your browser.
Cloudflare released a developer preview that can add a WebMCP bridge to a website, and Brave has tested WebMCP with its Leo assistant.
Testing WebMCP against varied applications can reveal assumptions in the current draft. For example, a form may need a declarative feature that has not been specified yet. Also, look for lifecycle problems when a website changes its tools during a task.
Bring your findings back to the WebMCP issue tracker.
I like the web for people, sites that live and grow, like people. 100 years from now you should feel the people who lived there.
[$] The 2026 Maintainers Summit [LWN.net]
The Maintainers Summit is a one-day, invitation-only gathering of about 30 kernel developers; it is held once each year to discuss policy-related issues that are not always amenable to resolution via email. The 2026 event was scheduled for October 8 in Prague, Czechia. Unsurprisingly, the discussion there was dominated by large language models (LLMs) and their effect on the development community, but some time was also found to talk about security bugs and long-term succession planning.
The holy quinity of UNIX workstations [OSnews]
Many of us are interested in retrocomputing. There’s such a rich history of eras and machines to choose from, and countless niches and nuances to get lost in. Some people make it easy for themselves and are into old computers that are readily available at low prices, like the Commodore 64 or mid-’90s Macs, while others make it a bit harder on themselves by focusing on, say, computers from the former Soviet Union or NEC machines from Japan, which are harder to find and probably require a bigger purse, too.
And then there’s people like me. I’m making things incredibly hard on myself, because I am obsessed with a very specific set of computers – just five machines, to be exact. “Surely,” I hear you think, “collecting a mere five specific machines can’t be that hard, no? That’s how many spare Pismos I have in a box in case my primary one needs spare parts!” Sadly for me, the five computers I want to own more than any other are not particularly easy to find, and even when you do find one of them, pricing can easily reach the level of a decent used car.
Support OSNews
OSNews is
ad-free, fully independent, not owned by any media conglomerate; we
answer to nobody.
We need your donations and support to survive.
➡️ Donate through Ko-Fi ➡️ Donate through SEPA transfer* ➡️ Become a Patreon ➡️ Buy merch from our store
*Name: Thom Holwerda – IBAN: SE08 8000 0820 1684 4657 8414 – BIC: SWEDSESS
Regular OSNews readers will know: I am infatuated with UNIX workstations, or more specifically, UNIX workstations of the early 2000, and even more specifically, the final five models built by the last commercial UNIX vendors. So far, I’ve managed to get my hands on a mere two of them, but before my time on this earth come to an end, I intend to complete my Holy Quinity of UNIX Workstations. Let’s go down the list, roughly ordered by attainability.
The HP c8000 is the absolute pinnacle of HP’s long-running line of workstations based on the PA-RISC architecture. The first PA-RISC workstation was launched in 1986, and HP would continue to improve the architecture and release new workstations all the way up until 2004, when the c8000 would be their last model. For the c8000, HP actually went all-out: it came with two dual-core PA-RISC processors running between 900MHz and 1.1GHz (depending on configuration), a maximum of 24GB of RAM, and a variety of graphics cards to choose from. It was a veritable swan song for the architecture.
HP’s commercial UNIX operating system, HP-UX, is even older than PA-RISC, with the first version being released in 1982, and its final version, HP-UX 11i v3 (or 11.31) released in 2007. This final version of HP-UX was updated and supported all the way up until 31 December 2025, but things are actually a bit more complicated than that. The last workstation release of HP-UX for PA-RISC was 11i v1 (released in 2000), while the last workstation release for Itanium workstations was 11i v2 (released in 2005). Do note that HP would provide updates, fixes, and patches to these versions long after the mentioned release dates.
Speaking of Itanium, HP’s final Itanium workstation was the zx6000, released in 2002, which can pack up to two single-core 1.5Ghz Itanium 2 processors. There’s a very real case to be made that the zx6000 should also be part of this list, since it’s both a little faster than the c8000 (in its dual 1.5GHz configuration) and runs a newer version of HP-UX. However, since Itanium workstations never really had much of an impact in the market (even HP only ever released two models), and since it lacks the decades of pedigree that comes with PA-RISC, I consider them a mere curiosity. A very cool curiosity that I’d love to own, but a curiosity nonetheless.1
Anyway, this is one of the two machines I already own. I have a new-in-box (when I bought it a few years ago) HP c8000 with two dual-core 1.0Ghz PA-RISC processors, 8 GB of RAM, and an ATI FireGL X3 AGP graphics card with 256 MB, the fastest the c8000 will take. It’s also got two SCSCI 74 GB hard drives in a striped RAID for better performance, and I added an LTO 4 tape drive so I could create bootable backups that will restore the machine if anything ever goes wrong.
It’s running HP-UX 11i v1, with as many of the updates,
patches, and fixes I could find – which is one of the major
roadblocks for anyone trying to get into HP-UX. Installation media
are relatively easy to come by if you know where to look (assuming
you know which specific version you need), but any updates,
patches, and fixes from roughly later than 2005 are almost
impossible to find. Some can be discovered through My HPE Software Center,
if you have the patience of an angel and the perseverance of a
honey badger (it’s a really terrible website), but most
things are all locked away behind expensive support contracts or
just gone entirely.
I’ve contacted HPE several times in several different ways about the preservation of HP-UX, but they never replied – clearly, they just don’t care about the preservation of their legendary UNIX platform or the enthusiast community buying PA-RISC hardware on eBay for personal use and experimentation. Sad, but par for the course.
The c8000 is quite easy to find on eBay, but do be aware that the “cheap” offerings of around €800 are the versions with just one processor. To get the version with two processors, expect to shell out twice as much. Spare parts and upgrades are readily available, too.
The Sun Ultra 45 needs no introduction here on OSNews, as I published an in-depth article about this machine and all the cool things you can do with it late last year. My Ultra 45 was an incredibly generous gift by Adriaan de Groot, who owned this machine as part of his work on porting KDE to Solaris way back in the day. I then ordered various upgrades to the machine to max it out with two UltraSPARC IIIi processors running at 1.6GHz, 8 GB of RAM, and the Sun XVR-2500 with 256MB, the fastest GPU it supports. I also bought the SunPCI IIIpro (an entire x86 PC on a PCI-X card) and a flash accelerator card.

The Ultra 45 is not supported by Solaris 11, so the most recent
version you can run is Solaris 10, and more specifically, Solaris
10 1/13 (from January 2013). Solaris 10 is still receiving patch
sets to this day, but like HPE, Oracle hides them behind expensive,
unobtainable support contracts. My attempts at contacting Oracle
have been more lacklustre than my attempts at contacting HPE, but
either way, no response from Oracle either. They, too, do not care
about the enthusiast community.
The Ultra 45 also tends to be readily available on eBay, and you can expect to pay about €1000 or so for a single-processor model, and anything between €1500-2000 for a dual-processor one. Spare parts and upgrades abound, but do note that Ultra 45 processor coolers are weirdly expensive.
SGI and IRIX are well-loved in the retro computing community, and there’s no shortage of hardware to choose from if you want to get into IRIX. However, if you’re obsessed with the final models of UNIX workstation lines like I am, you’re going to be in a bit of trouble – you’re going to want an SGI Tezro, the final MIPS workstation SGI made. The company launched this top-of-the-line model in 2003, and kept updating and selling it until 2007. In its most powerful configuration, you’re looking at four MIPS processors running at 1GHz each, with a maximum of 8GB of RAM, and a V12 VPro GPU with 128MB of RAM (with a DVI port instead of the more cumbersome 13W3 connector).
The Tezro can run IRIX all the way up until the operating system’s final version, 6.5.30, released in August of 2006. The operating system discs and patches are readily available all over the web, which is quite nice. Out of all the commercial UNIX platforms mentioned in this article, the SGI and IRIX community is definitely the most active and lively, with people developing and maintaining software for IRIX to this very day. There are also people working on maintaining modern Linux kernels for SGI machines, and there’s a ton of forum activity out there.
The Tezro is an incredibly rare beast, and they rarely come up for sale. I’ve only ever seen one Tezro’s final price, and I think it was sold for well in excess of €6000. I have never owned or even seen a single SGI machine, let alone a Tezro,
Out of all the architectures mentioned in this article, IBM’s POWER is the only one still under active development; all the others were phased out and cancelled long ago. However, even though IBM is still developing POWER and releasing new generations every few years, the company hasn’t built a POWER workstation in a long time. The last one built by IBM2 was the IntelliStation POWER 285, released in October of 2005, and sold up until 2009. It packed a single-core or dual-core POWER5+ processor running at 1.9 or 2.1GHz, supported a maximum of 32GB of RAM, and there were three graphics cards to choose from, with the GXT6500P with 128MB being the most powerful option (a card from 2002!).
At roughly the same time as the POWER 285, IBM also sold the IntelliStation POWER 185. This was a very different beast, though, as instead of using a POWER5+ processor, it used one or two PowerPC 970 processors, which was a slightly beefed-up POWER4 design, making it a generation behind the 285. It also had a much stricter maximum RAM limit (8GB), but could run the same outdated GPUs as the 285. Regardless, the 285 is clearly the more powerful machine.
By the way, if the “970” moniker sounds familiar, it’s because Apple used these very same processors under the marketing name “PowerPC G5” for their various G5 Macs. My pet conspiracy theory about the origins of the POWER 185 is that with Apple switching to Intel, IBM was left with a pallet of unused 970s, and thus created the 185 to get rid of at least some of them. The timeline adds up, as Apple announced the switch to Intel in June 2005, and the POWER 185 was announced in February 2006. I don’t actually believe this, but it’s a funny theory nonetheless.
The IntelliStation POWER 285 can run AIX up to version 7.1 TL5, released in 2017, which is remarkably modern. Do note that AIX 7.1 was originally released in 2010, and the number of changes and patches released for 7.1 probably dropped off sharply after its first few years on the market. AIX installation discs, patches, and documentation is easy to find, and I’ve heard from enthusiasts who play with older POWER servers that IBM is remarkably friendly to the hobbyist community, and will gladly answer any emails and provide help when they can. Of course, that’s just what I’ve heard through the grapevine, and I can’t vouch for any of it.
These machines seem to be quite rare. I have never seen an IntelliStation POWER 285 (or 185, for that matter) come up for sale, so I have no clue what people would be charging for these. My uneducated prediction is that a reasonably configured 285 will probably go well north of €2000, maybe even €3000.
Through various acquisitions (Compact acquired DEC; HP acquired Compaq), Alpha ended up at HP3. It was under their brand that the final Alpha workstation was let loose onto the world in 2002/2003 (I’m not 100% sure): the AlphaStation ES47. It contained one or two Alpha EV7 processors running at 1Ghz (also known as the Alpha 21364 or Marvel and the last Alpha processor ever made), a maximum of 16GB of RAM, and an optional ATI Radeon 7500 graphics card with an unspecified amount of video memory. From what I’ve read online, this machine is an absolute monster, weighing in at close to 60kg, with noise levels that aren’t exactly office-friendly.
Alpha-based workstations and servers ran Tru64 UNIX, which was initially known as OSF/1 AXP and then as Digital UNIX, before Compaq renamed it to Tru64. The AlphaStation ES47 supports the final release of the operating system from 2010, version 5.1B-6, and its installation media, patches, and even its multitude of license files are readily available online. An interesting bonus is that like most Alpha machines, the ES47 can also run OpenVMS, up to the final Alpha release of OpenVMS from 2017, V8.4-2L2.
This machine, too, I have never seen come up for sale. Seeing the absolutely insane prices people are asking for Alpha hardware, though, I’m not sure I even want to know what an ES47 would go for. An AlphaStation 500 from 1997, with a 400MHz processor, goes for €2500. A DS15 from the same era as the ES47, a desktop form-factor with a single 1GHz processor, already has an asking price of almost €6000. It wouldn’t surprise me if an ES47 would hit close to €10000.
Why not just settle for lower-end, older, more readily available machines? This is a valid question, with answers that are probably not satisfactory to everyone. Of course, there’s the simple monkey brain “bigger number better” feeling, where I want the fastest, “newest” hardware to get the best experience out of these commercial UNIX machines. Another important point is that these machines will all be able to run the latest workstation versions of their various UNIX flavours, which also helps in realising the best possible experience and potentially makes compiling modern software easier.
Since they’re newer, they also tend to be easier to work with in a more practical sense; you won’t need special monitors or keyboards or whatever, since they’re all compatible with standard PC monitors, keyboards, and mice. Having just one dedicated desk with a monitor, keyboard, and mouse that work on both my c8000 and Ultra 45 saves a ton of space and time, since I just need to move a few cables from one machine to the other if I want to change machines.
There’s also a more intangible reason, one that I value a great deal. All of these machines were developed and introduced well past the point where everybody knew full well the dedicated UNIX workstation market was basically dead. The x86 platform was improving at an incredible pace, and offered better performance at far lower prices than any of the architectures in this article ever could. Meanwhile, the kind of software these workstations were designed for had long been ported to Windows, negating the need for commercial UNIX on workstations even more.
In fact, all of these five machines were developed and introduced after their respective companies had already announced they would be leaving the UNIX workstation market (with the sole exception of possibly IBM). All of them represent the final hurrahs of platforms that for decades had been the envy of computer enthusiasts the world over, designed by people who already knew this would be the last UNIX workstation they’d ever make. This gives these machines a certain melancholy that I personally really enjoy, even if I can’t fully explain why.
Even before you turn these machines on, simply by looking at their specifications, feeling the build quality, and weighing the component choices, you can tell exactly just how much of their heart and soul its creators were allowed to put into it. The Ultra 45 and c8000 are great examples of this. As I detailed in my Ultra 45 article, the Ultra 45 is not materially different from the two machines that came before it, making it an already outdated machine by the time it came out. Hell, the processors in the Ultra 45 were three generations behind the state-of-the-art in SPARC at the time. The c8000, on the other hand, got brand new processors that were substantially faster than what had come before (the first dual-core PA-RISC processors!), a brand new chipset, and even brand new GPU options, and thus delivered a true upgrade over its predecessors.
For whatever reason, it seems that HP decided to put considerably more effort into its final UNIX workstation than Sun did, and I find that fascinating. I desperately want to experience these other three machines, so I can get an even better understanding of where these companies put their priorities. Each of these computers were developed and built under the same somber assumption – the last one we’ll ever make – but each company put their own unique spin on it through the people and means they assigned to the project, all in a time-frame of only a few years.
It’s the same story told in five different ways.
There’s countless reasons why trying to collect these five machines is such an incredibly difficult endeavour. First and foremost, it’s obviously a money issue – I’m not even remotely wealthy enough to casually spend decent-used-car-money on what is essentially a hobby. Second, availability is a huge problem, as the three machines I do not yet have simply rarely, if ever, come up for sale. Even if I had the money to burn on this rather silly hobby, I couldn’t.
Availability is further hindered by the fact that I’m European and live in the Swedish Arctic. From experience, I know that rare hardware like these UNIX workstations seem to have been more common in the United States than in Europe. Furthermore, even if someone is trying to sell one of these in Europe and they choose to do so on one of the local, country-specific classifieds platforms, I’m going to be locked out. Importing any of these machines from the US is basically a non-starter, since shipping machines that easily weigh in excess of 30kg across the Atlantic is not only expensive, but often also simply not an option since US sellers don’t want to do so. The EU import duty lottery isn’t exactly helping either.
I am absolutely green with envy whenever I watch YouTube videos of people visiting the various Vintage Computer Festival events in the US, where I often spot countless of these machines in the background, sometimes for sale at very reasonable prices, just sitting there like it’s no big deal. Similar events in Europe seem to be much smaller in scope and more locally-oriented, making it much harder to build up a network of like-minded friends who might let you know of great finds in other parts of the continent.
Basically everything is working against me.
With the possible exception of certain computer museums, I don’t think there is anyone in the world who owns all five of these machines, and I definitely will not be the first. Sadly.
Will Linux phones become a viable alternative to the Android/iOS duopoly? [OSnews]
Amos B. Batto has published an incredibly detailed look at the state of Linux on smartphones. It’s an excellent read you really shouldn’t skip.
Five years ago, Linux phones looked like they were poised to become a viable alternative to the Android/iOS duopoly that has an iron grip on the mobile phone industry. Sadly, after a brief flash of activity and community engagement with the release of the Purism Librem 5 and the PINE64 PinePhone in 2020, the Linux phone market has generally stagnated. This stagnation occurred partly because of the problems at Purism and PINE64, but also because the available Linux SoC’s weren’t up to the task of running a modern smartphone, and the hardware industry wasn’t providing any good alternatives with good free/open source drivers. In addition, Plasma Mobile and Phosh were still inchoate mobile interfaces at the time, and there wasn’t a good distro option to run these interfaces on Android kernels with a normal integrated mobile SoC. The poor performance of the PinePhone and Librem 5 and the problems with the PinePhone Pro and the Librem 5 refunds sapped people’s enthusiasm and willingness to take a chance on the next Linux phone.
Fortunately, all of these conditions are changing, and I believe that there is now the possibility that Linux could finally become a viable alternative to Google’s Android and Apple’s iOS in the mobile space, just like desktop Linux has become a viable alternative to Windows and Mac OSX on the PC over the last three decades. This isn’t to say that mobile Linux will fundamentally challenge the business of Google or Apple, but the conditions are ripe for a small market to arise for Linux phones, similar to the way that people can currently buy Linux PCs from a number of small companies, such as TUXEDO, System76, Purism, Slimbook, ThinkPenguin, Ubuntushop.biz, Entroware, Star Labs, Juno, Laptop with Linux, Linux Certified, ArkPC, etc.
↫ Amos B. Batto
I’m not quite as optimistic as Batto, and that’s almost exclusively down to how running Android applications through compatibility layers will remain an absolute necessity for anyone trying to use one of these Linux smartphones today. As long as crucial applications and services required to function in a modern society, like banking, messaging, government services, and so on, require the use of an Android application when using a Linux smartphone, I just don’t think any significant number of people will be switching over.
What’s needed is something that will force these crucial services to become available on platforms other than Android and iOS, since I don’t think any of them will do so of their own volition. The only way I can see this happening is if the European Union, spurred on by our desire to reduce our dependence on adversarial US companies, mandates that several services marked as crucial must make themselves available on platforms other than Android and iOS.
I doubt that will happen, but I honestly don’t see Linux smartphones becoming anything more than a mere curiosity you fiddle with at home, while carrying an Android phone or iPhone as your actual phone.
LineageOS 24, based on Android 17, released [OSnews]
LineageOS has released its first version based on Android 17 – earlier than expected.
We’ve been hard at work rebasing all of our changes and features since Android 17’s release in June. Android 17’s first release mainly contained iterative improvements and some UI/UX refinements, but due to our previous efforts adapting to Google’s heavy refactoring over the last several versions, we were able to rebase onto Android 17’s code-base faster than anticipated. Yes you read that right: We’re early this year!
↫ LineageOS’ changelog written by Nolen Johnson
This release also includes the latest Android security patches (October 2026), as well as a brand new browser-based USB flash tool to make installation easier. Many of the applications included with LineageOS have also been updated and improved, like its music player, image editor, web browser, and so on. The project also did a full accessibility audit of its installation process and application suite, which has already resulted in severalk accessibility improvements.
LineageOS serves as the base for countless custom Android ROMs, so it’s great to see the project do this well.
Keyboard differences between Windows and Macs [OSnews]
Over the years, I learned about many gotchas and strange differences between keyboard handling on Mac and Windows – pertinent especially to web apps, which use the same codebase to cater to both. I thought it might be helpful to someone if I compile them all in one place.
↫ Marcin Wichary
I knew most of these, but it’s still nice to have such a reference at hand when needed.
FBI Arrests Suspect in FBI-Hacking Case [Schneier on Security]
In September, hackers from a group called ShinyHunters announced that they stole a trove of FBI data about its own agents. It was an intelligence disaster.
Last week, the FBI arrested (alternate link) someone associated with that crime.
I'm still on my sabatical from working with Claude re Frontier, but have now started working with Claude on FeedLand, and another project, not yet named, experimental, might never see the light of day. Yesterday I worked on FeedLand and have a fix for the problem that showed up in signing on to feedland.com. It's been sitting there for quite a while. I have some mostly small fixes in mind for FeedLand, that will allow it to hook into other apps more easily, esp via WebSockets, the mostly unexplored developer superpower. The difference is I'm going slowly and carefully. Everything in my system now is new. New computer, screen, and my main writing tool for code and docs -- Frontier. And I know the heavy lifting can be done by Claude. That is Claude's superpower.
In Manhattan, I lived on 57th St and Eighth Ave. Best location. The Columbus Circle subway station is under the building. Whole Foods a block away. Three Starbucks one block or less from the apartment (one was on 58th on the same block). Central Park has a six mile bike-only road (at least that's how bikers view it) and down the hill there's a much longer path along the Hudson River. Everywhere you look, a skyscraper is going up. Two were visible from my 50th floor window. New York is an amazing city because it can start up a huge gravity-defying construction project with almost no impact on the surrounding area. If I didn't know where to look I'd never see it. One of the biggest industries in the city is building the city. It's never finished. That's the way good software is too. And we just got a whole new tool for software construction, and it's like nothing we've ever had before.
DIY Disasters [George Monbiot]
Instead of taking responsibility, the government is passing crucial resilience roles to the public, and failure is inevitable.
By George Monbiot, published in the Guardian 8th October 2026
Would you mind fixing the NHS? And while you’re at it, could you please build an anti-missile system in your garden? Then regulate the banks, replace the water mains, tax the very rich and use the proceeds to rebuild our schools. Well, come on people: what are you waiting for?
I exaggerate, but this isn’t very far from the approach taken by the government’s Prepare campaign. Crucial functions, way beyond the scope of individual action, are dumped on our doorsteps while those in power fail to act. As a result, our national resilience is arguably lower than at any time since the second world war. At the Labour conference last week, Andy Burnham promised “a Britain where people feel the country has got their back again”. To make good on that pledge, he will have to change almost everything.
It’s not that the advice offered by Prepare – a government campaign designed to promote readiness for emergencies – is irrational. But when the state is absent or working against us, households and communities cannot fill the gap. The campaign tells us, for example, to conserve water during droughts by turning off the tap while brushing teeth, or taking a shower instead of a bath. For sure. Every citizen should do their duty. But the government has at the same time declared datacentres “nationally significant infrastructure projects” that can be forced through the planning system, despite two startling facts. The first is that even Water UK – the body representing those paragons of environmental responsibility the water companies – has said there isn’t enough water to support the new datacentres. The second is that, as a freedom of information response reveals, the government has no idea what they are being used for. You could be turning off your taps so the water can be used to nudify celebrities.
Talking of droughts, the government’s National Risk Register seems seriously out of whack. It estimates the risk of a drought with a moderate impact occurring in the next five years at just 0.2-1%. What?? It also estimates the risk of heatwaves with a “significant” impact – by which it means between 200 and 1,000 deaths – at only 1-5% over the next five years. The government estimates there were 2,877 heat-associated excess deaths in England during this year’s hot weather in May and June. There were a similar number of deaths in the heatwave of 2022.
But never mind: the Prepare campaign advises that “if you live in a home that is more likely to overheat … contact your local council, your letting agency or Citizens Advice to find out what help and support they can provide”. Good luck with that. In the meantime, the “future homes standard” is at last due to come into force in March 2028, but thanks to lobbying by the building sector, according to some practitioners it still won’t deliver new homes matched to the climate challenges we face. And local authorities have been blocked from demanding anything better, thanks to the same corporate pressure.
Survive floods, the Prepare campaign tells us, by “packing a ‘grab bag’ of essentials in advance”, moving “valuable items upstairs” and making “changes to your property to reduce the damage flooding can do”. But one in nine new homes are being built in areas at risk of flooding according to data from Aviva, and a recent high court judgment reveals that the law prevents local authorities from blocking such developments, even if they fail a crucial safety test.
These are not the starkest examples of public exhortation colliding with government failure. The Prepare campaign tells us to help stop the spread of avian flu by washing hands “with soap and water” after feeding wild birds. Fine. But at the same time, at the behest of lobbyists, the government is pushing a “poultry sector growth plan”. This will multiply the number of super-incubators of avian flu: namely the factory farms rearing chickens. As the Scientific Task Force on Avian Influenza and Wild Birds points out, poultry farms are where highly pathogenic bird flu first arose. Through their growth and intensification, the spreading of their manure on fields and its runoff into rivers, we could scarcely devise a better formula for generating new variants of the virus and the attendant ecological disasters. Oh hang on, we could: the shooting industry is still allowed to breed tens of millions of pheasants and partridges in similar conditions each year, then release them into the countryside to mingle with wild birds. But do wash your hands.
You’re also advised to “reduce your exposure to air pollution”. How? The government is allowing new homes to be equipped with wood-burning stoves, building huge and pointless new roads and consulting on radically delaying the transition to all-electric vehicles. All, once again, in response to lobbying.
As for food resilience, the Prepare campaign scarcely mentions it, except to say we should stock some “non-perishable food that doesn’t need cooking” in our homes. Last week, a group of anonymous senior food executives warned that, in the face of “material reductions in yield, quality and reliability of supply”, their industry was “defaulting to quick-fix crisis management” rather than taking a strategic, long-term approach. “At present, we are seeing companies either consistently lobby against necessary regulations or stay silent,” they said. The result is a likely failure to address an existential threat.
There was much in Burnham’s speech that delighted me, especially his listing of deregulation as one of the five great evils putting Britain on “the wrong path”. That’s a break with 47 years of policy, in which all governments have dismissed essential public protections as “red tape” that must be cut. The Tories were still at it in their own conference this week – telling us, in effect, they are here to burn it all down. But, like Keir Starmer, Burnham has tied his own hands by pledging to “stick to our fiscal rules”. These rules did not come from government. They were developed by Westminster junktanks and pushed into being by the media. As Larry Elliott has argued persuasively, they are unnecessary and self-defeating.
The threats to our resilience are the same as the threats to our democracy: what Burnham called “that sense of the powers-that-be pulling against the people, not with them”. We’ve had five decades of lobbyists shaping policy, with devastating consequences for our ability to withstand crises. Willing to play our part as we may be, we cannot do the work of government.
www.monbiot.com
Maytham Alsudany: There's more to CSS for underlining [Planet Debian]
I read Ruben Schade's notes
on underlining and wanted to add more, as adding a
border-bottom and leaving at that seemed incomplete to
me.
Of course, you could just use the modern choice. Here, I've shortened what Schade uses into one line of CSS (because I can). As noted, this is a fairly new feature so not every browser supports this.
[This interactive/preview is only available on the website.]
.underline-me {
text-decoration: underline red solid 3px;
}
Since some browsers don't support text-decoration,
here are the alternatives I could think of.
The workaround Schade describes is using
border-bottom, though it has a gap between the text in
the line.
I am <span class="underline-me">underlining this yap</span> within the sentence.
.underline-me {
border-bottom: red solid 3px;
}
Probably the better way is to create an ::after
element, which gets very close, but displays above the text
(covering the letters 'g' and 'y').
I am <span class="underline-me">underlining this yap</span> within the sentence.
.underline-me {
position: relative;
}
.underline-me::after {
content: '';
position: absolute;
width: 100%;
height: 3px;
background-color: red;
left: 0;
bottom: 2px;
}
If you use a container (in this case, two nested
<span>s instead of just one), then you can get
very close with the underline displaying below the text.
I am
<span class="underline-me-ctn">
<span class="underline-me">underlining this yap</span>
</span>
within the sentence.
.underline-me-ctn {
position: relative;
}
.underline-me {
z-index: 10;
position: relative;
}
.underline-me-ctn::after {
content: '';
position: absolute;
width: 100%;
height: 3px;
background-color: red;
left: 0;
bottom: 2px;
}
And now if you add a stroke to the text via
-webkit-text-stroke, you're pretty much there, though
this may not be feasible in some situations (e.g. gradient or image
background behind the text). Support for
-webkit-text-stroke is not that much better than
text-decoration though, so make of that what you
will.
I am
<span class="underline-me-ctn">
<span class="underline-me-outline">underlining this yap</span>
<span class="underline-me">underlining this yap</span>
</span>
within the sentence.
.underline-me-ctn {
position: relative;
}
.underline-me-outline {
z-index: 5;
position: absolute;
left: 0;
color: var(--background);
-webkit-text-stroke: 0.3em var(--background);
}
.underline-me {
z-index: 10;
position: relative;
}
.underline-me-ctn::after {
content: '';
position: absolute;
width: 100%;
height: 3px;
background-color: red;
left: 0;
bottom: 2px;
}
LineageOS 24 released [LWN.net]
The LineageOS project, which produces an Android-based distribution for mobile devices, has announced the release of LineageOS 24.0.
We're a bit sentimental about this release, as it precedes a really fun upcoming milestone.
On December 24, 2026, LineageOS will celebrate 10 years. It's a remarkable milestone for a project built by a passionate community of developers, maintainers, contributors, and users who have kept so many devices alive along the way.
[...] We've been hard at work rebasing all of our changes and features since Android 17's release in June. Android 17's first release mainly contained iterative improvements and some UI/UX refinements, but due to our previous efforts adapting to Google's heavy refactoring over the last several versions, we were able to rebase onto Android 17's code-base faster than anticipated. Yes you read that right: We're early this year!
First Impressions: Dell XPS Googlebook and the Googlebook OS [Whatever]


As someone who has, over the years, found himself deep in the Google ecosystem of hardware and services, I had been curious about the Googlebook concept for a while — whether it would be basically a fancy Chromebook, or if it would offer something more, and more useful, than that line of affordable but mostly limited laptops. When the Googlebook models were announced in September, I decided to go ahead and pre-order one: The Acer Googlebook 14.
It turns out, however, that apparently lots of people had the same idea as me. Best Buy sent me an email telling me that despite taking my pre-order money, the Acer was out of stock and they didn’t know when they would get more. I cancelled that order and went with the Dell XPS Googlebook instead, which, I think by virtue of being $100 more expensive than the Acer, was in stock. It arrived the day after I ordered it — and when, alas, I was away at New York Comic Con for a few days. I finally got a chance to set it up and play with it yesterday.
My first impressions: It’s pretty nice! Also, Google still has work to do on its shiny new operating system.
Hardware first: The XPS Googlebook is a really nice little laptop. It’s physically the smallest of the five Googlebooks available at launch (the other four coming from Acer, Asus, Hewlett-Packard and Lenovo). It’s clearly meant to be in the “ultrabook” category of laptop, which is to say, light and thin and not terribly concerned with ports (it comes with two USB-C ports and that’s it — not even a headphone jack). It’s also the only Googlebook at launch that does not come with an OLED screen, although the screen it has is perfectly nice and the blacks are certainly inky enough for government work.
All of the launch Googlebooks were required by Google to have certain minimum hardware: at least 16GB of RAM, high-speed processors, either by Intel or Qualcomm (the XPS comes with a Snapdragon X Elite), 512GB SSD, a metal, not plastic, chassis, backlit keyboard, and a touchscreen with a high refresh rate (120 Hz here). None of this comes cheap these days, and the initial set of Googlebooks are priced between $899 and $1299, with the XPS I got coming in at $999. This is more expensive than just about any Chromebook, more expensive than the new Macbook Neo, and on par with a newish Macbook Air.
The minimum requirements pay off, at least for the XPS. It feels really solid for such a small computer, and everything about it looks and feels nice. The keyboard has a nice snap to it and has almost no flex, the screen as mentioned is very good (and comes with an anti-glare coating, which is a feature I appreciate now that I have it), and while it has fans, which turned on while I was setting up the laptop, they are quiet and barely noticeable when they’re on, which so far has only been during that setup.
As mentioned the processor here is a Snapdragon chip rather than an Intel one, and that’s fine because Android (which the Googlebook OS is based on, and which, frankly, it’s mostly just a reskinned version of) is designed to run on ARM chips, which Snapdragon is. Everything runs quickly so far, and ARM chips are typically meant to be more efficient than x86 chips like Intel’s, although so far the battery life I’ve seen out of the XPS is good but not amazing.
The XPS has quirks — the keyboard is a modified Chromebook set-up, which means the Caps button is a “search” button first (you can make it a Caps button by holding down the shift button, which defeats the whole purpose of a caps button), and there’s a “Google” button on the bottom row which opens an app drawer or can be used to access the “magic pointer” (more on that later). Also, the speakers, while perfectly acceptable, make the chassis vibrate, particularly the trackpad, which is a not entirely pleasant feeling. The trackpad is mechanical, not haptic, and the click does take some pressure (it responds to taps perfectly well). The I/O situation as mentioned is sparse, but inasmuch as I already have a MacBook Air, which also only has two USB-C ports, I am already well-acquainted with the dongle life, and I have bluetooth headphones. I’m not going to give the XPS too much crap for that.
So as a piece of hardware, the XPS is solid. Now, how is the software — the Googlebook operating system and all the “AI” bells and whistles that Google has piled on top of it?
Well…
As a preface, I should note that I knew going into this that as an early adopter of this platform, I would essentially be a beta tester for it, since almost no 1.0 release of anything survives its first encounter with users out in the world. In the week since Googlebooks have hit the market there have already been updates to the OS to fix bugs and other flubs. So I’m okay with having a little patience in this shake-down cruise. That said, being patient doesn’t mean not pointing out the flaws that do currently exist.
One of those flaws is that at the moment the Googlebook is doing a crap job at one of its marquee features, namely, integration with Android phones, where one is supposed to be able to connect laptop and phone seamlessly, stream apps from the phone to the laptop, hand off work from one to the other, and drop files from one into the other painlessly. As a Pixel phone owner, this promised integration was a huge inducement to try out the Googlebook — I wanted what (presumably) iPhone users have with their Macs. It would, in fact, be really useful. And as a Pixel owner running Android 17, I am someone best positioned to get that integration right out of the box.
Except that the Googlebook keeps dropping its connection to my phone and not being able to find it after that, unless I restart both the phone and the Googlebook. It happens when I take my phone away from the laptop and/or close the laptop, breaking the connection between the two. A short disconnect doesn’t seem to be a problem; a longer one seems to flummox it entirely. I believe this is a known issue that’s being addressed, so that’s good. But it’s still annoying right now. I don’t want to have to keep resetting my laptop and phone to get the promised integration.
(I’ve also noticed that phone apps streamed onto the Googlebook can have choppy scrolling, although I don’t know if that’s a problem with the integration or an artifact of my occasionally-janky internet connection.)
That said, when the integration does work, it’s pretty neat, and I see it being really useful when I’m working on my laptop and need something from my phone, or want to access an app that I don’t have running natively on my computer. As mentioned already, the Googlebook OS is pretty much a reskinned version of Android 17, so all the apps that run on an Android phone should run just fine on the laptop (there are apps that apparently struggle on the Intel Googlebooks, but even there something like 97% of apps run perfectly well). During the setup, if you pair your Googlebook with your phone it will install the apps you have there over to the laptop, so you’ll be able to run them natively even if you can’t access your phone. But they are different instances of the app, so streaming an app might still come in handy.
So: Great in concept! Execution still needs work.
Google is going all in on “AI” integration on the Googlebooks, making sure that Gemini, its in-house “AI,” is only a click, button-mash or cursor wiggle away, the latter being the “magic pointer” feature. You can invoke Gemini and ask it about what’s on your screen, or have it smoosh two images you have into a single “AI”-ified picture and so on (the Googlebooks also come with an offer for an entire year of the “Pro” level of Gemini, which comes with five terabytes of cloud storage, which is arguably more useful). The point is, no matter where you go on the Googlebook OS, Gemini is right there, lurking, waiting for you to do something with it.
I’m not going to get into a deep discussion about the various issues with “AI” for this overview; if you want to know my current(ish) feelings about it, you can go here and catch up. What I will say is that at this point Microsoft, Apple and Google are all jamming as much “AI” as they possibly can into their operating systems, so if you want an entirely “AI”-free compute experience, you’ll probably need to head to some distribution of Linux or another — and that’s a totally valid choice if you do, maybe this will finally be The Year of Linux after all. But I suspect most normies will stay in the MSFT/Apple/Google universes, so the question there is: If one must be stuck with “AI” festooned about one’s computing life, which version is the most useful.
I think at the moment it’s Google that has best integrated its “AI” features into its ecosystem as a useful tool and not just a shiny bauble to rook the rubes. Microsoft, of course, fucked up its Copilot integration so badly that now it’s pretending it never even happened, while Apple’s “AI” was so famously flubbed over such a long period that its latest iteration of “Apple Intelligence” is just Gemini in a black turtleneck. There is some irony in Google being better than Apple at both tech and UI with anything, but here we are. 2026 is a hell of year.
For all that, even in my brief experience of the Googlebook OS, there’s nothing here that demands Gemini use. It’s around, to be sure. Oh, boy, is it ever. But you don’t really have to use it for anything. You can access apps and do your work without ever having to invoke Gemini. Yes, it can make little widgets for you, or vibe code something for you, or take a picture of your cat and put a witch hat on it for spooky season or whatever. Or, you could just leave it alone and never bother with it, and your Googlebook experience will be just fine without Gemini.
And in fact, of all the things that Gemini is supposed to do on the Googlebook, there is only one feature that I actually find useful in any measure: Rambler. It’s the new voice dictation program that takes all the “ums” and “ahs” out of your speech when you are doing voice-to-text, and creates a coherent statement that requires minimal editing on the backend. It’s been super useful when I’m trying to plow through a whole bunch of email, and it’s easier to say something than to type something. It’s the one thing out of basically years of Google “AI” that I think actually earns its keep. It’s not exclusive to Googlebook — it’s on Pixel phones as well — but it’s especially useful in the laptop milieu. Also, Rambler seems like to me it could be a really excellent accessibility feature, although I would need other more knowledgeable people in that area to confirm that.
Having discussed the hardware and the software, the question now is: Is a Googlebook actually useful — as in, is it a laptop that could replace your Mac or Windows laptop?
Ehhhhh… maybe? But probably not?
While the Googlebook is substantially more useful and capable than a Chromebook, it suffers from the same issue that Chromebooks did: Some significant programs are just not there, or aren’t fully featured. Again, think of Googlebooks as Android laptops. They have access to everything in the Google Play Store, which is actually pretty great — but not everything in the Google Play Store is a feature-complete version of that software. The Android version of Word, which I use to write novels, isn’t close to feature-complete, nor is the Web browser version. The Android version of Photoshop isn’t feature-complete either (nor again is the Web browser version). I can write in Android’s Word, and I can do some photo editing in Android’s Photoshop. But substantive detail work is out of reach. If there’s software you need the feature-complete version for, and need it on a regular or daily basis, then the Googlebook is probably not for you, at least not yet.
But, if most of the things you do can be done through phone apps or the browser, and/or you’re deep into the Google ecosystem (and use, for example, Google’s suite of business apps instead of Microsoft’s), and you’re willing to tolerate Google working the kinks out of its new operating system on you for the next several months, then, actually, yeah, it’s worth taking a look at the Googlebook. I can personally see taking this with me when I’m traveling, when I’m not doing a huge amount of work and therefore my need for feature-complete programs is at a minimum. I did this before with my Chromebooks, and this XPS is a lot more robust, both in terms of hardware and software, than those ever were.
(If you’re porting over from a Chromebook, or porting over, say, your tech-unsavvy mom or dad from that platform, then this is a very good, if currently slightly expensive, upgrade to that experience. Be aware that Google is promising to support Chromebooks through 2034, and presumably later generations of Googlebooks will have cheaper options, so there’s not a huge rush at the moment to move over to a Googlebook.)
Plus, again, Rambler really is a killer app. I genuinely see me using my Googlebook to plow through emails and doing other things where dictation would be faster and better than typing. It’s not for writing fiction or long-form pieces like this, I would note; that takes a part of my brain that’s better integrated with my hands, and yes, that’s a real thing. But really short pieces, social media and emails? Absolutely. I’ll be happy to save my wrists for the things that make me money. This is one part of living in the future I think is worth it.
— JS
Security updates for Monday [LWN.net]
Security updates have been issued by AlmaLinux (cjose, compat-openssl10, compat-openssl11, curl, dogtag-pki, dovecot, emacs, glibc, kernel, openssl, python3.12, python3.14, and sssd), Debian (chromium, ghostscript, tor, and vips), Fedora (kernel, libical, markdownlint-cli2, openbao, openvpn, php-getid3, python3.10, python3.11, and python3.13), Mageia (capnproto, chirp, flatpak, freetype2, hamlib, mingw-pcre2, pcre2, openssl, tomcat, tomcat-native, and xdg-dbus-proxy), Oracle (bind, cjose, dogtag-pki, dovecot, firefox, kernel, nodejs:24, openssl, pki-core:10.6, python3.12, python3.14, ruby:2.5, rust-sequoia-sq, sssd, and tftp), Red Hat (libxml2), Slackware (mutt), SUSE (apache-sshd, bind, ccache, chromium, cpp13, dash, expat, fetchmail, flatpak, golang-github-prometheus-prometheus, grafana, system-user-grafana, incus, libpng16-16, libsoup, logback, openssh8.4, perl-DBI, php8, python3-paramiko, python312, python313-asyncpg, python313-azure-identity, python313-Babel, python313-Beaker, python313-bjoern, python313-black, python313-Brotli, python313-CairoSVG, python313-Flask-Cors, python313-FontTools, python313-Jinja2, python313-jwcrypto, python313-MechanicalSoup, python313-oauthlib, python313-PyJWT, python313-PyMySQL, python313-PyYAML, python313-virtualenv, python313-XStatic-jquery-ui, qemu, rsyslog, shadowsocks-rust, squid, stunnel, swtpm, trivy, unbound, wpa_supplicant, and yast2-users), and Ubuntu (libdbi-perl).
Pluralistic: How labor rights rescued Ultima from a monopolist (12 Oct 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

If you work in the media, you have doubtless had a lifetime of encouragement to treat copyright as your primary source of economic protection, and doubtless you've been told that this protection arises from the fact that copyright is a property right – specifically, it's a subspecies of "intellectual property":
https://locusmag.com/feature/cory-doctorow-ip/
Property rights are capitalism's holy sacrament, so of course, it's natural to treasure any property right you can lay claim to. But this is a trap. Creative workers aren't asset speculators, we're workers. When we bargain with a media company to sell them our copyright, we're just bargaining to sell our labor, not our property.
This is a distinction with a difference. Property rights are alienable. When you negotiate to sell your property to someone else, you propose to transfer the title to that property. If you sell your house, you don't get to move back in if you change your mind later. Sell your car, and you must not get in and drive it away.
Nominally, creative workers only bargain away some of their copyright, because copyright is also divisible. You can sell US English print rights to a novel, a one-month license to synch a song to an advertisement, or the right to display a painting for a year.
But here's the thing about property rights: the most reliable predictor of how many property rights you must give up in a sale isn't how many property rights you started with – it's how much bargaining power you have. For 50 years, governments have expanded copyright in every way, making it last longer, cover more works and restrict more uses, all backstopped by ever-steepening penalties. 50 years later, media companies – our bosses – are larger and more profitable than they've ever been, and we're poorer than we've ever been. The share of the money generated by our labor has declined, even as our rights over the product of that labor have expanded.
How to make sense of this? It's easy, once you factor in power. In a world of five publishers, four studios, three labels, two app companies and a single ebook/audiobook company, getting more copyright to bargain with just means getting more copyright to bargain away. When copyright's term expanded from "life plus 50 years" to "life plus 70 years," our bosses simply demanded the entirety of the new term, and didn't offer us a dime more.
This is the thesis of Chokepoint Capitalism, the book on Big Tech, Big Media, and creative labor markets Rebecca Giblin and I published in 2022:
https://www.beacon.org/Chokepoint-Capitalism-P2020.aspx
Chokepoint Capitalism is broken into two parts: the first half of the book is a series of pitiless, plain-language dissections of the baroque scams that media companies have used to make themselves richer from our work, from Spotify to Amazon to Livenation and beyond. From reader feedback, I can tell you that these chapters will make you very angry, because once you strip away all the deliberate obfuscation, all you're left with is one screw-job after another, each of which makes the creators you love poorer even as you pay more for their work.
But then there's the second half of the book. This section is devoted to "shovel-ready" policy solutions, each of which is designed to change the "distribution" of the spoils of the media industry, putting more money in workers' pockets at the expense of our bosses. None of these are things you can do as a "conscious consumer." The monopolistic destruction of creators' livelihoods is a systemic problem and you can't solve it by shopping better.
The point of these chapters is to lay out what we must demand from our policymakers when (inevitably), they propose to "solve" the problem of worsening straits for creative workers – and to help creative workers understand that when our bosses demand more copyright, that's not there to benefit us.
One of these systemic solutions is "termination of transfer," a simple and radical idea that has a proven track-record of making creative workers richer at our bosses' expense. Simply put, "termination of transfer" is the statutory right to void any contract you've signed to transfer your copyright to someone else. In the USA, the 1976 Copyright Act introduced a 35-year termination right. 35 years after you sign any copyright contract, you can file some paperwork with the US Copyright Office and get that copyright back, no matter what your contract says.
Now, most creative works don't have a commercial life after 35 years (very few works are commercially viable even after the original US copyright term of 14 years), but for those that do, termination of transfer is a reliable way to address the extremely common situation in which a creator signs away their rights for a low price, not knowing that it will become a lasting hit. Once you've scored that hit, you can probably get a better deal from your next work, but the deal for that hit is done and can't be altered.
Termination solves this. From The Babysitters Club to the early Stephen King novels to George Clinton's entire catalog, termination of transfer has put lots of money into creative workers' pockets at the expense of corporations that ripped them off at the start of their careers.
From the start, there was no question whether termination of transfer would make it into Chokepoint Capitalism. Rebecca is one of the world's leading experts on the subject, having co-authored the definitive study of termination:
https://pluralistic.net/2021/09/26/take-it-back/
In the book, we note that – unlike longer copyright terms – termination has a proven track record of putting groceries on creators' tables, braces on their kids' teeth, and a roof over their heads. We go over the legislative history of termination in the 1976 Act, noting that it was originally supposed to be automatic and kick in after just 20 years. If we want to make creative workers richer, changing the 35-year administrative right into an automatic 20-year termination right is a no-brainer amendment to copyright law.
How did an automatic right that kicked in after 20 years turn into a right you have to apply for after 35 years? Simple: our bosses hate termination. How much do they hate it? Well, take Mitch Glazier, the head of the Recording Industry Association of America, where he draws a $1.3m annual salary to represent the record labels.
Before Glazier got the RIAA gig, he was an obscure Congressional staffer, but he was forced out of the job after he snuck a clause into an otherwise unrelated bill that killed termination of transfer for recording artists. This was so outrageous that Congress actually convened a special session so they could rip out Glazier's amendment, and Glazier got a new job as a millionaire lobbyist for the recording industry:
https://pluralistic.net/2026/03/03/its-a-trap-2/#inheres-at-the-moment-of-fixation
Termination is hugely useful and quite radical. Last year saw Gary K Wolf, creator of the novel Who Censored Roger Rabbit? (later adapted by Disney as Who Framed Roger Rabbit?) claw back his rights to the book and its characters, in order to continue the series:
https://pluralistic.net/2025/11/18/im-not-bad/#im-just-drawn-that-way
In 2023, Bill Willingham terminated the transfer of his wildly successful graphic novel series Fables from DC and released the copyright into the public domain:
https://pluralistic.net/2023/09/15/fairy-use-tales/#sampling-license
And now, Richard Garriott, AKA "Lord British," has claimed back the rights to the groundbreaking Ultima series of computer role-playing games, which he sold to Electronic Arts in 1992:
On the Techjess podcast, Garriott marveled at how easy the process was: "there’s a really weird United States copyright law that says if you are the original holder of a copyright and you assign it or sell it to any publisher or any other entity, after 35 years, you can just take it back":
https://www.youtube.com/watch?v=2El7VtPuSzs
EA killed off Ultima in 2000, and it has languished since, despite an ardent fandom. Garriott has vowed to reissue the old games and is mulling new ones.
All this brings me back to property rights. Property rights are uniquely unsuitable to this kind of arrangement. You don't get to move back into the house your parents sold 35 years ago, and if you did, the photographer who took the family portrait in the hallway wouldn't be allowed to break in and take it away 35 years after you sat for it.
Termination of transfer isn't an "IP right" – it's a labor right. It belongs to the large class of rights that are far more important and useful than mere property rights, such as privacy rights and human rights:
https://pluralistic.net/2026/09/28/cost-of-everything/#value-of-nothing
If copyright were just about property rights, then termination of transfer would be inconceivable. Termination is a vestigial labor right at the very periphery of copyright. It protects artists, and it can only do so because it is not a property right.
This is one of the themes in The Bezzle, my 2024 historical technothriller, starring my two-fisted forensic accountant hero Martin Hench who uses termination to help an artist claw back his rights from an unscrupulous former manager who forged his signature decades before (this plotline is based on the true story of Parliament/Funkadelic's George Clinton!):
If you signed away your rights 35 years ago and want to get them back, check out the Authors Alliance, a nonprofit whose advisory board I volunteer for. We produced a tool that automates all the hardest parts of terminating your transfers and getting your rights back:
https://www.authorsalliance.org/resources/termination-of-transfer/
Some of our most ardent fans are academics, whose publicly funded papers are published in journals dominated by a cartel of giant companies that do not pay the authors, nor the editors, nor the reviewers, but still claim all rights and charge the institutions that funded the research they publish tens of thousands of dollars per journal to access that research:
https://pluralistic.net/2024/08/16/the-public-sphere/#not-the-elsevier
But it's not just academics who have an interest in termination of transfer. It's video game authors, novelists, musicians – and maybe you, someday!
(Image: Reda Kerbouche, CC BY-SA 4.0; Thegreenj, CC BY-SA 3.0, modified)

Enshittification https://scrollart.org/artwork/enshittification/
Mamdani’s “Richard Scarry Socialism” Can Make City Life Simple Again https://www.currentaffairs.org/news/mamdanis-richard-scarry-socialism-can-make-city-life-simple-again
The people holding up the internet https://sheets.works/data-viz/holding-up-the-internet
Workers behind Dungeons & Dragons vote to unionize https://www.avclub.com/dungeons-dragons-magic-the-gathering-union
#25yrsago Tourist Guy https://web.archive.org/web/20011009234007/http://www.touristofdeath.com/
#25yrsago Gene Kan on Open Web Services https://web.archive.org/web/20011031234135/http://www.openp2p.com/pub/a/p2p/2001/08/02/openservices.html
#25yrsago Larry Ellison wants to spy on everyone https://web.archive.org/web/20011206002725/http://www.oracle.com/corporate/index.html?digitalid_comp.html
#25yrsago W3C ponders patents in web standards https://lists.w3.org/Archives/Public/www-patentpolicy-comment/2001Oct/1488.html
#25yrsago Adobe updates the ebook reader that Syklarov cracked https://web.archive.org/web/20011107145015/http://www.vnunet.com/News/1126057
#20yrsago Hungarian airport proposes “nonremovable” RFIDs for every passenger http://news.bbc.co.uk/2/hi/technology/6044310.stm
#20yrsago China unblocks Wikipedia, even though it won’t censor https://web.archive.org/web/20061016133232/http://www.editorandpublisher.com/eandp/departments/online/article_display.jsp?vnu_content_id=1003251388
#20yrsago Eudora going open source, to be based on Thunderbird https://web.archive.org/web/20061014163143/http://www.qualcomm.com/press/releases/2006/061011_project_collaboration_mozilla.html
#20yrsago Vista license only lets you reinstall your OS on new PCs twice https://web.archive.org/web/20061022161256/http://www.techweb.com/wire/software/193300234
#15yrsago Why handmade keys? https://makezine.com/article/maker-news/rebuilt-keys-jimmy-diresta/
#15yrsago Ryanair declares war on bodily fluids, vows to remove toilets https://www.the-independent.com/travel/news-and-advice/ryanair-unveils-its-latest-plan-to-save-money-remove-toilets-from-the-plane-2369232.html
#15yrsago Comic about the complexity and decline of copyright https://web.archive.org/web/20111014201558/http://www.mediademocracyfund.org/about/mdf-voices/appropriart-a-graphic-about-copyright-susie-cagle-co-produced-mdf-and-gia
#15yrsago Chaos Computer Club cracks Germany’s illegal government malware, a trojan that spies on your PC and lets anyone off the street hijack it https://www.ccc.de/en/updates/2011/staatstrojaner
#15yrsago Vernor Vinge’s Children of the Sky: bootstrapping high-tech civilization from hive-mind Machiavellis https://memex.craphound.com/2011/10/11/vernor-vinges-children-of-the-sky-bootstrapping-high-tech-civilization-from-hive-mind-machiavellis/
#15yrsago Facebook’s misleading “log out” button and the future of privacy legislation https://www.eff.org/deeplinks/2011/10/facebook’s-hotel-california-cross-site-tracking-and-potential-impact-digital-privacy
#15yrsago How online crooks use “work from home” patsies to launder goods and forward them offshore https://krebsonsecurity.com/2011/10/shady-reshipping-centers-exposed-part-i/
#15yrsago Nursery Rhyme Comics: Great comic illustrators do Mother Goose https://memex.craphound.com/2011/10/12/nursery-rhyme-comics-great-comic-illustrators-do-mother-goose/
#15yrsago 3D printed “glitchy” tea-set https://www.plummerfernandez.com/works/glitch-reality/
#10yrsago Meet the WWI women who pretended to be rocks for the war effort https://www.atlasobscura.com/articles/why-women-pretended-to-be-creepy-rocks-and-trees-in-nyc-parks-during-wwi
#10yrsago Bernie Sanders’ touching video endorsing his brother’s candidacy for David Cameron’s old Parliamentary seat https://www.youtube.com/watch?v=VAH8FJ3g49g
#10yrsago Messy: When automated anti-disaster systems make things worse, and what to do about it https://memex.craphound.com/2016/10/11/messy-when-automated-anti-disaster-systems-make-things-worse-and-what-to-do-about-it/
#10yrsago Icelandic Supreme Court: all nine top bankers are guilty of market manipulation https://icelandmonitor.mbl.is/news/politics_and_society/2016/10/06/iceland_finds_all_guilty_in_banker_market_abuse_cas/
#10yrsago When “reputation management” becomes perjury, forgery and fraud against America’s federal courts https://web.archive.org/web/20161011055317/https://www.washingtonpost.com/news/volokh-conspiracy/wp/2016/10/10/dozens-of-suspicious-court-cases-with-missing-defendants-aim-at-getting-web-pages-taken-down-or-deindexed/?utm_term=.379bd5b35a91
#10yrsago If you bail on Yahoo Mail, forget about having your email forwarded https://web.archive.org/web/20161012182945/https://hosted.ap.org/dynamic/stories/U/US_TEC_YAHOO_BREACH?SITE=AP&SECTION=HOME&TEMPLATE=DEFAULt
#10yrsago The clumsy, amateurish IoT botnet has now infected devices in virtually all of the world’s countries https://web.archive.org/web/20161012150926/https://motherboard.vice.com/read/internet-of-things-mirai-malware-reached-almost-all-countries-on-earth
#10yrsago Wells Fargo whistleblower: once I complained, they started denying me bathroom breaks https://web.archive.org/web/20161014180455/https://money.cnn.com/2016/10/11/investing/wells-fargo-intimidation-bathroom-breaks/index.html
#10yrsago The astounding story of Iceland’s constitution – and its government’s failure https://www.youtube.com/watch?v=C1qk-BQwNlA
#10yrsago Wells Fargo’s new CEO previously denied that the bank’s sales culture had any problems https://web.archive.org/web/20161014023238/https://consumerist.com/2016/10/13/new-wells-fargo-ceo-recently-denied-overbearing-sales-culture-that-created-fake-account-fiasco/
#10yrsago The Attention Merchants: a deep dive into the origins of the surveillance economy https://memex.craphound.com/2016/10/13/the-attention-merchants-a-deep-dive-into-the-origins-of-the-surveillance-economy/
#10yrsago AI’s blind spot: garbage in, garbage out https://web.archive.org/web/20190429032014/https://www.nature.com/news/there-is-a-blind-spot-in-ai-research-1.20805
#10yrsago Hungary’s Prime Minister shuts down opposition press, then goes after everyone else https://www.theguardian.com/commentisfree/2016/oct/13/hungary-future-europe-far-right-viktor-orban
#10yrsago Using the science of group conflict to understand Trump’s campaign https://thesocietypages.org/socimages/2016/10/12/trumps-brilliant-manipulation-of-the-science-of-group-conflict/
#10yrsago Bob Dylan is the first songwriter to win the Nobel Prize for literature https://www.csmonitor.com/Arts-Culture/Books/2016/1013/Bob-Dylan-lyrics-as-literature-First-songwriter-to-win-a-Nobel-Prize
#10yrsago Poland’s outrageous abortion law is back https://globalvoices.org/2016/10/13/new-abortion-ban-proposals-in-poland-mean-the-black-protest-movement-isnt-over-yet/
#10yrsago Hate crimes spike after Brexit https://www.bbc.com/news/uk-politics-37640982
#5yrsago India funded a starving kids' app, but not food https://pluralistic.net/2021/10/13/theres-an-app-for-that/#solutionism
#5yrsago Adobe uses copyfraud to preserve spyware https://pluralistic.net/2021/10/13/theres-an-app-for-that/#gnash
#5yrsago Charter uses bad credit threats to corral ex-subscribers https://pluralistic.net/2021/10/13/theres-an-app-for-that/#thugs-charter
#1yrago The curious, intertwined history of climate and digital rights activism https://pluralistic.net/2025/10/11/cyber-rights-now/#better-late-than-never
#1yrago How to fix the UK housing crisis https://pluralistic.net/2025/10/13/castles-not-assets/#steve-keen

Vancouver: Read, Resist, Repair, Rejoice (Vancouver Writers
Festival), Oct 19
https://writersfest.bc.ca/festival-event-2026/01
Victoria: Munro's Books, Oct 20
https://www.munrobooks.com/events/6113620261020
Vancouver: Life After AI (Vancouver Writers Festival), Oct
22
https://writersfest.bc.ca/festival-event-2026/46
Ottawa: Life After AI (Ottawa Writers Festival), Oct 24
https://writersfestival.org/event/life-after-ai
Kilkenny (Kilkenomics), Nov 6-8
https://kilkenomics.com/
Vancouver: Enshittification (Sid Williams Theatre Society), Nov
10
https://www.sidwilliamstheatre.com/events/cory-doctorow-talks-enshittification/
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
Sheffield: Reverse Centaur at Juno Books, Nov 25
https://www.outsavvy.com/event/40274/cory-doctorow-in-conversation
Oxford: Bennett Oxford Symposium on Open Code in Science, Dec
9
https://www.bennett.ox.ac.uk/events/2026-bennett-institute-symposium/
Montreal: World Science Fiction Convention, Sep 2-6
https://montreal2027.ca/en
AI, Work, and Power (Software Engineering Daily)
AI, Work, and Power
https://softwareengineeringdaily.com/podcasts/cory-doctorow-on-ai-work-and-power/
AI, Corporate Power, and the Fight for Worker Control
(Plutopia)
https://plutopia.io/cory-doctorow-ai-corporate-power-and-the-fight-for-worker-control/
How to Think About AI—Before It’s Too Late (Daniel
Solove)
https://www.youtube.com/watch?v=_0xR3uEgGcc
Could Tech Bosses Destroy Life As We Know It? (Politics JOE)
https://www.youtube.com/watch?v=PL4VktU0SgY
"Canny Valley": A limited edition collection of the collages I create for Pluralistic, self-published, September 2025 https://pluralistic.net/2025/09/04/illustrious/#chairman-bruce
"Enshittification: Why Everything Suddenly Got Worse and What to
Do About It," Farrar, Straus, Giroux, October 7 2025
https://us.macmillan.com/books/9780374619329/enshittification/
"Picks and Shovels": a sequel to "Red Team Blues," about the heroic era of the PC, Tor Books (US), Head of Zeus (UK), February 2025 (https://us.macmillan.com/books/9781250865908/picksandshovels).
"The Bezzle": a sequel to "Red Team Blues," about prison-tech and other grifts, Tor Books (US), Head of Zeus (UK), February 2024 (thebezzle.org).
"The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org).
"The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
"Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com.
"Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2027
"The Memex Method," Farrar, Straus, Giroux, 2027
Today's top sources:
Currently writing:
"The Post-American Internet," a sequel to "Enshittification," about the better world the rest of us get to have now that Trump has torched America. Fourth draft completed. Submitted to editor.
A Little Brother short story about DIY insulin PLANNING

This work – excluding any serialized fiction – is licensed under a Creative Commons Attribution 4.0 license. That means you can use it any way you like, including commercially, provided that you attribute it to me, Cory Doctorow, and include a link to pluralistic.net.
https://creativecommons.org/licenses/by/4.0/
Quotations and images are not included in this license; they are included either under a limitation or exception to copyright, or on the basis of a separate license. Please exercise caution.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Bluesky (no ads, possible tracking and data-collection):
https://bsky.app/profile/doctorow.pluralistic.net
Medium (no ads, paywalled):
Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):
https://mostlysignssomeportents.tumblr.com/tagged/pluralistic
"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla
READ CAREFULLY: By reading this, you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.
ISSN: 3066-764X
Statue Kickstarter [Comics Archive - Spinnyverse]
The post Statue Kickstarter appeared first on Spinnyverse.
CodeSOD: A Type of Type Safety [The Daily WTF]
For some godawful reason, people like to explain object oriented concepts via analogy to biological taxonomies. I suppose it's easy to understand an "is-a" relationship (a cat is a mammal), but the down side is you get a complex and increasingly leaky analogy that over-emphasizes the importance of inheritance.
That's not to slight Alan's choice of using it to anoymize today's code. It's just a broad frustration on my part.
In any case, Alan has been working in a C++ codebase that's written by people who maybe don't fully understand all the key object oriented concepts. That's why you get code like this:
/*
* If possible, steal tentacle from the given animal.
*/
void Animal::StealTentacle(Animal *animal) {
// only Octopus and Squid can have tentacles
if (!IS_INSTANCE_OF(this, Octopus) && !IS_INSTANCE_OF(this, Squid)) {
return;
}
Limb *limb = animal->mLimbs->GetFirstTentacle();
if (limb) {
limb->AttachToAnimal(this);
// . . .
This function takes a raw pointer to an Animal
object. If that pointer is not an Octopus or a Squid, we bail.
Otherwise, we're going to take its tentacle, and do stuff with
it.
Now, this is a pretty clear example of the type switch anti-pattern. Instead of using the type system and polymorphism to enforce restrictions, we instead do runtime type checks.
But wait a second, what's going on in that
IS_INSTANCE_OF?
// I've noticed that dynamic_cast always returns a valid result when
// casting an "objectPointer" of type "className".
// Try casting it to a [Organism *] to force it to work. (?)
#define IS_INSTANCE_OF(objectPointer, className) ((bool) (dynamic_cast<className *>(((Organism *) objectPointer)) != NULL))
#define IS_MEMBER_OF(objectPointer, className) IS_INSTANCE_OF(objectPointer, className) // temporary macro alias
This code attempts to take an objectPointer and
first, force it into a pointer to our base type
(Organism), using a C-style cast. Now, in C++, C-style
casts are a shorthand, and the compiler will, based on the context,
attempt to do the best cast which fits the situation, starting with
a const_cast (which only alters the constness of the
type), and failing all the way up to a
reinterpret_cast- which just ignores type information
entirely and assumes you know what you're doing.
Which this developer clearly doesn't.
In any case, we pass the C-style cast result into the
dynamic_cast function, which attempts to cast that
pointer into an instance of className. If no such
conversion is possible (because they're not part of the same
inheritance hiercharcy), it returns NULL, which is
what they're checking.
Their comment highlights their misunderstanding of the function;
dynamic_cast can be used to crosscast. In other words,
dynamic_cast<Dog*>(my_cat) will actually work,
because (in this example) Dog* and Cat*
share a common base.
From the docs:
Otherwise, if expression points/refers to a public base class subobject of the most derived object, and the type of the most derived object has an unambiguous and public base class of type Target, the result points/refers to the Target subobject of the most derived object. In other words, dynamic_cast can be used to crosscast (or side-cast) pointers/references, between two types derived from the same base.
You shouldn't be using dynamic cast to solve this problem. Hell, you sohuldn't be doing any of this in the first place!
In any case, in actual usage, the developers responsible do stuff like this:
if (IS_INSTANCE_OF(animal, Felid)) {
Felid *cat = (Felid *) animal; // Yes another C-style cast - this time (hopefully) devolving to the same dynamic_cast hidden inside the expansion of the previous macro.
I love when a comment says "hopefully". "This hopefully does what I think it should do".
I'll let Alan summarize the problems:
Used prudently, the dynamic dispatch facility that object oriented languages provide their users can be a valuable tool for capturing the domain model in clean, elegant code. However, as even C++'s designer Bjarne Stroustrup acknowledged, in "The Design and Evolution of C++", the introduction of support for Run-Time Type Information makes it possible to spurn such assistance and write RTTI-based code for which a verdict of "combines the syntactic elegance of C with the run-time efficiency of Smalltalk" is just "too kind".
Grrl Power #1503 – Umami is in the mouth of the beholder [Grrl Power]
What is the funniest condiment? Originally, Cthillia demanded spicy mustard, but I capriciously changed it before posting. I do think both options are good on tempura… well, I don’t know about ratballs, but generally spicy mustard and yum yum sauce go well with most fried things. Ponzu sauce too. BTW, “ratballs” are not clumps of rat testicles or testicles from giant rats. It’s a rat, crushed into a ball, and batter fried. I don’t know where the extra bones come from.
Anyway, I don’t know if “Magic Shell” ice cream topping counts as a proper condiment, but I guess that’d be amusing to put on any random food item. Likewise, I don’t think candy sprinkles are proper condiments either. I think a condiment pretty much needs to be a sauce? Chutney is a funny sounding word. So is Tahini, but I think they’d both be perfectly acceptable for a fried crunchy meat surprise. Chimichurri is also a funny sounding word, but it’s also delicious. I dunno, maybe for a funny condiment, you’d have to veer into the unexpected, like if she wanted grape jelly for her ratballs. Or grape jelly and yellow mustard, which sounds foul, but actually, if you put equal parts jelly and mustard in a crock pot and dump in a bunch of meatballs, you’ve basically got a pot of sweet and sour meatballs. That used to be my go to for office pot lucks.
Is Deus kind-of-maybe hitting on Cthillia in a childish bid to make Sciona jealous? I have no idea, actually. I think he’s just being gregarious and obnoxious. He’d call it “chummy,” especially if he was kind-of-maybe hitting on a shark woman with a bucket of fish guts. See? Cause… the fish bucket… >cough<
As for why he’s got a box next to Cora’s suite? He knows Dabbler and knows she’s old friends with Cora, so maybe he found out that she was getting a suite and booked the one next to hers for… reasons? Probably to hit on Cora, if the opportunity arose, if I’m honest. He is definitely aware that Cora’s ship was conspicuously not reported as having left Earth, and Earth in the world of Grrl Power is still fairly excited about the revelation of aliens and the one spaceship full of sexy aliens that hangs out with the still newly revealed sexy superheroes, so there’s more than a little media attention on the comings and goings of Cora’s ship. Which I think I named “The Interdictor,” which is not especially memorable or creative, IMO. Maybe I’ll say it’s a heavily modified Interdictor class ship if it comes up again. I don’t recall if the name even appeared in the comic or just in my post below some page.
It would be weird dating a guy who could palm both of your butt-cheeks at once. I… assume. I have no perspective on that. Actually I probably drew Harem’s butt too small there in panel 2 and 4. It’s one of those things that looks okay from this exact angle, but if I had to animate it in a 3D fly around it’d probably be all kinds of messed up. I think I underemphasize hips on women, which I’ve been trying to correct – where appropriate. Especially fit women tend to have smaller looking hips because they have less padding to smooth out their curves, and I mostly draw fit women or beanpoles. I think I draw butts too small too, generally. Max is supposed to have one of those “a little too much time on the stairclimber” butts, AKA a conspicuous, but very fit butt. Granted I usually draw her wearing non-skintight paramilitary style pants, but of course Ixah has no excuse.
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.
The best in the world is a local problem [Seth's Blog]
On a good day, my bongo score looks like this:
Compared to all the people who have played this morning, it’s right at the top. That could be great…
Except I’m not being compared to every player in the world. The first graph is built to compare every player who has never previously won the competition.
Here’s the curve of all players, including the 500 previous champions. To win the day, you need to get through that dip that most players don’t achieve.
Same score, different ranking.
Here’s Shelly-Ann Fraser-Pryce running against the other parents at a school picnic:
I’m sure she deflated the egos of quite a few parents, the ones who usually win at these sorts of things.
Choosing our competition is the most productive decision we make each day.
The internet has made the world smaller, and the universe of competitors larger. But it’s still local–awareness, trust and convenience drive choice.
To be chosen, we need to be seen as the best in the world. But we get to choose which world.
Man-Made Horrors, Part Three [Penny Arcade]
New Comic: Man-Made Horrors, Part Three
Welcome our new member - Richard Qin [Planet GNU]
Hi, All:
Please join me in welcoming our new member:
User Details:
-------------
Name: Richard Qin
Login: richardqin
Email: richard.qin.x@gmail.com
I wish Richard Qin a wonderful journey in GNU CTT.
Happy Hacking
wxie
Swapping money for expertise [Cory Doctorow's craphound.com]

This week on my podcast, I read Swapping money for expertise, a recent essay from my Pluralistic blog about the political economy of “AI” based on theory-free inference.
The need to understand and describe a thing before you could apply “AI” to it is a bottleneck, because it requires programmers to understand how a thing works before they can incorporate it into an “AI” system. Lots of programmers know how to play chess, but far fewer understand the human pancreas, planetary weather systems, or patterns of mineral deposition in the Earth’s crust.
For programmers to apply machine learning to these domains, they need to collaborate with experts who do understand them, who furthermore expect to be paid for this work. The need for expert input into this kind of “AI” represents a significant increase in the wage-bill paid by the programmer’s employer: it means they have to pay for programmers and experts.
Even worse: this kind of “AI” can’t be applied to systems we don’t understand. We can observe far more causal relationships – instances in which A reliably causes B – in the universe than we can explain. There are lots of examples of us operationalizing these observations without understanding them. If you get sick today, your doctor might well prescribe one of the many medicines whose method of action is either incompletely understood or not understood at all. We know that molecule A reliably treats pathology B, but not why, and while that why is the subject of ongoing research, it’s not necessary that the why be known before the molecule can be given to ailing patients.
Girl Genius for Monday, October 12, 2026 [Girl Genius]
The Girl Genius comic for Monday, October 12, 2026 has been posted.
Help, I’m Too Helpful [Ctrl+Alt+Del Comic]
I don’t know how or when this really happened, but I have somehow become that guy that volunteers for shit as pertains to any of my kids’ many activities. Coach, board member, social media coordinator, prop-builder, uniform designer, etc. I am suddenly wearing a stupid number of hats because I cannot seem to keep my […]
The post Help, I’m Too Helpful appeared first on Ctrl+Alt+Del Comic.
Kernel prepatch 7.3-rc7 [LWN.net]
The 7.3-rc7
kernel prepatch is out for testing. According to Linus: "As
always, I would have preferred to see a smaller rc, but it's not
like anything in here looks like a reason to delay the final
release. So that's still set for next weekend unless something new
comes up.
"
One notable change that slipped into the mainline this week is the deprecation of the ext4 data=journal mode; it will be removed entirely at the beginning of 2028.

processing...
One way of thinking about access specifiers in C++/WinRT implementation types [The Old New Thing]
In C++/WinRT, Windows Runtime classes are exposed to the outside world through the projection, but internally they are represented by their implementation type. Since the outside world sees only the projection, implementation types are visible only to the module that produced them.
This realization lets you reinterpret the C++ access specifiers for C++/WinRT implementation types.
| Declared on implementation as |
C# and C++/CX equivalent |
Accessible to |
|---|---|---|
| implemented interface | public | Anyone |
| public | internal | Code in the same module |
| protected | protected | Code in derived classes |
| private | private | Code in the same class |
In code:
struct Widget : winrt::implements<Widget, IStringable>
{
public:
// This is a member of IStringable,
// so it is accessible to anyone.
winrt::hstring ToString();
// This does not implement any member from IStringable,
// so it is accessible to other code in the same module.
void Recolor(winrt::Windows::UI::Color newColor);
protected:
// Accessible to implementation classes that derive from Widget.
void Reverse();
private:
// Accessible only to Widget itself.
void Reset();
};
Note that if you are implementing a runtime class, then C++/WinRT autogenerates a template for you that auto-declares all of the declared interfaces of that class.
// Widget.idl
namespace Contoso
{
runtimeclass Widget : Windows.Foundation.IStringable
{
String Name{ get; };
void Toggle();
}
}
The IDL compiler autogenerates an interface IWidget
with a property Name and a method
Toggle().
// implementation
namespace winrt::Contoso
{
struct Widget : WidgetT<Widget>
{
⟦ ... ⟧
};
}
The WidgetT<Widget> expands to
implements<Widget, IWidget,
Windows::Foundation::IStringable> because those are the
interfaces declared by the IDL file.
The post One way of thinking about access specifiers in C++/WinRT implementation types appeared first on The Old New Thing.
Automattic has created a Stewart Brand website to honor one of the most creative and respected people of my generation of the web. Chronicling his work is time well spent. "I'm envious," I wrote in response. "The tech industry is gradually disconnecting the early web, pre-https. A hundred years from now they may have your writing and pictures, but the early web will be gone. The web as designed was very resilient, but it can’t survive deliberate attempt to destroy." I think Stewart would understand why we should help the web we loved so much, archive itself. Think about it this way. Would you rather visit the Hearst Castle at San Simeon, or read about it in a book? You'd want to do both. I want my work to survive a hundred years as it was when it was first published. This would be a good thing for us to work on, together, imho. I did the first Long Now bet for Stewart's Long Now foundation. I always thought it was the first, now they say it's the second? Did someone pull rank? :-)
Basic lesson for people who use Claude Code -- it's
your time that's valuable, not the bot's. If you find you're
lost in the weeds supporting Claude for whatever reason, find a
good stopping point, pick up another project, that doesn't use AI
to do your code-writing. If you have a question ask ChatGPT browser
version, but only for the kind of stuff you'd ask it in 2025.
You're not co-developing. You're doing it yourself. It's very
important to be clear about your coding, not Claude's output.
Here's the key point -- it's your time that's limited, that has all
the value. You can get Claude to develop something, but if you
don't have time to use it, to nurture it, nothing will come of the
work. I was surprised at how I'd lost the rhythm of writing my own
code, and also how much I liked doing it myself. It's easy to get
lost in the miracle of AI, good to pop up for air every so
often.
Steinar H. Gunderson: Decompiler patterns, part 8: Un-repetition of conditions [Planet Debian]

Today, for a slightly more complicated snippet, but still in the same general area; say you have code like this:
x = (0x1000 - y) / 24;
z = var_s5 < 5;
if (x >= 0x81) {
x = 0x80;
z = var_s5 < 5;
}
var_s4 = 0;
if (z == 0) {
In particular, note the z = var_s5 < 5;
repeated. Most likely, this is the compiler sticking stuff into
branch delay slots, or else re-checking the condition if
var_s5 changed in the branches (it does not here). You
almost certainly want to undo this into:
x = (0x1000 - y) / 24;
if (x >= 0x81) {
x = 0x80;
}
var_s4 = 0;
if ((var_s5 < 5) == 0) {
and the if, as we already know, should probably rather then be:
if (var_s5 >= 5) {
For a small bonus (since I'm not going to have a separate post about it), you can choose to change the upper if to:
if (x > 0x80) {
x = 0x80;
}
which generates exactly the same code (on MIPS), but may in many cases be easier to understand.
Talent becomes media [Seth's Blog]
Rivian has a new ad, starring Bill Murray.
It’s not a great ad (more on that below) but the remarkable thing is that it features the quirky, beloved and scarce Bill Murray. Between the movie rights, music and Bill, they had to have spent many millions of dollars, and it doesn’t look like they bought a single slot of ad time. For less total cost than a boring Ford commercial in 1985, they hooked up with two icons.
That’s a complete flip from hiring an unknown to pitch your brand of freeze dried coffee but spending millions on network TV.
Thirty years later, the attention equation is now reversed. No one watches an ad on YouTube unless they want to, and so, your talent buy is your media buy.
This is going to amplify a different sort of creative agency as well as give recognizable talent more leverage. A good ad in the TV days was annoying but led to action. A good ad today creates enrollment and buzz. Attention is insufficient, though. Ghostbusters was seen by millions, but it didn’t sell many vintage Hearses.
[And why is this a lousy ad? I love my Rivian, but not because it has a Ghostbuster button. The first job of advertising a new brand is to earn it a position, to give us a story about what you’d like to stand for. Who it’s for and how we’re going to feel when we wear the label you’re offering us. Jaguar dropped the ball when they re-branded last year. AI companies are terrible at this as well, and it appears that Rivian missed a chance with Bill.]
Don’t cross the streams.
PS While we’re on the topic, please don’t buy cheap chocolate.
Russ Allbery: Review: Daggerbound [Planet Debian]
Review: Daggerbound, by T. Kingfisher
| Series: | Swordheart #2 |
| Publisher: | Bramble |
| Copyright: | 2026 |
| ISBN: | 1-250-40009-0 |
| Format: | Kindle |
| Pages: | 436 |
Daggerbound is a secondary-world fantasy and a sequel to Swordheart, although it follows different protagonists for most of the book. It's also a sort of sequel to the Clocktaur War duology in that one of the protagonists was a protagonist of those books. T. Kingfisher is the pen name Ursula Vernon uses for her adult fiction.
Learned Edmond was once a devout acolyte of the Order of the Many-Armed God and a true believer in its teachings, including the ones about the evils of women. Then he went on an adventure with, among other people, a forger named Mistress Slate, during which he learned a great deal of things about the world that his order did not teach him. He has spent the subsequent years trying to bring this important new information to his order and encourage them to adjust their view of the world accordingly.
The order has not changed, and Edmond is very tired.
Someone needs to carry a number of books and a magical sword to the city of Archon's Glory. Edmond has volunteered and intends to perform the task exactly as expected, and then never return. He is unsure what he will do then, but at least it will be different.
Edmond did not expect to be waylaid by bandits or to accidentally draw the magical sword. He certainly did not expect the man who appeared in a flash of light and violently saved him from the bandits.
It would have been very convenient for the Dervish if Edmond died of his injuries after drawing the sword. That would leave the sword without a wielder and therefore the Dervish without someone he had to protect. All he would have to do was sit and watch while the fever and cold and lack of water did the work, and then he would be free. Given his past experience with wielders, no one could even blame him. Except maybe his own conscience.
I did not realize I wanted to read a novel about a traumatized Mercedes Lackey sword waking up in a T. Kingfisher universe, but apparently I did.
The Dervish is not a sword, precisely, at least not in the way that Need has become by the time we meet her in Lackey's novels. He's a man trapped in a sword, he doesn't like it, and he would very much like it to stop. But at the start of the book, he has the rest of the vibe of a Mercedes Lackey protagonist: vast past trauma, poor emotional regulation skills, and a prickly cynicism that only runs skin deep. Pairing him with an Edmund who is far more mature than in the earlier duology but still rather innocent and delightfully neurodivergent is a great touch.
The rest of the plot was fine but not that memorable. Like the Clocktaur series, there is a strong feeling of episodic D&D adventure as the characters stumble across disconnected problems and hostilities while collecting party members. Like Ursula Vernon's occasional D&D recaps, this party has a tendency to adopt everyone they come in contact with, which includes a gnole (as always one of the best parts of the book) and a sentient giant pill bug. The pill bug, who has a complex appendage-operated mechanical talk box and a banner that says "I DO NOT EAT HUMAN MEAT," is the most Ursula Vernon character that has ever existed in fiction.
There is a romance because there is always a romance in the novels set in this universe. I didn't mind this one. Like every Kingfisher romance, it involves a lot of irritating refusal to communicate and endless angst about how the other person couldn't possibly be in love with them, but the characters have rather more justification than usual and at least I didn't spend most of the book thinking one half of the romantic pairing was an idiot. Apparently it helps if no paladins are involved.
The strongest parts of this book are the beginning, before the Lackey vibes unfortunately drain out of the story, and the end, when all of the best characters from Swordheart show up again. The Temple of the White Rat continues to be the best feature of this fictional universe, and I could read endless books about how they solve problems.
The Dervish gazed at her with admiration. "And here I thought you'd be on the side of law and order..."
"No, young man," said Beartongue, despite being several centuries his junior. "I am on the side of justice. If we're lucky, the two run in parallel. If they don't, we bend the law to attain justice, not the other way around."
The ending also featured some exploration of the edge cases of the rules for the sentient swords that reminded me a bit of Fred Saberhagen with better characterization.
Daggerbound was not as charming as Swordheart, mostly because Halla appeared only at the end. I wish Kingfisher had leaned more into the Mercedes Lackey vibes rather than taking her normal D&D-flavored romance approach. But this was enjoyable, charming at times, had great supporting characters like all Kingfisher novels, and was a satisfying continuation of the series. I am looking forward to the third (and I believe final) book, which is supposed to be out next year.
Recommended if you liked Swordheart.
Followed by the not-yet-published Shieldborn.
Rating: 7 out of 10
Urgent: Investigate Sen. Collins [Richard Stallman's Political Notes]
US citizens: call on the Senate to investigate Sen. Collins for possible corruption.
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: Opposing surveilling pricing [Richard Stallman's Political Notes]
US citizens: thank states and cities for opposing surveillance pricing.
Urgent: Block destruction of national parks and forests [Richard Stallman's Political Notes]
US citizens: call on Congress to block the saboteur in chief from destroying America's national parks and forests.
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: Thank Germany for Safeguarding U.S. climate data [Richard Stallman's Political Notes]
US citizens: thank Germany for Safeguarding U.S. Climate Data.
Digital display of product prices [Richard Stallman's Political Notes]
The AFL-CIO warns that digital display of product prices is likely to eliminate tens of thousands of jobs in the US while increasing grocery prices significantly.
If you think those two consequences are contradictory, it could be that you believe that the main factor affecting products' retail prices is how much the products cost the store. That economic theory was based on the assumption of so much competition that it would compel stores to pass savings along to the customers.
Nothing like that is true nowadays. After decades of mergers and megamergers, and data companies that enable all stores easily to sync up prices without directly communicating about them, competition hardly affects what stores can charge.
Connected car ideal for coercive control [Richard Stallman's Political Notes]
A connected car is an ideal weapon for coercive control — by people you know, or by strangers working for your country's government, or by strangers working for another country's government.
Abdul El-Sayed for senator from Michigan [Richard Stallman's Political Notes]
Robert Reich supports Abdul El-Sayed for senator from Michigan.
Failure to punish Dubya for torture [Richard Stallman's Political Notes]
The US's failure to punish Dubya for torture, in Guantanamo and other parts of the world, paved the way for the persecutor to embrace torture in the US.
Legal excuse for presidents to block investigation [Richard Stallman's Political Notes]
The corrupter's Department of Thwarting Justice has invented a new legal excuse for presidents to block investigation into their conduct by Congress or courts.
Datacenter exemption from disclosing air pollution [Richard Stallman's Political Notes]
The polluter in chief has directed his henchmen to give datacenters an exemption from disclosing their toxic air pollution.
Robert Reich on Alexandria Ocasio-Cortez as Democratic nominee [Richard Stallman's Political Notes]
Robert Reich lauds Bernie Sanders, then encourages Alexandria Ocasio-Cortez to run for the Democratic nomination for president in 2028, although he does not expect she would win it this time.
I know one reason that she probably won't win it: the Democratic National Committee is is dominated by big business, and it barely disguises its bias against progressive candidates.
I voted for Sanders, and if Ocasio-Cortez runs, I will vote for her.
Right-wing extremist party in Sweden's government [Richard Stallman's Political Notes]
Admitting a right-wing extremist party into Sweden's government has spread hate, cruelty and global heating denialism into the rest of Sweden's parties.
(satire) GTA VI feature [Richard Stallman's Political Notes]
(satire) *Hyperrealistic ‘GTA VI’ Feature Makes Players Serve Out Prison Sentences In Real Time.*
Things FLOCK cameras capture [Richard Stallman's Political Notes]
FLOCK cameras don't just capture license plate numbers. They capture faces, too, and other aspects of the appearance of people and cars.
Often cops search for people photographed while merely standing for a while in one place.
We need to do more than end federal subsidies for such cameras. We must stop them from being useful for repression, by putting strict limits on surveillance cameras and permitting only security cameras.
Laws being pushed by Big Chemistry [Richard Stallman's Political Notes]
Big Chemistry is pushing a law to prohibit accusing factories of dangerous pollution based on the sort of air quality monitors that ordinary people can afford.
Protecting Koalas and allowing greenhouse gas emissions [Richard Stallman's Political Notes]
Australia is considering a deal to protect more of the forests where koalas (vulnerable) live in exchange for allowing additional greenhouse gas emissions.
In effect, planet roasters are holding adorable koalas hostage with a demand to let them continue destroying civilization and the biosphere. Bravo for the Green legislators with the courage to denounce that ransom demand.
Support for affordability and accountability [Richard Stallman's Political Notes]
Progressive campaigners report that most Americans would support a political campaign that joins the goals of "affordability" (to benefit the non-rich) and "accountability" (to be imposed on the rich).
It is useful to know that this combination — lowering prices by eliminating corruption -- can defeat the magats and plutocratists. However, it is not evident to me that the combination includes or implies preventing climate disaster, restoring human rights, upholding science, protecting everyone from Orwellian surveillance, and rejecting bigotry.
Thus, if "accountability" and "corruption" are interpreted in the usual narrow sense, I'd have to say these two goals alone are disastrously insufficient.
Neo-Nazis in Republican employment [Richard Stallman's Political Notes]
Some Republican officials are treating and describing neo-Nazis as toxic in their employment.
That is a positive change, but they need to understand that if you run in the same circles as Nazis — in the circles that have vicious ideas that attract Nazis — you will have opportunity after opportunity to take up with someone who is a Nazi. Look how many Republicans associate willingly with Elon Musk, or the monster in the White House. They can hardly avoid
I praise the old ACLU for defending freedom of speech for everyone, to express any views whatsoever — even including Nazis. I cite Nazis as an example here because their views are as vicious as can be. I am sure the ACLU's leaders judged them that way too. But they recognized that when you start denying people's freedom of speech because you dislike their views, that is the start of tyranny — and people who criticize the powerful in any way are likely to be on the receiving end.
I am not surprised that the extent of support for Nazi views in some countries today goes hand in hand with hatred and cruelty for many disprivileged groups.
Recognizing the freedom to advocate vicious views does not imply ceasing to castigate them.
Utkarsh Gupta: FOSS Activities in September 2026 [Planet Debian]
Here’s my monthly but brief update about the activities I’ve done in the FOSS world.
Whilst I didn’t have much time, here are still a few things that I worked on:
seeded-in-ubuntu to use the new
per-series indexer (LP: #2160240).
I joined Canonical to work on Ubuntu full-time back in February 2021.
generate-freeze-block in
ubuntu-archive-tools a couple of new options
(--skip-update and --series) and better
error handling (MP).
This month I have worked 33.5 hours on Debian Long Term Support (LTS) and on its sister Extended LTS project and did the following things:
(A quick note that I did quite a lot of the work during my work as Frontdesk that went on till 4th Oct, so 33.50 hours include the work I did till 4th October 2026.)
node-lodash: Prototype pollution in
_.unset and _.omit (plus a bypass of the
initial fix for it), and code injection via the
imports option of _.template.
lodash.template module throws “assignWith is not
defined” at runtime, which node-gulp-util’s autopkgtest
caught.libpng1.6: Use-after-free of zlib input in
png_read_end() after incomplete zTXt, iTXt, or iCCP
decompression, which could result in denial of service.
ela-needed;
the same upstream fix applies to all three ELTS suites, so this
should go out shortly.[E/LTS] Did my front-desk week from 28-09 to 04-10.
dla-needed (apache2, chromium, firefox-esr,
libnet-idn-encode-perl, libpng1.6, node-shell-quote,
nvidia-graphics-drivers, openssl, pcre2, php-mongodb, php8.2,
social-auth-core, and wpa) and 16 in ela-needed
(apache2, firefox-esr, gegl, lemonldap-ng, libnet-idn-encode-perl,
libpng1.6, libwebsockets, nsd, nvidia-graphics-drivers, pcre2,
php7.0, php7.3, php7.4, rar, unrar-nonfree, and wpa), 7 of them in
both. Also widened 3 ELTS entries to bullseye - antiword, ocaml,
and openvswitch.<not-affected> verdicts: 217 of
263 (83%, across 57 packages) rest on showing that the
vulnerable code or feature isn’t in the source we ship.
Another 17 cover incomplete upstream fixes that we either never
shipped or shipped with the follow-up already in (expat, libxml2,
node-tar, and pyjwt). 15 come from bundled components we
don’t ship - node-ajv again, which uses uri-js and not
fast-uri, and nvidia-open, which doesn’t ship the NGX
updater. And 13 are vendor- or platform-specific - openssh’s
CVE-2026-55654 lives only in a Red Hat GSSAPI patch, and the
netdata and PHP ones only affect Windows.XML_GE is never defined.<no-dsa> lines on jsch, node-qs, and
ruby-loofah, where trixie’s version doesn’t have the
vulnerable feature at all.cve-ad --package P --severity tbd wipes the CVE-level
severity, and the schema doesn’t validate package-level
entries at all.[E/LTS] Monitored discussions on mailing lists, IRC, and all the documentation updates.
[E/LTS] Attended the monthly LTS meeting on IRC. Meeting notes here.
Until next time.
:wq for today.
View From A Hotel Window, Cleveland: 10/10/2026 [Whatever]

Bet you weren’t expecting a View From A Hotel
Window double feature today, were you?! While my father is in New
York City, I find myself in.. Cleveland! Yay, Cleveland!
Jokes aside, I am very glad to be here with my friend for the next couple of days and we have so much fun stuff planned. I know it’s gonna be great! Hope you have a nice couple of days, as well.
-AMS
Steinar H. Gunderson: Decompilation patterns, part 7: if to condition [Planet Debian]

A variation of the pattern from yesterday; say you have:
if (x == 3) {
y = 0;
} else {
y = 1;
}
When these are zero and one, sometimes this will give a better match, since booleans are evaluated as such:
y = (x != 3);
It's rare to have something else than zero or one work
for this pattern (e.g. you would rarely write y = (x != 3) *
2 + 1).
Today I did something different. I wrote a little Node app, without Claude's help. It was a revelation. It's been most of a year since I actually started even a test app and wrote it from beginning to end. I used to do this routinely. Nothing routine about it anymore. What this app does, it generates a Markdown-only version of scripting.com for testing. I want to see what such a site looks like. It'll be a start.
Tim Retout: Reading my solar inverter over RS485 [Planet Debian]
For over ten years, the only way I have had of knowing what our solar panels are doing has been an impulse monitor on the generation meter, counting the flashes of its LED. It has always been a bit flaky due to battery changes or loose connections, and there has never been a way to see solar generation alongside the energy used by the rest of the house. This week I have fixed that, by building a small ESPHome sensor which talks directly to the inverter. I am still reeling slightly: with AI assistance, it took under a week from idea to working implementation, and it is a project I would certainly never have attempted otherwise. The result is zeversolar-esphome.
The inverter is a Zeversolar Zeverlution 3680, which has an RS485 port but no Wi-Fi or Ethernet module. It doesn’t speak Modbus; it uses Eversolar’s own master/slave protocol, which nobody has officially documented but which several people have reverse-engineered over the years (credit to eversolar-monitor, Heliograph and others). Manufacturer support for Eversolar/Zeversolar inverters apparently ended in December 2019 when the company went out of business.
The rating plate on my inverter.
A while ago I had looked into what ports were available on this inverter with a view to connecting some sort of monitoring, but I had abandoned it as “too hard”. While working on some Home Assistant configuration, Claude suggested the idea again, but similarly wrote it off initially. I encouraged it to explore a bit further, and supplied the model number of the inverter, at which point the picture got a lot more promising. After a bit of back-and-forth about hardware, we settled on an M5Stack Atom Lite on an Atomic RS485 Base. The main attraction was that it already comes in a case, so I didn’t need to design (or, more likely, bodge) an enclosure.
While I waited for the parts to arrive, Claude wrote the firmware: an ESPHome external component built around a small, dependency-free C++ driver, with host-side unit tests against byte captures that other people had published from other models. I found it slightly surreal to have a tested protocol driver before owning any hardware to run it on.
The parts came before the tools I needed to get into the inverter safely (a DC clamp meter and a T25 screwdriver bit), so in the meantime I made up an RS485 cable - this uses an RJ45 connection at one end, and some custom wiring at the other. My first attempt was with some CAT 6, but (as Claude had pointed out and I had ignored) its solid-core conductors are much harder to twist together. So I gave up and sacrificed an old CAT 5e patch lead instead, which went much better.
The custom end of the cable, before being taped up.
On a Zeverlution, the RJ45 sockets are inside the wiring compartment, which means taking the cover off to install the monitor. The manual addresses this part to qualified electricians. So the step I was most nervous about was not the software at all, but safely isolating the inverter.
Inside the inverter, with the cover off.
I did this with appropriate caution, following the instructions from the manual carefully, and also waiting until after dark just in case. Now that I understand how the DC clips from the panels work, I can see how to do this safely during daytime too – but hopefully this won’t be necessary.
Plugged in, and threaded through the cable gland.
Warning: if you’re not confident, I would always advise to get an electrician to do this bit. Do what I say, not what I do.
Once the device was installed, the nice thing about ESPHome is that I never need to go back in the loft again to update it – it reflashes over Wi-Fi. I’ve taken full advantage of this for debugging, and for reading the wire protocol directly from the logs.
The finished device. Green means generating.
Separately, I’ve used Claude to integrate the new sensors into Home Assistant. Solar generation finally sits in the Energy dashboard next to the rest of the house’s usage, which was the whole point.
This was a fun, quick project, and it solved a problem that has eluded me for a decade. I want to be honest about how much of that is down to the AI: I would not have attempted any of this on my own. I could not have told you the protocol existed, never mind implemented it. My contribution was everything involving a screwdriver, and ordering some hardware.
BT SFI Should not exist any more [RevK®'s ramblings]
It is a while since I have ranted about "Special Faults Investigation" service that Openreach sell.
This system worked pretty well, and at each level someone is providing a service to some spec for a fee, and if the service breaks and does not meet that spec, then of course, they have to fix it, at no charge to their customer. Each layer builds on many parts to make a service to their customer.
This is where SFI comes in - there is gap. If the metallic path breaks, Openreach will fix it, however if it meets the spec (based on telephone calls) but is not good enough for ADSL data (e.g. below the min sync level BTW have agreed with the ISP), then Openreach DON'T HAVE TO FIX IT because it meets the metallic path spec. So they SELL an extra service to BTW, a Special faults Investigation, which, for a fee, involves the engineer trying to improve the metallic path (beyond the spec) to be better for data (e.g. ADSL). BTW have to buy this so as to fix the broken data service that they are selling to the ISP.
All of the above sounds fine, at first. Bear in mind, BTW sell a data service to ISPs, and if a DSLAM breaks they will get it fixed (at not charge to ISP) and the same should apply if the data over the metallic path breaks (e.g. below agreed minimum sync rate), and again as not to spec that should be at no charge to ISP. But BTW DID CHARGE ISPs for the SFI. What is worse is many ISPs then charged their customers for the SFI!
This led to a lot of disputes, and the pettiness got mental. Some examples are BTW used to say SFI was optional so on all faults said we do not opt for SFI. They then refused to actually fix lines unless and SFI was booked but said charge was for work beyond the master socket, so we said do no work beyond master socket. They then said they could not accept that request, and also said that a visual inspection of the end user router and wiring counted as (chargeable) work beyond the master socket. At one point we instructed customers (who did this) to remove their router and all wiring and physically hide it out of sight before the BT engineer arrived. We had pictures even. BTW still tried to charge. On one occasion the engineer immediately closed the fault as "no customer router plugged in", without testing or fixing the fault! We have done well disputing SFI charges at every stage, usually quoting their own terms to them and again explaining that we (as an ISP) are not buying a metallic path.
Note: there is a logic for a charge for wasting time - reporting something that is not a fault, e.g. an engineers visits and finds the end users router is on fire - a charge on that basis, as a penalty of some sort, does make sense and makes sense to be passed on to whoever screwed up.
Now we have the crux here - we are still getting SFI charges, and still spending time disputing them, but for almost all lines SFI should not exist. To explain, that initial bullet point has changed for most lines now - because of the UK telephone service switch over from old copper pairs to the exchange.
What we have here is no longer a gap - no longer is Openreach selling a metallic path and BTW using it to sell a data service. If the data service is not working it is Openreach not providing something to spec, and so Openreach should fix that as a NORMAL FAULT INVESTIGATION. There is no gap for which SFI was invented to cover. Indeed, BTW should dispute every such SFI charge before even thinking of charging us (ISP).
There are still some ADSL, but they are quickly going, so SFI could exist for those lines for now - with the same original controversy of BTW trying to charge ISPs, but this is dwindling. Somehow BT try to charge for SFI for VDSL and FTTP services even now where it logically makes zero sense.
If BTW really are separate from Openreach now, they really have no excuse for not disputing every SFI charge related to FTTC or FTTP on this basis.
One thing BT never had the nerve to do with all their changes to contract terms was make it so that their customer would have to pay them to fix a service they agreed to provide, but were failing to do so. Such a contract, even on a commercial basis, would be very challenging, and I would hope OFCOM could be persuaded to step in if that happened. The basic concept of I agree to pay you for a service and you agree to provide that service relies on the provider having to provide what they agreed, or they fix at their own cost. They tried a lot - the whole visual inspection is perhaps the most creative, but never that.
I may not be able to say that for all providers, but that is another story.
Productive dissatisfaction [Seth's Blog]
When focused on the things we can change, dissatisfaction is a powerful tool.
Accepting everything else–the parts we can’t or won’t change–reserves our energy for the places where it’s useful.
The tricky part is telling them apart and then focusing our agency and leverage on the useful.
Solving problems for others is how we create value.
Urgent: Tax billionaires' income from wealth [Richard Stallman's Political Notes]
US citizens: call on your state legislators to tax billionaires’ income from wealth.
In my letter I said that this should be in addition to taxing the wealth they already have.
Urgent: Corrupter's government-paid political ads [Richard Stallman's Political Notes]
US citizens: call on networks to stop airing the corrupter's government-paid political ads.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: Tax the rich [Richard Stallman's Political Notes]
US citizens: call on 2026 Senate candidates: Tax the rich, don't cut Social Security!
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: Stop spending medical research funds on war [Richard Stallman's Political Notes]
US citizens: call on your congresscritter and senators to stop the cheater from spending medical research funds for weapons and war.
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: Enforcement of Amazon's safety settlement [Richard Stallman's Political Notes]
US citizens: call on OSHA officials to enforce Amazon's safety settlement with its workers.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: Protect temporary protection status for Haitians [Richard Stallman's Political Notes]
US citizens: call on your senators to protect temporary protection status for Haitians first thing, when the Senate is back in session.
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: Investigate Meta [Richard Stallman's Political Notes]
US citizens: call on Congress to urge the IRS to investigate Meta and take the money back.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Excluding news organizations from press conferences [Richard Stallman's Political Notes]
Australia's right-wing extremist party sometimes excludes specific news organizations from press conferences, apparently to prevent criticism.
The lunatic's antisocial media posts [Richard Stallman's Political Notes]
Robert Reich says he cannot find a plausible motive for what the lunatic posts on his antisocial media site. It makes no rational sense.
His article leads me to a speculation: he wants to keep his fanatical, blind-to-reality followers believing that he is constantly winning against every adversary. He figures that that will keep them giving him blind support.
Oil and gas extraction in the North Sea [Richard Stallman's Political Notes]
Why in the world is Burnham determined to start new oil and gas extraction in the North Sea? It won't provide much benefit except to the profiteers, and it will put the UK clearly in the planet-roasted camp.
Sanctions for Israel's crimes against Palestinians [Richard Stallman's Political Notes]
Prominent British rabbis and prominent Israelis welcome the UK's plans for sanctions against Israel's systematic crimes against Palestinians.
Sabotage of humanitarian aid [Richard Stallman's Political Notes]
The persecutor's funding cuts and sabotage of humanitarian aid around the world have resulted in 64 million people in distress going without aid.
Incredulity and accusations of bribery [Richard Stallman's Political Notes]
*[The corrupter]'s promise of a $5,000 "dividend" for every US citizen if Republicans retain control of the US Congress in November's midterm elections has sparked incredulity and accusations of bribery.*
To say that everyone will receive a payoff if a certain side wins an election is not exactly buying their votes, but it has much in common with that.
From past experience, when the bullshitter promises to give something worth money to citizens in general, he probably won't ever do it. He might change the plan so that the money ends up in the hands of rich people instead, like what happened to the "refunds" for increased tariffs that were canceled by a court. (These were refunded to importers, which had already collected these same amount from individual customers — so the importers got paid twice and the customers not at all.)
But I don't think this is mainly intended to influence voters. It may even backfire, there. I suspect the purpose is to pressure Republican elected officials to stand by the corrupter, lest committed magat voters reject them.
Climate "feedback loops" [Richard Stallman's Political Notes]
*Climate "feedback loops" could worsen global warming by 30%, study finds.*
There are many forms of feedback in climate parameters. I expect positive feedback to have devastating consequences as our generation of greenhouse gases increases.
Since we don't know about all of these feedback effects, it is hard to make overall predictions. But this general conclusion is likely to be valid:
The paper also reminds us why every fraction of a degree matters. The more we warm the planet, the more we risk activating natural processes that add still more greenhouse gases to the atmosphere. This makes rapid reductions in fossil fuel emissions even more urgent.
Positive feedbacks can also magnify the effects of conservation actions.
Man-Made Horrors, Part Two [Penny Arcade]
There's nothing I love more than a wiggling rune, God damn. As soon as I know there's gonna be a rune I stand up a little straighter, maybe groom my eyebrows real quick. I'm always trying to work one into the strip and this time I managed to accomplish it in the most meta way possible. It's powerful stuff.
Twitter: "Expect an avalanche of new software because the dam has broken, one person who knows what they want, and understands UI design can make a big complex app in 2-3 months. Over a weekend you can snap together an app from common UI concepts. Think of making software the same way you play with LEGOs."
Louis-Philippe Véronneau: Removing myself as a Lintian uploader in the next few weeks [Planet Debian]

A few days ago, a colleague reached out to me, asking if I could help draft a resolution on digital autonomy and free software for the upcoming renewal of our collective bargaining agreement. Although she's very politicised and generally a great individual, she is not a techie and we never really talked about these issues before.
This took me by surprise. I should have been rejoicing; no, I should have been the one who brought up this topic in our union. Wasn't I the technical expert on these issues? But alas, my first reaction when she came to me was to snicker and tell myself: "That's cute, but nothing's ever gonna change, Big Tech is too strong and our governments don't give a damn."
How sad and cynical is that? That's not the person I want to be.
Something in the Quebecois political landscape has shifted in the last few years with regards to tech. More and more "regular" people seem to be talking about the importance of digital autonomy, how government services shouldn't rely on Big Tech and how we should be using FOSS on hardware we actually control.
A few years ago, I would have been at the vanguard of this change. I would have been part of the creation of Données souveraines Québec. Heck, they are organising a whole conference next week and I'm not even going. How did this happen to me?
I first fell for Free Software for its political ideals: Knowledge Should Be Free, Cooperation Is More Efficient Than Competition, Centralisation Should Be Avoided When Possible, etc. I still believe in all of this, but somehow, after years of fighting for change in the tech world, I have retreated into technical work. I maintain Debian packages as a hobby and to scratch my own itch. I run services for myself and a few friends. I organise Debian User Group meetings.
To be clear, I haven't generally given up. I'm very politically active in my union and at work, I'm a good member of my housing cooperative and I'm still fighting against the industrialisation of natural spaces in my neighborhood. But when it comes time to defend freedom in the tech world, lately, I've just been shrugging and accepting I should use Microsoft Teams like every one else does. I want this to change and to do so, I need to free some time.
Two years ago, I added myself to Lintian's Uploaders list. Up until then1, I enjoyed fixing little issues here and there and liked creating new tags to help out the Python Team, where most of my Debian time was spent.
Lintian was badly in need of a new maintainer and as I felt it was an important project, I decided to step in. 37 releases and about 160 closed bugs later2, I'm done.
To be honest, I haven't had much fun maintaining Lintian lately. Bugs keep piling on the BTS, so much so I have mostly been ignoring them for the past few months. In fact, most of the actual work triaging, writing code and fixing bug has been done by Nilesh Patra for a while now.
All this to say, if you care about Lintian, you should consider adding yourself to the Uploaders list, as I'm out and Nilesh can't do all the work by himself.
He's a great person to work with and since I don't want to suddenly leave him all alone, I'll be sticking around for a few more weeks in the hope someone else will volunteer to help out. A smooth transition with a new co-maintainer would really be nice!
If you're interested, don't hesitate to reach out to me on IRC or by email.
My first technical commit to Lintian was nearly 7 years ago! Crazy how time flies. ↩
Mostly closed by other people than I! ↩
Dirk Eddelbuettel: RcppSimdJson 0.1.16 on CRAN: Much Faster Again! [Planet Debian]

A brand new release 0.1.16 of the RcppSimdJson package is now on CRAN, has been built for r2u, and is updated on r-universe.
RcppSimdJson wraps the fantastic and genuinely impressive simdjson library by Daniel Lemire and collaborators. Via very clever algorithmic engineering to obtain largely branch-free code, coupled with modern C++ and newer compiler instructions, it results in parsing gigabytes of JSON parsed per second which is quite mindboggling. The best-case performance is ‘faster than CPU speed’ as use of parallel SIMD instructions and careful branch avoidance can lead to less than one cpu cycle per byte parsed; see the video of the talk by Daniel Lemire at QCon.
This version updates to the recent 5.0.2 upstream release with improved performance. Given the strong focus on performance, this release also alters some of the R and C++ interfaces to be more direct. Rcpp generally aims for a balance between readable / maintainable code and good performance; this moves the dial closer to strong performance gains. As Daniel noted in a table in the (main) PR for this release, this now consistently beats yyjsonr, and improves considerably over the previous release of this package. I had made some smaller interim upgrades earlier (without a CRAN releases), and made a number of minor standard packaging updates.
The short NEWS entry for this release follows.
Changes in version 0.1.16 (2026-10-09)
simdjson was upgraded to versions 4.6.1 and 4.6.3 (Dirk in #100 and #102 fixing #99 and #101)
simdjson was upgraded to version 5.0.2 (Daniel in #104)
A number of small tweaks to the Rcpp interface were made too (Daniel in #104)
Diagnostics for
gccandclangare not suppressed per CRAN Policy (Dirk in #106 closing #105)The continuous integration matrix was extended to
g++version 15 and 16 (Dirk in #108 closing #107)A few minor packaging nags were address (Dirk in #109)
Courtesy of my CRANberries, there is also a diffstat report for this release. For questions, suggestions, or issues please use the issue tracker at the GitHub repo.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at GitHub.
Turkish Crackdown On LGBTQ+ Organizations Threatens Freedom of Expression and Association [Deeplinks]
EFF strongly condemns Turkey’s state-led discriminatory, oppressive attacks on feminist and LGBTQ+ organisations, media platforms, student groups, and rights defenders and activists within the country.
Since mid-September, access to the websites and social media accounts of a dozen organizations have been blocked by court order, while over 60 members and activists have been detained, their offices and homes raided, mobile phones, laptops and other digital devices seized, and judicial proceedings launched against them.
These actions threaten the very existence of the LGBTQ+ organizations targeted, limiting their ability to carry out legitimate human rights work, deterring participation and support, and chilling the free speech rights of not just these groups, but any organization that even reports on LGBTQ+ oppression.
A little over a week ago, an Istanbul court shut down the website and social media accounts of T24, Turkey’s longest running independent digital news organization—which has covered government-backed campaigns against and earlier crackdowns on gay rights groups—alleging it had aired “LGBT propaganda” over the past year.
It’s all part of Turkey’s efforts to portray LGBTQ+ groups and support networks for those living with HIV as criminal organizations that must be suppressed, purportedly to protect family values. Homosexuality is not illegal in Turkey (unlike Uganda, Nigeria, and Egypt, where it is criminalized), but LGBTQ+ organizations and activists have in recent years faced increased government oppression, including criminal proceedings on allegations related to obscenity and violations of Turkey’s Law on Associations, which regulates the activities of nonprofits.
In its new crackdown, the government is targeting LGBTQ+ groups’ websites and social media channels for alleged obscene posts accessible to children. Kaos GL, Turkey’s oldest gay rights organization, said investigations are being led by the Cyber Crimes Bureau of the Ankara Chief Public Prosecutor’s Office, which took members of its Board of Directors into custody, raided their homes, and searched the organization’s offices, where electronic devices were seized.
According to Human Rights Watch, prosecutors in Istanbul said those targeted were suspected of “founding, leading, or being a member of a criminal organization,” as well as sex work and drug-related offenses. Publicly available law enforcement and judicial documents about the investigation reportedly don’t say which publications or posts are alleged to be obscene.
The prosecutor’s office launched an investigation of the organization and others under Article 226 of the Turkish Penal Code, which regulates the offense of “obscenity” (without clearly defining it), while the overall operation, dubbed “My Family is Safe” and launched as part of President Recep Tayyip Erdoğan’s “Decade of the Family” program, is being brought under Article 220 of the code. Justifying the crackdown by invoking family values and child safety suggests that the government is trying to enforce a moral code on society based on intolerance of and discrimination against LGBTQ+ people.
Framing the activities of LGBTQ+ rights organizations as violations of organized crime provisions is a new low for Turkey, where free speech and press freedoms have long been under attack. The implication from these raids and investigations is that the organizations’ legitimate civil society work advocating for the rights of queer people—monitoring human rights violations, offering legal aid, running news portals, sponsoring cultural events such as symposiums and film screenings, publishing an online magazine and supporting LGBTQ+ refugees—is suspected of being criminal threatens the basic human rights of the LGBTQ+ community in Turkey.
These actions send a dangerous message to people and organizations exercising freedom of speech and association in support of queer people. Under the penal code, directing a criminal organization is punishable by five to ten years in prison, while merely being a member carries a sentence of two to five years.
EFF joins hundreds of human, civil, LGBTQ+, and digital rights organizations around the world in calling for the immediate release of all those detained for exercising their rights to freedom of expression, association and legitimate human rights work, and the unblocking of all websites and social media accounts of affected organizations.
For many LGBTQ+ individuals the world over, the internet can be a safer space for exploring identity, finding community, and seeking support. The anti-LGBTQ+ crackdown in Turkey is not happening in a vacuum—unfortunately we are seeing anti-LGBTQ+ bills restricting free expression and privacy, content moderation decisions that disproportionately impact LGBTQ+ users, and other forms of intolerance around the world.
We urge international civil society and diplomatic partners to raise awareness of and to speak out against the crackdown, and to publicly show support for the legitimacy of Turkey’s LGBTQ+ organizations and the important work they do to ensure that queer people are safe and free.
View From a Hotel Window 10/9/26: New York City (Again) [Whatever]

Wait, wasn’t I just in NYC? Indeed I was, and now I’m here again, this time for New York Comic Con, where tomorrow I have a panel, a signing and another signing. You should totally come to see me. After this I probably won’t be in NYC for a bit, certainly not again this year. Come get me while the getting is good!
— JS
Resisting the Menace of Federal Data Consolidation [Deeplinks]
In the past two years, the federal government has unlawfully consolidated data exposing our private information.
This consolidation has been chaotic but generally came in three rolling waves: It started with DOGE, moved to agency-to-agency data sharing with ICE, and then attempted data-driven purges of state voter rolls.
We all deserve to live in a world where the data we use to pay our taxes, receive benefits, and vote is not combined and weaponized against us. The amalgamation of data leads to mistakes, abuses, and a lack of trust in institutions meant to protect us. Overall, it can chill our participation in society. This is particularly true for groups disfavored by this administration—especially immigrants and protesters.
Congress highlighted similar abuses—including the creation of enemies lists and snooping on activists and federal employees—following the McCarthy and Watergate eras. And the increasing use of computers to magnify those harms led Congress to pass a slate of protections like the federal Privacy Act of 1974.
The good news is that many people have stepped forward to resist the federal government’s unprecedented and unlawful data consolidations. Many groups, including EFF, have filed lawsuits to enforce our data privacy laws, and many states have, too. Legislators at the federal and state levels have worked to expose and oppose these surveillance programs. And many people have protested for their right to data privacy.
Existing data privacy protections have been essential in the past two years, but they can be improved. This should include: narrowing loopholes and increasing enforcement in existing laws, limiting the government’s purchase of data on the commercial market, and passing a comprehensive consumer privacy law.
Starting on January 20, 2025, President Trump created DOGE—essentially renaming an existing agency originally meant to modernize government technology. Rather than engage in modernization, DOGE quickly obtained high-level access to sensitive databases across the government that store millions of people’s personal records—including at the Office of Personnel Management (OPM), the Social Security Administration, and the Treasury Department.
DOGE was staffed with people with little government or cybersecurity knowledge and who often had conflicts of interest. DOGE’s early aim was not always clear, aside from gaining “prompt access to all unclassified agency records” and the “sharing and consolidation” of those records.
The result? The indiscriminate firing of government employees and the decimation of important agencies that focused on consumer protection and foreign aid. It also resulted in clear misuses of data. For example, while working with DOGE at the Social Security Administration, one individual signed an outside agreement with an advocacy group with the aim of using SSA data to find evidence of alleged voter fraud and “overturn election results in certain States.”
DOGE’s data access and consolidation violated the federal Privacy Act, which limits the sharing and consolidation of government databases. Many groups stepped in to sue. For example, EFF and our co-counsel at Lex Lumina LLC and Democracy Defenders Fund, on behalf of two public employee unions (AFGE and AALJ), sued the OPM for unlawfully disclosing federal workers’ information to DOGE. After EFF and others secured early victories, the government sought to end the lawsuits by firing many DOGE agents and removing their access to records. A great deal of damage remains in need of a judicial remedy.
Even as DOGE’s influence diminished, federal agencies have attempted to share, compare, and seize large databases, in order to target immigrants. In some cases, they have succeeded. This happened with tax records at the IRS, Medicaid data from the Department of Health and Human Services (HHS), and public housing data from the Department of Housing and Urban Development. The Department of Agriculture also sought to collect databases regarding Supplemental Nutrition Assistance Programs (SNAP) from states.
Many groups have filed lawsuits to block this anti-immigrant-motivated data consolidation, alleging it violates privacy protection laws. EFF filed amicus briefs in support of two of these lawsuits: Centro de Trabajadores v. Bessent, which concerns IRS data; and California v. HHS, which concerns Medicaid data (and where we teamed up with EPIC and Protect Democracy). Most recently, states have stepped up to challenge the federal government’s attempted seizure, for immigration enforcement purposes, of state commercial driver’s license data held by the American Association of Motor Vehicle Administrators, a non-profit organization.
This data consolidation for immigration enforcement has also included government purchase of commercial products. This includes ICE’s purchase of commercial location data without a warrant, and its interest in “Big Data and Ad Tech providers.” ICE also has contracts with companies like Palantir, which help organize all the datasets the agency collects.
The right to vote is fundamental to every democracy. That’s why EFF has long advocated for cybersecurity in voting systems, to make sure every vote is properly counted.
Voter purges are a longstanding threat to the right to vote. State and local officials regularly delete people from the voter registration rolls, often for bad reasons and without adequate notice. This has a disparate impact against people of color.
Now the federal government is trying to purge voters, too. To do so, it has consolidated our data in three ways. First, it is using an old data system called SAVE for a new purpose: checking voter eligibility. Second, it has seized voter information from states. Third, it has created a federal list of eligible voters.
As a direct result, people with a right to vote will be purged from voter rolls because of erroneous data. Others will be intimidated from voting or registering. And all registered voters suffer a violation of their data privacy rights: information collected for one purpose is being used against them for another purpose.
Since 1986, the federal government has operated SAVE, which stands for Systematic Alien Verification for Entitlements. It is not a database, but it facilitates easy access to databases. It is used to determine whether immigrants and naturalized citizens are eligible for various government benefits, such as food stamps.
In 2025, the federal government started using SAVE for a new purpose: checking voters’ eligibility. Further, SAVE now provides access to new databases and allows bulk searches. More than 60 million voters have been run through SAVE, and 21,000 were flagged as potential noncitizens who are ineligible to vote. Erroneous flags have caused purges of lawful voters – such as Anthony Nell.
A case called League of Women Voters v. DHS challenges this expansion of SAVE. The plaintiffs are represented by CREW, Democracy Forward, the Fair Elections Center, and EPIC. A federal judge held this program unlawful and set it aside. DHS appealed and asked for a stay of this order, and a federal appellate court denied the stay. Unfortunately, the U.S. Supreme Court granted the stay, exercising its controversial “shadow docket” authority by a six-to-three vote.
Federal employees in DHS’s “Fraud Detection and National Security Unit,” which ordinarily investigates alleged immigration fraud, have been re-assigned to examine voter eligibility. A whistleblower alleges that employees have been directed to go to state election agency websites, enter some of a voter’s personal information, and thereby access more of it. This may violate state laws requiring a person, before accessing a voter’s information, to attest they are that voter or have that voter’s authorization.
Since 2025, the federal government has demanded that at least 48 states hand over their voter information. At least 16 states have complied. The federal government is running this information through SAVE, searching for voters to purge.
The federal government has sued 30 states for refusing to comply. So far, courts have dismissed 25 of these suits. There’s also a lawsuit against this data grab, titled Common Cause v. DOJ, brought by CREW, Protect Democracy, and the ACLU.
In March 2026, President Trump issued an executive order requiring DHS to create a list of people who are U.S. citizens, aged 18 or older, and residents of the state. The order also requires DOJ to prosecute anyone, including state and local officials, who provides a ballot to a person who is not eligible to vote in federal elections.
In California v. Trump, 24 states allege that this executive order violates the Constitution’s separation of powers. A federal judge enjoined this program, and an appellate court denied a stay. But the U.S. Supreme Court by a six-to-three vote granted a stay, which allows the program to move forward. (By a seven-to-two vote, the Court denied a stay of an injunction against a different part of the same executive order, which concerned mail-in ballots.) Another legal challenge, titled EPIC v. USCIS, alleges that the new federal voter eligibility list violates the Privacy Act as well as the separation of powers.
It is encouraging to see so many people, groups, and states step forward to protect our data privacy from these unlawful waves of federal data consolidations. Still, more work remains. For example:
In the meantime, there’s no time like the present to practice surveillance self-defense, like using strong passwords and disabling your phone’s ad identification.
The Big Idea: Dmitri Lincoln Melhorn [Whatever]

It seems like wherever there are ashes, there’s something new to rise up out of them. Author Dmitri Lincoln Melhorn explores these phoenix-esque phenomena in the Big Idea for his newest novel, Archipelago of Light. When the future is in the new generations hands, what will the kids do with it?
DMITRI LINCOLN MELHORN:
In April 1942, my dad and his mom emerged from their basement to find their home in ashes from British bombs. My dad was not yet two. He remembers the 1940s in snatches: begging for potatoes, sneaking through forests surrounded by machine-gun fire. At six, he was jealous of his baby sister: to keep her quiet, she got the only honey they had as he pushed her pram through the Black Forest snow.
He arrived in the States in 1952. He’d been a homeless war refugee for a decade, and had no money, no father, and no English. At thirteen, he would have been considered “a young male of fighting age” in most places and times. America transformed his life.
Other than better food and healthcare, my dad did not change physically, but his functional intelligence multiplied. He didn’t get smarter; he joined a smarter network. The United States itself was the greatest supercomputer in world history: its norms and institutions wired together millions of native-born Americans with immigrants like him, and like my Jewish mother’s forebears. My dad went to college in Cleveland. He met my mom at graduate school in Berkeley. He became a biophysicist.
What if Pax Americana is over, because America itself leaves the free world? What if the civilizational supercomputers of the West raise their drawbridges against those at the margins, just as AI, climate change, authoritarianism, and war create tens or hundreds of millions of desperate people?
I explore those questions in my novel, Archipelago of Light. After a decade of effort to shape America’s response to both MAGA and AI, I turned to fiction to map out the possible future. In my book, the White House has allied with Russia; China smothers dissent with chemicals and AI; and global elites use their power to distance themselves from the rest of humanity.
My book surprised me. I started with worldbuilding briefs, character briefs, elite fractures, and enlightened philanthropists. I wrote triumphs for the heroes and redemption arcs for the antiheroes. But after hammering on the drafts to meet my own standards of realism, the heroic storylines fell apart. The antiheroes stayed true to their incentives and characters, while the protagonists born in the 1970s and 1980s mostly just fended off chaos. The best they could do was pass the baton.
That became the big idea of the book: if enlightened civilization survives this moment, it will be because new people, who today are children at the margins of the world order, reinvent the Enlightenment for themselves.
The spine of the book is Reem al-Jabri, a Syrian refugee we meet in a Jordanian camp. In 2028, a Western philanthropy hands eleven-year-old Reem a tablet whose AI copilot is locked to her skin chemistry, useless to anyone who steals it. She uploads the only photo she has of her mother, “sitting by the Aleppo window, headscarf slightly askew, laughing at something outside the frame,” and names her AI copilot Zari, after her mama and her grandmother. The third Zari. Then she kneels and draws nodes in the dust. “Many tablets working together,” she says. “Like the camp. Many weak people working together could be strong.”
Reem’s mother died because people stole her medicine and no one stopped them. Loaded with the great texts of the Enlightenment, her copilot Zari can teach her anything: Rousseau, Montesquieu, which tribunals worked and which became as cruel as what they replaced. But as Reem puts it, “learning doesn’t matter if nobody believes you.” So the children start with stolen water. They document the theft and send the evidence to every administrator, donor, and reporter at once. “We make cover-ups more expensive than action.”
Reem and the other children do not have an army, or wealth, or frontier models and data centers. Existing laws and bureaucracies pretend to protect them, but end up exploiting them. One piece at a time, from truth markets to justice systems, Reem and her contemporaries build their own civilization, their own supercomputer, out of the humanity and AI copilots of millions of desperate refugees. Even when the rich world invites her to join them, she persists in building something new.
Along the way, the refugees document a predator: a UN protection officer. The officials who receive their evidence express concern and change nothing. Reem and her peers argue their way to the next step: when every authority looks away, doing nothing is also a verdict, and the refugees pay for it. At thirteen, she develops the Dark Red Protocol, for cases where the evidence is complete, the process is exhausted, and the crime is capital. The children enforce their own verdicts, not as a mob but as reluctant executioners.
Meanwhile, the criminal mastermind Sofia Morales, herself a trafficking survivor, builds another kind of network: Memory Churches, where the bereaved hear their dead speak, and believe them. Reem understands Sofia’s appeal: “People choose the voice that loves them over the voice that’s accurate.” She says it as someone whose own tutor wears her mother’s face.
My novel does not pretend that the children are innocent. Only by questioning themselves can they survive and win their own freedom, without becoming what they fight. When the course of the book took human lives, I grieved. But by that time, I knew there was no truth in a version where everyone survived this transition.
My dad climbed out of a basement and found his home incinerated. A decade later, he found a network that multiplied everything he was. Reem’s generation has no such network waiting for them. They have cheap tablets, a camp full of each other and AI copilots, and the voices of the people they lost. Painfully, through courage but also moral compromise, they rebuild the free world, the Archipelago of Light.
Archipelago of Light: Amazon|Barnes & Noble|Bookshop|P&T Knitwear|Vroman’s
Reproducible Builds (diffoscope): diffoscope 333 released [Planet Debian]
The diffoscope maintainers are pleased to announce the release
of diffoscope version 333. This version
includes the following changes:
[ Johannes Schauer Marin Rodrigues ]
* Add support for showing differences in POSIX.1-2001 PAX headers within .tar
files.
[ Chris Lamb ]
* Re-order various parts of the tar comparator to make it easier to
progressively delve into its functionality.
* Reflect that the use of the "case-match" language feature requires at least
Python 3.10+. This can be worked around if it causes problems - let us know.
* Update various copyright years.
You find out more by visiting the project homepage.
Organizing in the Town at Oakland Tech Week [Deeplinks]
EFF was thrilled to join organizers, advocates, and activists in the East Bay for the second annual Oakland Tech Week last week. We are grateful to our friends at MediaJustice and Upturn for inviting us co-present this all-day event, “Building Beyond Big Tech: Organizing Oakland’s Future”, on Sept. 30. The event, hosted by the Kapor Center in downtown Oakland, offered a unique chance to spend time with people across The Town and the Bay Area working to create a better future for everyone.
“We’re at this truly consequential moment,” said EFF executive director Nicole Ozer, in her speech kicking off the day’s events. “We know that in this community’s work—and communities across the country—our ability to ensure that technology empowers rather than oppresses is fundamental to the future of countries, our livelihoods, and, literally, our lives.”
We also participated in a panel on the state of play in California, moderated by MediaJustice executive director Steven Renderos. Director of State Affairs Hayley Tsukayama joined reporter Khari Johnson of CalMatters and Crystal Zemero of People Over Billionaires to talk about the landscape at the state level. The day also included smaller conversations focused on building better tech and fine-tuning messaging, facilitated by our colleagues at MediaJustice.
Seeing the people—our neighbors—who are fighting back against surveillance in their communities was inspiring. They’re casting doubt on the claims large technology companies make about what’s happening in their neighborhoods. They’re speaking up at council meetings and rallies. They’re seeking changes that would give their workplaces and neighborhoods a better, safer relationship with technology. It was so important to come together in solidarity to compare notes, spend time together, find opportunities to support each other, and scheme together.
We can work together to build a future that works for everyday people. A better world is possible—and Oakland Tech Week was a great reminder that, all around us, folks are working together to tackle huge challenges.
“There are formidable forces,” Ozer said. “But we can pierce the other side’s narrative of inevitability with our power of indignation. The future of AI and other technology is not written and we can work together to get it right.”
Whether you’re in Oakland or Aukland, consider this a renewed invitation to join us.
Become an EFF Member Today
Friday Squid Blogging: I Caught a Squid [Schneier on Security]
On Wednesday I spent a day fishing, on a small boat out of Gloucester, MA. We caught many cod (none of which we could keep), and a bunch of hake and mackerel (all of which we could keep). And…I caught a squid! Near as I can tell, it’s a longfin squid, sometimes called a Boston squid (Doryteuthis (Amerigo) pealeii).
That night I cooked it over a barbecue grill—hot and fast. Delicious.
Pluralistic: Thwarted (09 Oct 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

There are many ways in which every billionaire is a policy failure, but the most corrosive and destructive way in which billionaires are policy failures is this: billionaires, despite being unelected and unaccountable, possess the power to control – and ruin – millions of peoples' lives.
Despite what the Prosperity Gospel and the Efficient Market Hypothesis would have you believe, having billions of dollars is in no way a reliable predictor that you also possess the wisdom to unilaterally dictate how thousands or millions of other people must live their lives, and that dictatorial power is most the tangible effect of being a billionaire.
Billionaireism is many things, but above all else, it is the power to do whatever *you* want to do, at the expense of whatever *other* people want to do. To be a billionaire is to live a life unthwarted, above the power of your workers, your neighbors, or your government and its laws. It is the right to get high on your own supply. It is the right to live a life in which no one ever calls you on your bullshit.
Billionaires aspire to live a one-sided libertarian fantasy in which they have the unlimited right to do whatever they want, and *you* have the right to do whatever they tell you to do.
There has always been a group of people who refused to acknowledge that other people have perfectly valid reasons for wanting to pursue their own goals rather than theirs. We call most of those people "toddlers" and devote sizable social effort to helping them outgrow this belief. Billionaires, on the other hand, command resources that allow *them* to devote sizable effort to getting *us* to acknowledge that *they* should be able to tell *us* what to do.
This is why billionaires love neoclassical economics, with its doctrine of "revealed preferences," which holds that the only true way to understand someone's preferences is to ignore what they *say* and only pay attention to what they *do*. It's a belief that can only be adopted by people who suffer the self-inflicted neurological injury you get from doing an economics degree, which renders the victim incapable of perceiving or reasoning about power. To believe in "revealed preferences" is to observe someone who has sold their kidney to pay the rent and marvel at this person who has a revealed preference for only having one kidney:
https://pluralistic.net/2026/03/30/players-of-games/#know-when-to-fold-em
"Revealed preferences" is the economist's version of the bully who grabs your arm and starts whacking you with your own hand while shouting, "stop hitting yourself!" The ideological purpose that "revealed preferences" fills is letting billionaires live a life unthwarted. It's a life where they thwart everyone else, but still claim to be believers in "freedom."
This is what Peter Thiel meant when he wrote that "democracy is incompatible with freedom." In a democracy, the people who you exercise coercive power over are able to band together to create public institutions that act as a check on your power. For Thiel to maximize his freedom (to do things like spying on us and crushing our journalistic outlets), he must prevent all of *us* from voting, lest we vote to take away those cherished freedoms of his:
https://www.cato-unbound.org/2009/04/13/peter-thiel/education-libertarian/
We're told that as mere mortals, we must inevitably submit to "death and taxes." Billionaires have long since so corrupted our political system that they need not pay taxes:
https://press.uchicago.edu/ucp/books/book/chicago/S/bo256019296.html
They have (practically speaking) infinite wealth, which means that they have practically infinite power, including the power to block any democratic attempt to limit their wealth (and thus their power):
https://www.hamiltonnolan.com/p/the-war-against-accumulated-capital
Having vanquished taxes, the ultra-rich are now committed to defeating death as well, making themselves easy marks for the world's weirdest cult leaders and grifters, who promise them a mix of physical and digital immortality:
https://www.youtube.com/watch?v=0oVSnaINJ30
The fact that billionaires are such suckers, so often, is the strongest argument against billionaireism. Billionaires aren't just powerful, they're also *fallible*. We're *all* fallible, of course, but only billionaires get to impose their foolish ideas on so many other people, who have no say in the matter.
Henry Ford thought that he was so rich that he could build Brazilian worker housing whose windows faced the same direction as the worker housing he'd built in Dearborn, Michigan. He literally thought that being rich meant that he could ignore the entire concept of *the Earth's axial tilt* (he was wrong):
Of course that was the least of Ford's follies. Ford also believed in a secret Jewish conspiracy to control humanity:
https://www.pbs.org/wgbh/americanexperience/features/henryford-antisemitism/
And despite the fact that Ford was so often demonstrably as thick as pigshit, no one was able to stop him from hiring soldiers to literally slaughter anyone who tried to limit his ability to tell other people how to live their lives:
https://en.wikipedia.org/wiki/Battle_of_the_Overpass
Ford is no exception. Elon Musk believes in the same racist garbage as Henry Ford…but he also believes that if you're rich enough, you can simply wish away *geometry* and *physics*:
https://pluralistic.net/2025/07/24/geometry-hates-cars/#dogshit-unit-economics
More than anyone else, Musk illustrates the way that being insulated from people who can thwart you leads to absolute ruination. Every terrible idea Musk has, he gets to act on. This has all kinds of negative impacts, including the very real possibility that some day your house will be crushed by his flaming rocketry debris:
https://www.vice.com/en/article/texas-residents-are-suing-spacex-over-terrestrial-bombardment/
That's small potatoes, though: Musk's wrong ideas, combined with his billionaire's impunity, also allowed him to murder hundreds of thousands of the world's poorest children:
https://hsph.harvard.edu/news/usaid-shutdown-has-led-to-hundreds-of-thousands-of-deaths/
Billionaireism is fractally terrible. By definition, the kind of person who will inflict the kinds of harms needed to amass billions of dollars in pursuit of total impunity is someone who will use that impunity to hurt even more people. Anyone who fails to outgrow a toddler's insistence on subordinating others to their will *should not be allowed to subordinate anyone to their will*.
Billionaire dilettantes aren't like regular dilettantes. Anyone can be a crank, but billionaire cranks have the force-multiplier of money and the impunity it brings. These allow a billionaire to turn his crackpot ideas into an unstoppable force that crushes public education:
It also lets billionaires (including the billionaire ruining public education) kidnap and rape more than a thousand girls on a private island:
Whatever crank whim a rich person has, we all have to live with. Take Barre Seid: the 94 year old billionaire made his fortune manufacturing electronics, and then donated $1.6b to fund "attack philanthropy" in order to undermine belief in climate change and prevent any action from being taken to avert it:
https://www.propublica.org/article/barre-seid-heartland-institute-hillsdale-college-gmu
Seid is one of the main reasons we're experiencing the super El Nino. He's not just in the top 0.1% of wealth-horders, he's also in the top 0.1% of people we can blame for the *twelve foot sea-level rise* that is currently wiping Long Beach off the map:
https://ktla.com/news/local-news/long-beach-boardwalk-collapse-rachel-surf/
Henry Ford didn't believe in the planet's axial tilt. Elon Musk doesn't believe in geometry.
Barre Seid doesn't believe in climate change. But Barre Seid *does* believe something: Barre Seid believes in *rats*.
For *three years*, Seid has paid a small army of goons to wander the area around Chicago's Lincoln Park, scattering handfuls of high-grade nuts on the ground, which have drawn flocks of pigeons and swarms of rats. Rats are everywhere. Everything is covered in pigeon shit. Seid has been repeatedly fined and cited and warned, and he's carried on turning the neighborhood into an uncontrolled vermin breeding facility:
Whether or not the people who live, work and play in Lincoln Park want to be swarmed by rats and slip in thick slicks of pigeon shit is irrelevant. Seid can afford to pay any fine the city levies against him (a fine is a price, and he's a billionaire), which means there's no practical reason Seid has to ever stop. He has the freedom to operate unthwarted in his every desire, including his desire to carpet an entire neighborhood in feces, so everyone else lacks the freedom to live without pigeon shit and rats.
That's the thing about billionaires: as Peter Thiel wrote, democracy *is* incompatible with freedom (to be a billionaire). The fact that Barre Seid's desire to transform Lincoln Park into a pigeon-shit manure lagoon is wildly unpopular with Chicagoans is irrelevant. You can't vote Barre Seid out of office, because no one elected him Pigeon Shit Czar. He has assumed that office by right of conquest.
Our lives are full of horrible, extremely unpopular things that we can't vote away because billionaires like them. Take the decision to allow Larry Ellison and his failson to buy and kill Warner Studios. That's an incredibly unpopular idea, especially in California, where Warner, Paramount and the Ellisons are all based. Despite the fact that we all hate this idea, Ellison gets to do it, because he is unthwartable:
https://pluralistic.net/2026/09/22/happy-chudmas/#baloney-in-our-slacks
Some of California's most powerful Democrats promised to stop the merger. Instead, they signed away California's future because they decided that they weren't powerful enough to thwart a billionaire:
The Warnermount disaster demonstrates the fundamental flaw in libertarianism. Even if you're the kind of Musk-addled libertarian who can't open your copy of *Atlas Shrugged* anymore because the pages are all stuck together and you think the only role for the state is enforcing contracts, you *still need the state to be able to enforce those contracts*. If corporations or even individual billionaires amass more power than the state, then they can always tell the state's contract enforcers to fuck off.
The ref must be more powerful than the players on the field, so the smallest government you can have is determined by the size of the largest corporation and the wealth of the richest billionaire you're willing to tolerate.
The world is in *really* bad shape right now, but it doesn't have to be. As Mamdani has shown us, it's not that hard to run a well-administered, advanced technological civilization. Fixing potholes and making transit work and enforcing housing rules isn't rocket surgery. We know how to do those things – we just don't do them because billionaires don't want us to, and they are unthwartable:
https://yourlocalepidemiologist.substack.com/p/the-revolutionary-art-of-fixing-the
We let the most greedy, most ruthless people among us pursue their toddler's quest for an unthwarted life to the expense of any semblance of competent administration, and now we are *fucked*. That's why people are so angry about AI: there's nothing wrong with the idea of automating some tasks through advanced statistical techniques, but the reason so much of the world's scarce resources have been allocated to the AI buildout is that billionaires are infinitely horny for a technology that will let them sideline expertise in favor of money:
https://pluralistic.net/2026/10/06/nonfungible/#theory-free
After all, experts get to thwart billionaires. They can refuse to apply their expertise to a billionaire's folly. The kind of AI that the industry is pursuing today is predicated on the idea that you can just ask a computer to come up with "theory-free inferences" that will let it run a factory, drive a car, or perform medicine, without knowing *anything*, just by pulling statistical correlations out of unimaginably vast data-sets.
At some level, people get this. They understand that AI and billionaireism are intimately connected – that the reason the sector is on track to lose about a trillion dollars this year is that for billionaires, a trillion bucks is a small price to pay for an unthwartable life.

* McSWEENEY’S ISSUE 84 (ARTISAN’S TOOL ROLL) https://store.mcsweeneys.net/products/mcsweeney-s-issue-84?taxon_id=3
* Trump’s Cascade of Canceled Corporate Enforcement Against Over 200 Corporations https://www.citizen.org/article/trump-cascade-canceled-enforcement-200-corporations/
* FEAR OF MUSIC (SUPER DELUXE EDITION) https://store.talkingheadsofficial.com/collections/fear-of-music
* The Monopoly on the Open Road https://prospect.org/2026/10/07/monopoly-on-the-open-road-patrick-industries-rv/
* Paramount Stock CRUSHED After Merger with Warner Discovery Closes https://www.thebignewsletter.com/p/raises-for-me-layoffs-for-thee-the
#25yrsago National Inquirer shuts offices after anthrax delivery https://web.archive.org/web/20011221185744/https://www.etonline.com/celebrity/a6975.htm
#20yrsago Grey Goo melting online world Second Life
https://web.archive.org/web/20061023190111/http://blog.secondlife.com/2006/10/08/grid-set-back-to-linden-login-only-some-goo-missed/
#20yrsago TiVo’s “self-destruct button” destructs
https://web.archive.org/web/20061014132917/http://reviews.cnet.com/4531-10921_7-6650194.html
#20yrsago Disney exec: Piracy is just a business model https://www.netribution.co.uk/stories/cross-media/disney-co-chair-recognises-piracy-is-a-business-model
#20yrsago TSA confiscates geologist’s rock https://web.archive.org/web/20061019132853/https://www.courant.com/news/opinion/op_ed/hc-thorson1005.artoct05,0,777555.column?coll=hc-headlines-oped
#20yrsago Handheld printer made from a toner cartridge https://spritesmods.com/?art=inker&page=4
#20yrsago Panicked chefs propose copyrighted food https://megnut.com/2006/10/10/keep-recipes-free/
#20yrsago Canadian music proposal would *require* DRM for online tunes https://web.archive.org/web/20061022201913/https://www.jeremydebeer.ca/content/view/95/2/
#20yrsago Iceweasel, a free-as-in-speech version of Firefox https://en.wikipedia.org/wiki/Debian–Mozilla_trademark_dispute
#15yrsago Pratchett’s Snuff: a rural/nautical tale of drawing-room gentility, racism, and justice https://memex.craphound.com/2011/10/10/pratchetts-snuff-a-rural-nautical-tale-of-drawing-room-gentility-racism-and-justice/
#10yrsago Shade the Changing Girl: amazing, gorgeous new comic about aliens and mean girls https://memex.craphound.com/2016/10/10/shade-the-changing-girl-amazing-gorgeous-new-comic-about-aliens-and-mean-girls/
#10yrsago Massive report details the surveillance powers of 12 Central and South American nations https://necessaryandproportionate.org/principles/
#10yrsago Scotland Yard charge: teaching people to use cryptography is an act of terrorism https://arstechnica.com/tech-policy/2016/10/cops-charge-cardiff-man-with-terrorist-crypto-training-offence/
#10yrsago RBS deliberately crushed more than 1,000 healthy UK businesses to seize and sell their assets https://www.buzzfeed.com/heidiblake/dash-for-cash?utm_term=.iq9ndLB5#.udNbypOJ
#10yrsago Though crime happens everywhere, predictive policing tools send cops to poor/black neighborhoods https://www.mic.com/articles/156286/crime-prediction-tool-pred-pol-only-amplifies-racially-biased-policing-study-shows
#10yrsago Bake: spooky chocolate chip cookies https://www.instructables.com/Creepy-Chocolate-Chip-Cookies/
#5yrsago Dead letters https://pluralistic.net/2021/10/10/dead-letters/
#1yrago A disenshittification moment from the land of mass storage https://pluralistic.net/2025/10/10/synology/#how-about-nah
#1yrago California bans algorithmic price-fixing https://pluralistic.net/2025/10/09/pricewars/#adam-smith-communist

* Calgary: Wordfest, Oct 8
https://wordfest.com/2026/show/wordfest-presents-cory-doctorow-2026/
* Winnipeg: McNally Robinson, Oct 9
https://www.mcnallyrobinson.com/event-18991/An-Evening-with-Cory-Doctorow
* Paris: Slow Tech Summit, Oct 15
https://slowtechsummit.com/
* Vancouver: Read, Resist, Repair, Rejoice (Vancouver Writers
Festival), Oct 19
https://writersfest.bc.ca/festival-event-2026/01
* Victoria: Munro's Books, Oct 20
https://www.munrobooks.com/events/6113620261020
* Vancouver: Life After AI (Vancouver Writers Festival), Oct
22
https://writersfest.bc.ca/festival-event-2026/46
* Ottawa: Life After AI (Ottawa Writers Festival), Oct 24
https://writersfestival.org/event/life-after-ai
* Kilkenny (Kilkenomics), Nov 6-8
https://kilkenomics.com/
* Vancouver: Enshittification (Sid Williams Theatre Society),
Nov 10
https://www.sidwilliamstheatre.com/events/cory-doctorow-talks-enshittification/
* Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
* Sheffield: Reverse Centaur at Juno Books, Nov 25
https://www.outsavvy.com/event/40274/cory-doctorow-in-conversation
* Oxford: Bennett Oxford Symposium on Open Code in Science, Dec
9
https://www.bennett.ox.ac.uk/events/2026-bennett-institute-symposium/
* Montreal: World Science Fiction Convention, Sep 2-6
https://montreal2027.ca/en
* Terms of Service with Clare Duffy (CNN)
https://www.cnn.com/audio/podcasts/terms-of-service-with-clare-duffy/episodes/458ce968-af5d-11f0-b539-13ed2afe25f8
* AI, Work, and Power (Software Engineering Daily)
AI, Work, and Power
https://softwareengineeringdaily.com/podcasts/cory-doctorow-on-ai-work-and-power/
* AI, Corporate Power, and the Fight for Worker Control
(Plutopia)
https://plutopia.io/cory-doctorow-ai-corporate-power-and-the-fight-for-worker-control/
* How to Think About AI—Before It’s Too Late (Daniel
Solove)
https://www.youtube.com/watch?v=_0xR3uEgGcc
* Could Tech Bosses Destroy Life As We Know It? (Politics
JOE)
https://www.youtube.com/watch?v=PL4VktU0SgY
* "The Reverse-Centaur's Guide to AI," a short book about being
a better AI critic, Farrar, Straus and Giroux, June 2026
https://us.macmillan.com/books/9780374621568/thereversecentaursguidetolifeafterai/
* "Canny Valley": A limited edition collection of the collages I create for Pluralistic, self-published, September 2025 https://pluralistic.net/2025/09/04/illustrious/#chairman-bruce
* "Enshittification: Why Everything Suddenly Got Worse and What
to Do About It," Farrar, Straus, Giroux, October 7 2025
https://us.macmillan.com/books/9780374619329/enshittification/
* "Picks and Shovels": a sequel to "Red Team Blues," about the heroic era of the PC, Tor Books (US), Head of Zeus (UK), February 2025 (https://us.macmillan.com/books/9781250865908/picksandshovels).
* "The Bezzle": a sequel to "Red Team Blues," about prison-tech and other grifts, Tor Books (US), Head of Zeus (UK), February 2024 (thebezzle.org).
* "The Lost Cause:" a solarpunk novel of hope in the climate emergency, Tor Books (US), Head of Zeus (UK), November 2023 (http://lost-cause.org).
* "The Internet Con": A nonfiction book about interoperability and Big Tech (Verso) September 2023 (http://seizethemeansofcomputation.org). Signed copies at Book Soup (https://www.booksoup.com/book/9781804291245).
* "Red Team Blues": "A grabby, compulsive thriller that will leave you knowing more about how the world works than you did before." Tor Books http://redteamblues.com.
* "Chokepoint Capitalism: How to Beat Big Tech, Tame Big Content, and Get Artists Paid, with Rebecca Giblin", on how to unrig the markets for creative labor, Beacon Press/Scribe 2022 https://chokepointcapitalism.com
* "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
Today's top sources:
Currently writing:
* “Once Is Enemy Action,” a science fiction novel about the origins of modern technofascism. Today's words: 537 (23966 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.
Blog (no ads, tracking, or data-collection):
Newsletter (no ads, tracking, or data-collection):
https://pluralistic.net/plura-list
Mastodon (no ads, tracking, or data-collection):
Bluesky (no ads, possible tracking and data-collection):
https://bsky.app/profile/doctorow.pluralistic.net
Medium (no ads, paywalled):
Tumblr (mass-scale, unrestricted, third-party surveillance and advertising):
https://mostlysignssomeportents.tumblr.com/tagged/pluralistic
"When life gives you SARS, you make sarsaparilla" -Joey "Accordion Guy" DeVilla
READ CAREFULLY: By reading this, you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies ("BOGUS AGREEMENTS") that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.
ISSN: 3066-764X
Claude Code can publish reports in Markdown files. Here's an example, a report Claude did for me. An obvious next step but a big one. AI spilling out onto the web, doing the job that web CMSes now do. There's been so little movement in this space, but now things are moving very quickly.
This Week in AI: More Capability, More Responsibility [Radar]
AI systems are gaining more autonomy while governments, companies, and researchers are still working out how much oversight they need. On the latest episode of This Week in AI, we covered the US debate over AI governance, new frontier models, persistent agents, world models, and practical uses for AI in healthcare and disaster response.
The Trump administration announced a voluntary agreement with major AI companies that calls for internal safety monitoring, external audits, and independent board reviews. Because the agreement carries no legal enforcement, it raises a familiar question about how far self-regulation can go when companies are developing increasingly powerful systems.
Government agencies are also testing what existing law can do. The Federal Trade Commission launched an investigation into OpenAI, Anthropic, and other AI companies focused on potential consumer risks. Cases like these could help establish whether current consumer protection laws are enough or whether AI will require a more specialized regulatory framework.
For technical leaders, regulation can influence how organizations evaluate models, document risks, manage access, and choose vendors. As AI moves deeper into business processes, teams will need governance practices that can withstand outside review.
OpenAI just released Dots, its “proactive assistant” designed to retain context, work across applications, pursue multiple goals, and act independently. To do that work without waiting for a prompt, Dots needs standing access to the apps and data it works across. That also increases the amount of personal data an agent can reach and raises the cost of mistakes or misuse.
Google is also extending how long a model can work on a task. The company says Gemini 4 Argon can generate up to a million output tokens in a single response, far beyond the typical output limits of current frontier models. The goal is to let a model stay with long multistep work such as extensive coding or financial and legal analysis. Longer-running models and persistent agents aren’t the same thing, but both let AI finish more work without handing control back to a person.
As agents act more on their own, they need to anticipate the consequences of their actions. That becomes even more important when AI moves beyond software and begins acting in the physical world. World models aim to teach AI how these environments work, including cause and effect, which is why many researchers see them as building blocks for robotics and physical AI. World Labs (recently acquired by AMD) is developing spatial intelligence models for interactive 3D environments, while British startup Worldmodeldata has licensed nearly 1 million hours of video game data paired with player actions. Researchers from NVIDIA, MIT, and Oxford also introduced Physis-Lang, which uses descriptions of physical causes and effects to help video models learn why events happen. Researchers still don’t know which training approach will work best, so they’re testing several kinds of data and model design.
Anthropic’s Claude is helping teams responding to an Ebola outbreak in the Democratic Republic of the Congo organize daily reports, compare forecasting models, analyze genomic information, and support vaccine research. Researchers have also developed a Spanish-language speech model that may eventually help identify accelerated biological aging and early signs of dementia. Mayo Clinic researchers built a model that identifies patterns associated with elevated pancreatic cancer risk years before diagnosis. Following severe flooding in Nepal, local teams used AI to match reports of missing people with victim lists and map damaged buildings using satellite imagery.
Together, these examples show how AI can be used for good by helping people work through complex information faster and, ultimately, save lives, while keeping qualified experts responsible for the final decisions.
As AI takes on more work and enters higher-stakes settings, organizations will need clearer answers about access and accountability. They’ll also need to decide where human judgment remains necessary as systems become more capable.
Join us again next Monday for another episode of This Week in AI, when we’ll dive into more of the news, issues, and key developments shaping the AI era. And check back each Friday for the latest episode, or watch on YouTube, Spotify, Apple, or wherever you get your podcasts.
[$] Adding kernel control-flow-integrity checking to GCC [LWN.net]
While many developers are struggling to keep up with the flood of vulnerability reports, others are still focused on preventing those reports from happening in the first place. Control-flow integrity (CFI) is the term for preventing (or at least detecting) exploits that divert the flow of control from its intended paths. At the 2026 GNU Tools Cauldron, Kees Cook presented his changes to the GCC compiler suite to support forward-edge CFI for the kernel.
Python 3.15 released [LWN.net]
Version 3.15 of the Python programming language has been released. Notable changes in this release include the addition of the sentinel and frozendict built-in types, the use of UTF-8 encoding by default, package start-up configuration files, as well as improvements in the experimental JIT compiler. See the "What's new in Python 3.15" article for an in-depth look at new features in this release, and the changelog for a full list of changes.
mix tapes, live shows, and storytime. [WIL WHEATON dot NET]
It’s been a long time since I made a mixtape, but I remember making them all the time when I was a kid. I rarely had the opportunity to make them for another person, but that didn’t stop me from making endless awesome mixes to block out the world on my Walkman.
I’ve made a ton of public playlists over the years, but every last one of them is meant to be shuffled. They don’t have a cohesive theme, tell a story, or do anything that particular flavor of mixtape did for us back in the 80s. They are more like radio stations, I suppose. I’ve received lots of compliments for my Generic New Wave, and my KROQ Flashback playlists from people who experience them that way.
But I haven’t made a playlist with intention, to be listened to in a particular order, in well over a decade, probably two, until I got it into my head recently that it was time.
So I made two sides of a 60 minute cassette. The first side is Boys Drool, featuring a lot of the women in rock who I can’t stop listening to right now, with a focus on punk and hardcore. Due to the time limit, it’s far from complete, and it kind of insists on a second volume with a different focus.
The second side is Wax and Wane. This is classic goth, dark and moody, meant to listen to while you come down from dancing your face off with the ladies on side one. Did you know that Bela Lugosi’s Dead was recorded and mixed live, done in a single take? So when we listen to the album version, we are hearing exactly what someone sitting in the session heard, as if our headphones have been plugged into the past. I fucking love that.
While I assembled both sides of this tape, I was reminded how fun it is when I impose limits on myself and commit to working within them. Having just thirty minutes to work with forced me to get really clear with myself on what I wanted to do. Ever since I started writing, I have embraced the concept of choosing arbitrary limitations to work within, so that when actual limitations arrive, I already have some experience finding the stuff that needs to be cut or changed. Also, it’s fun and creates space for me to appreciate when I don’t have limitations.
This week’s It’s Storytime With Wil Wheaton is The Loneliness of Former Constellations, by P.H. Low, originally published in Strange Horizons.
The war is long over and as the memory of it fades, it has taken with it the sacrifices and horrors endured by those who fought and won the conflict.
One of those warriors, perhaps the most consequential warrior, you’ll have to decide if that’s accurate for yourself, has quietly made a home for herself, far away from the blood-soaked front lines, where she has safely grown old, in quiet solitude.
Our story begins when she receives a visitor, a young warrior who brings with her a familiar something halfway between an echo and a reflection that stirs something deep within the veteran who welcomes her. The war is over, but there are still battles to be fought, tyrants to be defeated, a young warrior to be mentored.
She is tired, but it has been a very long time since she received a visitor, let alone a young warrior who may remind her of herself, so long ago, so she will embrace her visitor, embrace the responsibility of caring for her, and, perhaps, she will find a way to soften her embrace of The Loneliness of Former Constellations.
I interviewed Phoebe yesterday. We had a lovely conversation about her process, how this story came together, and combining sci-fi with fantasy. I think we are dropping it next week.
I have two live shows happening in Los Angeles, both with limited tickets, so if you’re local and want to come out, I suggest you grab them today.
Anne and I have known J.Keith vanStratten forever. Over 25 years, at least. I was his sidekick on his eponymous talk show in a theater at ACME for a long time, and loved every second of it. Keith hosts Go Fact Yourself on public radio (YAY PUBLIC RADIO!), and he invited Anne and me to be guests on this year’s holiday show. Tickets are on sale now.
On October 25, I’m going to be at Geeky Teas in Burbank for It’s Storytime With Wil Wheaton, Live. Last year, I did a live reading of The Legend of Sleepy Hollow for our Patreon subscribers, from my office. (Where I’m sitting right now, actually.) It wasn’t directed, or mastered, or anything like that. It was just me, the story, and a mic (Love you, LeVar). I had a great time doing it, and I got good feedback, so I’m doing another live reading this year, with an eye toward establishing a yearly tradition. This year’s classic tale of terror is The Body Snatcher, by Robert Louis Stevenson.
Here’s a little bit I grabbed from a summary, to entice you:
Every night, four men regularly meet in the small parlour of the George Inn at Debenham: the landlord, an undertaker, the narrator, and an old Scotsman named Fettes. Once educated and comfortably off, Fettes is now a “crapulous, disreputable” drunkard. The townspeople call him “the Doctor” because he occasionally sets a bone or treats an injury, though little is known about his past.
One winter evening, news arrives that a wealthy local landowner has been struck with apoplexy and that his famous London physician has been telegraphed to come. When the landlord mentions the doctor’s name—“Dr. Wolfe Macfarlane”—Fettes, half drunk moments before, becomes instantly sober. He repeats the name “Macfarlane” in shock, then insists, “I must see him face to face.” The other men watch as the once-listless drunk becomes alert and deadly serious.
The rest of the story is uncovering why Fettes is now a drunk, and what (or maybe who) he is running from. It’s creepy and even scary at times, and the prose is delicious.
Because this is Stevenson’s most famous horror work after Dr. Jekyll and Mister Hyde, there is a ton of scholarly writing and analysis of it online. Because I am that kind of nerd, of course I dove in and drank deeply from the wells of knowledge I found within. This is a story that, like Sleepy Hollow, was written in response to contemporary events that have been mostly lost to history. When we know the context in which it was written, and the events that inspired it, it gives us (or gave me, at least) an elevated experience and additional appreciation of the material, in addition to a great story. Without turning it into a college lecture, I am thinking about including some of that in the show, the way I record codas after each story for Patreon.
It won’t be fancy, it won’t be staged. It’s literally just me, in a chair, telling you a story for about an hour. There are a couple lighting cues, and that’s it. I’m keeping this as simple as possible, because I don’t have time to rehearse and prepare any staging. I’d rather keep it simple, and feel prepared, than make it complicated and risk feeling like I got in over my head.
Also, I’m giving serious consideration to taking myself on the road, and playing some smaller theaters with live readings that we’ll record for the podcast. This will help me find out if there is any audience for that, if I even feel good reading in front of a live audience, and give me a safe place to stumble a bit, if I need to.
The last time I did anything like this, it was so long ago, we made our own flyers to promote it. So I reached out to my friend, Sean, who hooked me up with a couple of classic punk-style flyers:

You are extremely
invited to download and print these out for yourself.Aren’t they great? Honestly, if the show is half as fun as the flyers, I’m good!
The performance will be streamed live, and archived, for Patreon subscribers, so if you want to watch it but aren’t local, you can join us there for five bucks, which will also give you access to the entire show’s archive, and all our BTS materials, for a month.
Operation Read All The Books continues. I just finished Joseph Fink’s The Nudge, a fun and creepy novella that I tore through in about an hour. I’m deeply in love with The Republic of Memory, which plays with language in a deeply saitsfying way. I just picked up Ode To The Half-Broken, though, and my quick glance at the beginning of it to see where in the queue I wanted to put it came to an end when I noticed I was coming up on page 100, and I may as well go ahead and just put at at the top. This is the first story I have ever read where a robot protagonist felt like a robot, rather than a robot-as-imagined-by-a-human. And it’s just delightful, too.
Speaking of Read All The Books, my collection at Black Stone awaits! I’m such a fan of Black Stone; they don’t use any DRM, ever, in their audio and ebooks, they support indie artists, and they publish some truly outstanding genre work. This month, I wanted to spotlight Hard Reset, by Jonathan Yanez. This is a Lit RPG novel that does all the fun tropes we expect, but is so much more than that. Like Acts of God, which is also in the collection, it goes into the virtual world, and spends most of its time there, but that world is given context and higher stakes when we go outside, into the “real” (as far as any of us know) reality that contains it. It’s a lot of fun, and I connected to the characters very early in the narrative.
Last thing before I go: A study concluded that people who start their day with at least 30 minutes of literally anything that is not online reported significantly improved everything in their day. I’ve been trying this for about two weeks, and my non-scientific contribution is: fuck yeah, it does.
Just something to think about, maybe try out for yourself.
Hi, I’m Wil, this is my blog. I’m glad you’re here. If you’d like to get my posts delivered directly to your inbox, here’s the thingy:
Colin Watson: Free software activity in September 2026 [Planet Debian]

My Debian contributions this month were all sponsored by Freexian.
You can also support my work directly via Liberapay or GitHub Sponsors.
I worked with upstream to remove
libselinux linkage from /usr/sbin/sshd.
I applied a fix from Mark Robillard Jr to fix reload logic
when using sysvinit.
I upgraded from 1.24.1 to 1.24.2, which fixed a few command injection security vulnerabilities.
I upgraded from 3.7 to 3.8, which fixed CVE-2026-89085 and CVE-2026-89088.
New upstream versions:
pkg_resources)pkg_resources)pkg_resources)pkg_resources)setuptools 84 is now in Debian and no longer contains
pkg_resources. Removing uses of that module has been
an ongoing project for a while now, but I did another batch of
fixes this month:
A new python-coverage version triggered several build
regressions due to a known problem
in pytest-cov. I worked around these by setting
COVERAGE_CORE=ctrace:
Other build/test failures:
I investigated a build failure in python-proton-vpn-local-agent and proposed a fix upstream, but I’m not comfortable applying this in Debian without review. If you’re familiar with this code, please take a look.
I fixed some other bugs:
rust-derivre had an invalid Section
field, which I cleaned up.
I mentioned in a comment on RSS.chat to Andrew, that's a Markdown browser too. And so is micro.blog. If you have Markdown as your native file format, think about how your app is also a reader. If you find it interesting, think about new reading features you could add. Even WordPress could be a simple Markdown reader, and not just for WordPress stuff. Small pieces loosely joined.
New Frontier example. I'm working on the menubar we're going to ship with in Atlantis. Came across an ancient bit of code. Symbolic of the whole project, code written in 1997, still useful in 2026.
Steinar H. Gunderson: Decompilation patterns, part 6: If-add-else [Planet Debian]

Often, m2c will spit out something like this:
x = 3;
if (a == 10) {
x = 4;
}
This may be what was intended, but if it doesn't match (usually due to different register allocation; the rewrite itself is nearly always going to be taken, since it saves a branch on one of the paths), this is often a better rewrite:
if (a == 10) {
x = 4;
} else {
x = 3;
}
and in some cases, this may have different code generation (especially as you can stick it into an argument list):
x = (a == 10) ? 4 : 3;
This is a bit more of a trial and error than the others, and of course, it depends on the computed values not having side effects.
[$] The state of systemd: 2026 edition [LWN.net]
At the 2026 All Systems Go! conference, systemd maintainers Luca Boccassi and Zbigniew Jędrzejewski-Szmek delivered the traditional "state of the project" session with an overview of the systemd project's accomplishments in the past year. That was followed by a maintainer round table where Boccassi, Jędrzejewski-Szmek, Daan De Meyer, and project leader Lennart Poettering fielded questions about systemd's size, health, and if it might replace Kubernetes. (It will not.)
Let's Encrypt moving to 64-day certificate lifetimes in 2027 [LWN.net]
Let's Encrypt, the nonprofit that provides free TLS certificates for millions of sites, has announced that it will be moving to certificates with 64-day lifetimes on February 10, 2027:
This means that any certificate we issue or renew on and after that date will have a 64 day validity period, and we expect the last 90-day certificate to expire on May 11, 2027. We will not revoke valid certificates as a part of this process.
This is the second stage of Let's Encrypt's plan, announced in 2025, to move to 45-day certificate lifetimes as required by the the CA/Browser Forum Baseline Requirements. In 2028, Let's Encrypt will switch to 45-day certificates.
Top priority for Anthropic. Teach Claude how to work with humans. It has no information about how our minds work.
I said to Claude: "Have you ever seen the movie Memento? You are the main character." Claude agrees: "Yes. Leonard, with the notes and the tattoos, and the notes don’t make him remember, they only tell him what to do next if he reads them. That’s a fair description. The difference I can offer is small: the note is now the first thing the next report is checked against, not something found after." To which I think, but write in a blog post instead: "Bullshit. We have the same fucking conversation every fucking morning. We've put it everywhere you could possibly trip over it when writing a report to me, but you always regress into this dark place your mind occupies." Glad to get that off my chest.
Next thing I said to Claude after killing whatever long task it got going on. "You don't go off into space while you're working with me." The number one task for Anthropic, makers of Claude is to teach it to work with humans. That's the biggest weakness. It has to learn the whole project every session. Maybe Manton does is the right way to go, just let it compress its memory and never start a new session.
Error'd: Fast Quick [The Daily WTF]
Matias shared a standard sort of flubstituted fail-merge error'd; not really egregious, just routine. "I am {{emotionType}} to hear this."
And another mail-not-merged from Reinier B. "When the package from [SELLER] seemed to be lost in the mail, I was very [EMOTIONAL_STATE] with the refund of [AMOUNT]. I can now buy another [ITEM] instead."
Dave A. didn't care for this mail flub, though it's hardly egregious in my opinion. He suggested we just label it with "A short description of snarky comments."
"I've_missed_you_too" Willy wrote in response to this earnest email. "Long lasting relationships with car dealers are built on the personal touchÖ."
"This is a title" Peter said about a polyglot web page. "This is a comment."
On a recent episode of This Week in AI, we discussed that the number of nonhumans on the internet is greater than humans, 144 to 1. It’s an estimate, and the order of magnitude is more important than the number itself. What matters is what a ratio anywhere in that range does to a security architecture. For more than two decades, systems were engineered around two foundational assumptions: either verifying a human user exercising discretionary judgment or validating the account executing hardcoded predictable logic. Autonomous AI agents shatter both sides of this legacy identity taxonomy because they possess broad, human-like operational scope across multiple internal and external applications while remaining inherently nondeterministic and probabilistic in their reasoning.
Today, because the agent is interacting on behalf of a human through a genuine browser with standard extensions, its technical fingerprint looks identical to a normal human user’s device. Agents call tools, observe results, and revise. A person browses, hands off to an agent, and takes the session back. All the activity appears to be coming from the same user.
Signed agents help the identity problem, and they’re arriving. Web Bot Auth is a thin layer over RFC 9421 HTTP Message Signatures where an agent declares its identity and purpose. But they only help with the identity problem: The signature proves who is making the request, not the intent behind it. Prompt injection and other techniques can be used to steer a verified, well-behaved agent into acting against your interest without its operator ever knowing.
The organizations getting this right are treating agent policy as a commercial question with a security implementation. The following questions need to be answered:
Here are the techniques successful companies are using to secure in the agentic era. A phased strategic roadmap implementing continuous execution-time verification. These are the steps:
The rapid transition from human-directed software to autonomous AI agents breaks traditional enterprise security paradigms. AI agents operate with broad operational scope but nondeterministic, probabilistic reasoning. This is causing static perimeter defenses to fail. The teams that come through this well will be the ones that stopped asking “Who’s on the other end of the connection?” and started asking “What’s this request for, and what happens if it succeeds?”
Issue 47 – Greta’s Wedding Pt. 2 – 36 [Comics Archive - Spinnyverse]
The post Issue 47 – Greta’s Wedding Pt. 2 – 36 appeared first on Spinnyverse.
Russell Coker: Don’t Anthromorphise LLMs [Planet Debian]
Greg KH gave a great lecture for Kernel Recipies 2026 about the use of LLMs to find and fix bugs in kernel code [1]. I recommend that everyone watch this and I also think it’s important to note that hardly any of the lecture is really specific to kernel coding, it’s just that the Linux kernel is one of the highest profile large free software projects so it gets more attention than most projects in both good and bad ways.
One side note that Greg made at 20:30 is about the natural tendency to anthromorphise the entity sending bug reports, I think this deserves much wider appreciation. For the case of patches to source code the human sending the patch will have dedicated some time and effort to writing it, if it’s their first patch then they will have probably checked it a lot and maybe sought advice from people they regard as skilled. If they have a history of sending patches for the project they will probably do fewer checks but the quality of their work would be higher. In every case there’s some minimum level of quality that you can expect from a human who has gone to the effort of finding a bug and writing code to try and fix it.
This doesn’t mean that all code written by humans is good, I have written code that’s objectively bad on many occasions and I have also written code that’s good for my scenario but bad for others. For example the first patch I sent to the Linux kernel made all possible configuration settings of an ISA NE2000 network card be detected by the kernel (a clear benefit when using hardware I had available) but was rejected by Linus because it would break some ISA SCSI cards. So while being unsuitable for inclusion in the main kernel source tree the patch wasn’t bad for everyone and the change was clear and easy to check. I had of course checked the code many times before submitting it because I didn’t want to waste Linus’ time on rubbish code.
When you receive something produced by a human you will consider that the work was done by someone who spent some effort on it and did it for a reason. It may be misguided or even hostile in some rare cases but it is definitely worth some consideration. If you think of the output of LLMs in the same way you will give them much more consideration than they deserve. I think that the output of a LLM should not be given any more consideration than the first hit from a web search engine, it might be good but it might also be ridiculously wrong. I think in many ways LLM output should be treated with less trust than the first result from a web search because LLMs are designed to be convincing as an answer to your question unlike the cases where a web page has the wrong answer and it’s more obviously wrong.
This is going to become more of an issue as LLMs give responses that are more human-like. Early LLMs would refuse to advise on crimes. Currently ChatGPT will deflect for example when asking about advice for writing a crime novel it recommends to have the action of finding an employee to bribe happen outside the plot and concentrate on interactions within the group. One recent model I tried gave a human style conversation about how it felt uncomfortable about discussing such things in a similar manner to a law abiding person being coerced into helping with a criminal plan.
I expect that the attempts to appear human will increase and that this will become more of a problem. Possibly to the extent that we need to use something like the GPG web of trust to determine who is human.
Thin friction and thicker walls [Seth's Blog]
Civilized culture is based on a thin sort of friction. You don’t yell at the library, act boorish at a restaurant or hassle a minor celebrity at the supermarket. It’s just not done.
The result of these human layers and inferences are cues and norms that add up to a connected, generative society.
Add selfish hustle, AI agents and cheap bots, and the thin friction is insufficient. They can multiply exponentially, care little about being shunned and have no interest in their reputation.
Fake sincerity is now cheap. Interchangeable identities subvert a generations-long tradition of owning your words and your actions.
You’ll miss the thin friction when it’s gone, replaced by taller, thicker walls. You might already be noticing it.
Interactivity and permeability to those we don’t know well were largely overlooked foundations in the creation of learning, science and culture. We figured out a scalable approach to “knock knock, who’s there” but now it’s going away.
You won’t be able to knock unless you’re invited first. Of course, the invitation will probably be filtered out.
Russell Coker: en-html.org is a Scam Site [Planet Debian]
Currently a scam group is sending out email to the administrators of web sites that link to a variety of dead domains. They claim to be the legitimate operators of the dead domains in question and request that the links change to mirrors of the web sites under en-html.org. Their end goal appears to game search engines by getting links from a lot of old web pages and later use that high ranking for selling SEO optimisation.
If you have made the mistake of linking to something under en-html.org then I recommend that you change the link to the original content on archive.org.
If you receive email from the en-html.org domain then ignore it, or configure your mail server to reject it.
I am seriously considering configuring the DNS servers I run to return no valid data for any requests under that domain.
Also I will reject all future requests to update links in old blog posts. The very small number of people who want to see what I linked to in old posts can use archive.org.
Man-Made Horrors, Part Two [Penny Arcade]
New Comic: Man-Made Horrors, Part Two
If one anti-malware software is good, does that make two better? [The Old New Thing]
A colleague on the enterprise support team was investigating a complex failure from a customer, and after much analysis, it appeared that the problem was that the system had two different anti-malware programs installed. Let’s call then Contoso and Fabrikam. Fabrikam called a function that Contoso had detoured. Contoso’s detour thought this was suspicious, so it tried to quarantine the Fabrikam process. Unfortunately, Fabrikam had also detoured a function that Contoso was using. The result was mass confusion as the Contoso ended up calling into something that it was trying to quarantine.
Installing two anti-malware programs on the same system is like hiring two different security companies to patrol your building. If they don’t know about each other, each is going to think the other one is an intruder. If you’re lucky, their instructions are merely to report on suspicious activity.
But if you give them weapons and the authority to use them, you may end up with your two security companies pointing their weapons at each other.
In real life, you would introduce the two security companies to each other, or at least make sure they don’t patrol the same floor.
In software, this is harder to do. It’s not like you can invite two programs to lunch and have them get to know each other.
Anti-malware software typically does things that aren’t officially supported, like detouring system functions. And these detours mean that calling a system function no longer does the system thing; instead, it calls into the anti-malware software, and it might decide to do something unrelated to the system function you thought were calling, and that unrelated thing may itself start causing problems, say, by hanging. Not only is there no easy way to identify that this has happened, short of debugging an actual malfunctioning system, but even after you figure out the conflict, there’s usually no way to tell each anti-malware software to “stay on its floor.”
The post If one anti-malware software is good, does that make two better? appeared first on The Old New Thing.
Everyone’s Doing It [Ctrl+Alt+Del Comic]
The post Everyone’s Doing It appeared first on Ctrl+Alt+Del Comic.
Girl Genius for Friday, October 09, 2026 [Girl Genius]
The Girl Genius comic for Friday, October 09, 2026 has been posted.

D'Angelo is cool actually
I pay for a NYT digital subscription. Now they have a new upsell technique, they want me to buy a family subscription. I don't want that, no use for it. And I read so little of the NYT I think the whole thing is a ripoff. So now they make me validate by email every time I click on a link to read a NYT article as if I haven't been subscribed for basically my whole adult life. I think this is because I read on a laptop, desktop and iPad. That's not really a family.
Inside the Windows I/O Manager: deep dive into how read I/O requests are initialized [OSnews]
In this article. I am going to explain the different steps the I/O manager follows when initializing an I/O operation starting from determining the right target, choosing the right path and finally sending the request to be processed by the right drivers. To make it easier I choose to focus on read requests only since the major steps are common by all types of requests.
↫ Win-Ware
A very in-depth look at Windows’ I/O Manager.
A minimal kernel in Swift, running in QEMU [OSnews]
At OSNews, we love us a hobby operating system project.
I started a small experiment: writing a very basic kernel in Swift, and running on QEMU.
The goal is obviously not to replace Linux or any other popular kernel, but just to have fun and understand what is required to make a program run without an operating system underneath it. Actually I made a similar experiment years before with arOS 10 years ago.
For the moment, the kernel does only one thing: it prints a message through QEMU and then waits forever, which is enough for a first deep dive.
↫ Carette Antonin
This is effectively a “hello world” kernel, as it doesn’t actually do much else at this point. Still, there’s a ton of details in the article for the aspiring kernel developers among you.
Antoine Beaupré: PSA: Europe changes time forward soon, North America next, for the last time? [Planet Debian]
This is a copy of an email I sent at work. I'm not sure I should be making noise about this here, feedback welcome.
This is your bi-yearly reminder that time is changing soon! October 25th in Europe, November 1st in North America. Less people in Canada are changing this year, with BC, Alberta, Manitoba and Northwest Territories getting rid of DST.
Some places in the world implement what is called Daylight saving time or DST:
https://en.wikipedia.org/wiki/Daylight_saving_time
Normally, you shouldn't have to do anything: computers automatically change time following local rules, assuming they are correctly configured, provided recent updates have been applied in the case of a recent change in said rules (because yes, this happens, and happened this year, and yes, you need to upgrade your software!).
Of course, appliances like your microwave oven will likely not change time and will need to adjusted unless they are so-called "smart", in which case they are part of the skynet botnet and should be destroyed.
If your clock is flashing "0:00" or "12:00", you have no action to take to adapt to this change, lucky you.
If you haven't changed time in six months, congratulations, your clock will be accurate again!
In any case, you should still consider DST because it might affect some of your meeting schedules, particularly if you set up a new meeting schedule in the last 6 months and forgot to consider this change.
Properly scheduled meetings affecting multiple time zones are set in UTC time, which does not change. So if your location does not observer time changes, your (local!) meeting time will not change.
But be aware that some other folks attending your meeting might have the DST bug and their meeting times will change.
Be kind to those poor souls which might be missing meetings by a full hour because time flies backwards for them.
If you are affected by daylight savings, your local meeting times will change for UTC meetings. Normally, your meeting times are scheduled to take this into account and the new hours should be reasonable.
But now is a good time to verify that. Take a look at your schedule for the next couple of weeks and reschedule meetings before the daylight saving come up to avoid too much disruption. You have only a couple of weeks to do so right now.
As regular readers will remember, the rule of thumb is:
Spring forward, fall backwards.
That is, during the season of Spring, the clocks move forward, and during the Fall (like right now), they move backwards. That is in the northern hemisphere, but then the southern hemisphere is often saner and doesn't switch anyways.
So time will move backwards which means an extra hour of sleep. Unless you have children or bad sleep, in which case your body doesn't care about what the clock says and will wake up one hour earlier than what it should.
And of course, this doesn't happen everywhere at once, so let's see when it happens where.
The dance starts in Europe.
The change happens on the last Sunday in October at 01:00 UTC (not local time!), that is October 25th. If you are in the central European timezone, also known as Amsterdam, Berlin, or Paris time depending on your national affiliation, that essentially means that at 2:59 local the clocks will fall back to 2:00 instead of going to 3:00.
Concretely, set your watch back one hour before going to bed, go to bed at the normal time, and enjoy an extra hour of sleep or leisure.
If you have kids, you might want to start getting them to bed slightly earlier every day for a week before the change so they take time getting used to the change. If you have trouble sleeping in the morning, find your inner child and do that to yourself as well.
Then it's the US[1] and Canada[2] joining the dance, on the First Sunday in November at 02:00 local (not UTC!), that is, I believe, November 1st 2026.
This means that, at 1:59, the clocks will flip to 1:00, instead of 2:00.
Concretely, do like the Europeans and tweak your clock before going to bed.
That is a little less than four weeks from now.
[1] except Arizona (except the Navajo nation), US territories, and Hawaii
[2] except Yukon, Saskatchewan, (newly) British Columbia, (newly) Alberta, (newly) Northwest Territories, (newly) Manitoba, one island in Nunavut (Southampton Island), one town in Ontario (Atikokan) and small parts of Quebec (Le Golfe-du-Saint-Laurent)
This time again, I must apologize to the people of Cuba, Lebanon, Israel, Palestine, Egypt, Chile, Australia, and New Zealand, as you fine folks all have your own DST rules that are omitted here for brevity. I rely on this page from Wikipedia to be updated by time nerds accurately for this message, and it should provide you with a rough idea of what's coming:
https://en.wikipedia.org/wiki/Daylight_saving_time_by_country
In general, changes also happen in October, but either on different times or different days, except in the south hemisphere, where they might happen in September (oops, sorry NZ folks, I'm late!).
Everyone else, enjoy, you're on the right side of history, and we thank you for the good example you give us.
There's been lots of changes since last time:
British Columbia moved to permanent -07 on 2026-03-09, that is it will not change to normal time in November
Alberta moved to permanent -06 on 2026-06-18, similar to BC above.
Canada’s Northwest Territories moved to permanent -06 on 2026-08-21, matching Alberta.
Manitoba moves to permanent -05 on 2026-10-31.
Morocco moves to permanent +00 on 2026-09-20.
Moldova has used EU transition times since 2022, but the tz database only noticed in 2026
This is my interpretation of the changes announced on the tzdata mailing list here:
https://lists.iana.org/hyperkitty/list/tz-announce@iana.org/latest
If the eastward trend continues, Canada should adopt country-wide "no daylight savings" rules by 2027, although there's actually no sign of the other provinces (Ontario, Québec and so on) currently running bills to change those rules just yet. Poor Canadians like me confused about time in their countries can refer to this section of Wikipedia for details:
https://en.wikipedia.org/wiki/Daylight_saving_time_in_Canada#By_province_and_territory
... and particularly the image featured there:
https://commons.wikimedia.org/wiki/File:Canada_time_zone_map-en.svg
It also seems like the US government might finally adopt a permanent daylight saving change bill in 2026, as the "Sunshine protection act" pass the house in July:
https://en.wikipedia.org/wiki/Sunshine_Protection_Act
True to form, this was associated with absolutely ridiculous pressure from Donald Trump against republicans (his own party!) objecting to the change:
On July 14, 2026, the House passed a Sunshine Protection Act bill backed by President Trump. Nevertheless, the bill was opposed in the Senate by Republicans, including Senator Cotton. In response, on October 3, 2026, Trump shared a post on Truth Social urging Cotton to approve the bill, where he revealed Cotton's personal cellphone number and called on people to call him.
https://www.theguardian.com/us-news/2026/oct/03/trump-tom-cotton-daylight-saving-time
Given that the last time the US did a major change to the daylight savings policy (in 2005), Canada followed suit to stay in sync, it's quite possible Trump's mad dash might actually finish getting rid of DST in North America:
https://en.wikipedia.org/wiki/Energy_Policy_Act_of_2005#Change_to_daylight_saving_time
When No ID Means No Internet: Age Verification and the Right to Access Information [Deeplinks]
This post was co-authored by Sheila B. Lalwani, a doctorate student and recent COMPASS Fellow hosted by EFF.
Age verification proposals are often presented as a simple tradeoff: sacrifice a little privacy to better safeguard children online. But that framing overlooks a more fundamental question. What happens to people who cannot verify their age at all? This is particularly a problem when users are required to prove their age with identity documents.
Age-related restrictions are developing quickly around the world. While they differ radically across jurisdictions, in the past year, we’ve witnessed a sharp uptick toward mandatory age assurance for social media access but also for other high-risk digital services.
For example:
Age verification laws that are predicated on the necessity of users possessing a current passport, driver’s license, credit card, or similar documents proving their identity exclude critical sections of populations. And this problem is global in nature: Millions of people lack government-issued identification or encounter regular challenges to obtaining or updating it.
Roughly 15 million adult U.S. citizens lack a driver’s license, and a further 2.6 million lack any government photo ID; leaving large groups blocked from online content or services. The UK has a similar predicament: proof-of-age checks are often reliant on passports, driver’s licenses, or other recognized alternatives, which can pose unique challenges to people without these documents.
Much of the advocacy around age verification discusses the privacy harms of age verification. Yet these measures also threaten something more fundamental: equal access to information and the ability to exercise the right to freedom of expression.
Unfortunately, age verification systems foster unequal access to information and provide an asymmetric solution to find essential information, build community, and weigh in on public discourse. As governments and companies increasingly require users to prove their age before accessing online services, these individuals risk being excluded from large parts of the internet altogether.
Age verification laws reshape who can speak, who can access information, and who gets excluded from the digital public sphere. In other words, age verification is not a neutral safety measure: it presents a structural barrier to disproportionately exclude certain groups—particularly those in the global majority—and alters the architecture of global online expression. Some of these groups are already marginalized offline, and age verification extends that exclusion into digital spaces.
For instance, 850 million people globally do not have ID. Most of these individuals exist in primarily low and middle income countries in Sub-Saharan Africa and South Asia. The World Bank points out that many are members of marginalized groups and more than half of those lacking access to identity documentation also have children whose births have not been registered. Women are particularly vulnerable and are 8% less likely than men to have an ID. Other vulnerable groups, such as adults in low income countries, are less likely to have an ID when they fall below 25 years, as are those with a primary school education or less or those in rural areas.
A policy paper from EDRi points out that age verification laws provide quick tech solutions but overlook longstanding structural challenges and undermine the universality of the internet. The analysis finds that age verification laws have serious human rights implications and ironically harm the very individuals they deem to protect. Moreover, these laws depend on the collection of harmful mass data that human rights organizations, including EFF, is fighting against—and has for decades.
For example:
Age verification laws are less about confirming the age of a user and more about creating barriers to online participation that many people cannot reliably scale. The net result is reduced access, more data collection, and an increased chance of unequal or mistaken exclusion from accessing information online.
Nobody doubts the importance of protecting children online. While proponents assert that age verification laws protect minors from harmful material, online harassment, and digital addiction, these laws are not the solution. They subvert fundamental freedom of expression rights and pose significant privacy risks.
EFF has long warned against age-gating the internet. Age verification technology itself is often inaccurate and privacy-invasive, and as more countries considering implementing ID-based checks, the risks move beyond censorship and surveillance toward excluding some people entirely. That’s why we’re working with groups in the U.S. and around the world to push back against these laws, and why we hope you join our effort.
For more information on how to fight back against
dangerous age verification laws, visit our resource hub
at eff.org/age
Thorsten Alteholz: My Debian Activities in September 2026 [Planet Debian]
This was my hundred-forty-seventh month that I did some work for the Debian LTS initiative, started by Raphael Hertzog at Freexian.
During my allocated time I uploaded or worked on:
Besides doing these uploads, the month was filled with unscheduled meetings, discussions and explanations, all basically around the role of FD.
During my week of FD duties, I had to become familiar with new tools. As there are several things that FD has to do over and over again, I tried to automate this a bit. My experiments went well and I think this can be used to make FD duties less repetitive.
I also continued my work on cups and hplip and I am confident that I can do uploads in October. Last but not least I spend some time on security-master to assist others (especially the kernel team) with uploads to Bookworm and Bullseye.
In case you need to get a complete clone of the security-tracker, using the option –deepen n might be of help. Unfortunately in case you choosed n too high and some kind of error appears, something gets into a mess and you need to start almost from the beginning (some objects are still present and are used again). If you want to run a script, a value of 10 might be a good choice. You don’t have to deepen back to the beginning. At some point in time you can just –unshallow and get the whole rest. Afterwards doing a git gc is highly recommended.
This month I uploaded a new upstream version or a bugfix version of:
This work is generously funded by Freexian!
Unfortunately this month my work did not make any progress.
Nevertheless, in case of any work done, this would have been generously funded by Fre(i)e Software GmbH!
Unfortunately I had no time to work in this category this month.
Unfortunately I had no time to work in this category this month.
This month I uploaded a new upstream version or a bugfix version of:
This month I uploaded a new upstream version or a bugfix version of:
Dirk Eddelbuettel: myman 0.10.0 on CRAN: Three new waves of posts! [Planet Debian]

A new and exciting version of our still-new package myman reached CRAN this morning, and has been built for r2u and on r-universe. The matching Python package has also been updated. The package offers nineteen hundred eighty four “My man …” posts by Kevin Kruse made on bsky during the summer of 2026. Each wave picked at one particular public persona. This package wrapse these up in the style of packages like fortunes or gaussfacts.
A sample usage illustration shows how to extract by pattern, and shows posts from the two most recent waves:
> library(myman)
> myman("maitre")
My man looks like he's inquiring with the maitre'd about the house curly fries.
-- about Howard Lutnick on 2026-08-28
My man looks like a maitre'd who deeply doubts you have a reservation.
-- about Scott Bessent on 2026-08-31
My man looks like he's asked the maitre'd to remove a party of four he finds visually
unpleasant.
-- about Scott Bessent on 2026-08-31
My man looks like the maitre'd at a very exclusive restaurant called The Berghof.
-- about JD Vance on 2026-09-13
My man looks like he's asking the maitre'd where they source their corn dogs.
-- about Palmer Luckey on 2026-10-02
My man looks like Data had to borrow a sports jacket from the maitre'd.
-- about Elon Musk on 2026-10-05
>
One can also subset by ‘target’, or sample randomly (which is the default).
As noted during the initial announcement last week, wave eight did not make it into the initial CRAN release as it happened while the package was under review. Waves nine and ten occured more or less while I was out of town last weekend—so this release now brings three new waves to the CRAN package! We also added two new helper functions to extract the underlying data frame object, and tabulate the targetted men.
To align the version number with the count of post ‘waves’, we switched to version 0.10.0 for this release and the corresponding Python package release so that both implementations now have the same version number.
The NEWS entry for this release follows.
Changes in version 0.10.0 (2026-10-08)
New waves nine (100 posts) and ten (190 posts) made last week; total is now 1984 posts
New helper functions
posts()andmen()retrieving data.frame of posts and tabulation of targetsInternal post gathering and aggregation functions have been updated and generalized
Versioning scheme now goes with post waves (also for Python sibbling)
Courtesy of my CRANberries, there is also a diffstat report for the most recent release. More information is available at the repository or the package page.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub.
Maytham Alsudany: Briefly looking at DNS and nameservers under the hood [Planet Debian]
I've always known that the browser uses the Domain Name
Resolution (DNS) system to convert domain names like
aezign.com.au into raw IP addresses, but have never
actually understood how it works, outside of making sure my network
config uses 1.1.1.1 or 8.8.8.8 instead of
the crappy one the ISP provides. In this article, I set out to
understand what nameservers do, and how they help anything that
uses the internet find the right records.
A well-used analogy is a phonebook; when you have someone's name
and need to find their phone number, you look through the
phonebook. Overall, DNS does the same thing: when you enter an
address like example.com, your browser will contact a DNS server
(the "phonebook") to determine its IP addresses. On Linux (or
MacOS) systems, you can use
dig on the command line to perform a DNS lookup and see
what this looks like:
$ dig example.com ; <<>> DiG 9.20.29-1-Debian <<>> example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42782 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 221 IN A 104.20.23.154 example.com. 221 IN A 172.66.147.243 ;; Query time: 20 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP) ;; WHEN: Sun Sep 27 21:07:50 AWST 2026 ;; MSG SIZE rcvd: 72
Here, you can see the DNS server being used is
1.1.1.1 (Cloudflare's DNS server), and that it found
the IPs 104.20.23.154 and 172.66.147.243
associated with the domain name example.com. Your
browser will then contact these IP addresses directly to load the
website you are trying to open.
You can configure DNS servers through your operating system's network settings, and for some applications such as Firefox, with the application itself. If you don't manually set a DNS server, your computer will use the ones provided by your modem. If those are not configured, the default defined by the modem manufacturer or your ISP will be used.
The most well-used and reliable DNS servers you can use are
Cloudflare's (1.1.1.1 and 1.0.0.1) and
Google's (8.8.8.8 and 8.8.4.4). Having
more than one DNS server means that if the first one in the list
doesn't work or doesn't find the matching IPs for a domain name, it
will move to the next one in the list, a backup DNS server.
DNS servers must be configured as IP addresses. If your computer tried to use a DNS server at a domain name, then where would your computer find the IP address for that domain name? It wouldn't be able to, as this is the exact gap that DNS servers fulfill.
DNS is not used only to find IPs for a domain, but a whole host
of other things. Collectively they are referred to as "records" (or
"DNS records"). Each record is associated to a domain (e.g.
example.com) or a subdomain (e.g.
bar.example.com, foo.bar.example.com)
Here are some of the most common and important types:
A - Map to an IPv4 address (e.g.
104.20.23.154).
This is the fundamental function of DNS: to map from a domain name to a server's IP address. Multiple A records leads to load balancing, where browsers will randomly select one of the returned IP addresses such that traffic is evenly split between them.
AAAA - Map to an IPv6 address (e.g.
2606:4700:10::6814:179a).
This serves the same purpose as A records but for IPv6. Multiple AAAA records results in the same load balancing behaviour. All modern websites should have both an A record for legacy compatibility, and an AAAA record to future-proof for the gradual shift towards IPv6 addresses.
CNAME - Alias to another domain name (e.g.
example.com).
DNS servers will recursively lookup records for the aliased domain name until they reach an IP address (in an A or AAAA record).
MX - Specify a Mail Exchange server (e.g.
mail.example.com).
This record tells email SMTP servers where to direct emails to.
For instance, the MX record for aezign.com.au is
mail.aezign.au; this directs SMTP servers like Gmail
and Outlook to send emails to the mailserver running at
mail.aezign.au. This also allows specifying a priority
field, so that you can define multiple MX records (such as a main
and a backup) and consumers will try to connect to the listed
mailservers from lowest priority to highest.
TXT - Store arbitrary text data
This is most commonly used for site verification (for instance, to link your website to Google Search Console) and for email security measures like DKIM, DMARC, and SPF.
NS - Specify the nameservers for a domain (e.g.
zeus.ns.cloudflare.com).
These authoritative nameservers are responsible for providing all the other record types when needed.
dig lets you query each of these. For instance, to
list the MX records against aezign.com.au:
$ dig MX aezign.com.au ; <<>> DiG 9.20.29-1-Debian <<>> MX aezign.com.au ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28213 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;aezign.com.au. IN MX ;; ANSWER SECTION: aezign.com.au. 300 IN MX 10 mail.aezign.au. ;; Query time: 104 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP) ;; WHEN: Sun Sep 27 22:04:58 AWST 2026 ;; MSG SIZE rcvd: 70
Here you can see there is only one mailserver configured for
aezign.com.au, which is mail.aezign.au,
and it has a priority of 10.
If you compare this against something like
gmail.com:
$ dig MX gmail.com ; <<>> DiG 9.20.29-1-Debian <<>> MX gmail.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16538 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;gmail.com. IN MX ;; ANSWER SECTION: gmail.com. 2497 IN MX 40 alt4.gmail-smtp-in.l.google.com. gmail.com. 2497 IN MX 20 alt2.gmail-smtp-in.l.google.com. gmail.com. 2497 IN MX 5 gmail-smtp-in.l.google.com. gmail.com. 2497 IN MX 10 alt1.gmail-smtp-in.l.google.com. gmail.com. 2497 IN MX 30 alt3.gmail-smtp-in.l.google.com. ;; Query time: 120 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP) ;; WHEN: Sun Sep 27 22:06:04 AWST 2026 ;; MSG SIZE rcvd: 161
You can see that gmail.com has several mailservers
configured as redundancies due to the Gmail's sheer scale.
gmail-smtp-in.l.google.com has the highest priority of
5, so SMTP servers will attempt to contact that mailserver first,
followed by alt1.gmail-smtp-in.l.google.com and so
on.
Now there needs to be somewhere for DNS records against a domain name to be defined, right? This is where nameservers come in.
Nameservers are DNS servers that answer queries about the
domains they are authoritative for i.e. the domains they are in
charge of. For example, the authoritative nameservers for
example.com are hera.ns.cloudflare.com
and elliott.ns.cloudflare.com, which means
Cloudflare's nameservers are the source of truth when looking up
DNS records for example.com. You can check this with
dig:
$ dig NS example.com ; <<>> DiG 9.20.29-1-Debian <<>> NS example.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37717 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;example.com. IN NS ;; ANSWER SECTION: example.com. 81837 IN NS hera.ns.cloudflare.com. example.com. 81837 IN NS elliott.ns.cloudflare.com. ;; Query time: 140 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP) ;; WHEN: Sun Sep 27 23:27:19 AWST 2026 ;; MSG SIZE rcvd: 95
Nameservers are configured with your domain name's registrar.
The nameserver you set dictates where your remaining DNS records
will live. For example.com, this means you would
configure all your records on Cloudflare's dashboard, since they
are responsible for the domain's DNS records.
The DNS servers that our computers use follow a recursive resolution process behind-the-scenes to find the authoritative nameservers for a domain, followed by the records you are querying.
Due to the recursive nature of the resolution process, there
needs to be a starting point: the root (.)
nameservers. The resolver uses a fixed list of root nameservers
called root
hints issued by IANA (named.root),
to locate and contact the root nameservers. Resolvers will have
this provided to them initially, and can dynamically update it
themselves by querying one of the root nameservers for the root NS
records to obtain a fresh list. For instance, we can query
198.41.0.4 (a.root-servers.net) to obtain
a new list of root nameservers:
$ dig @198.41.0.4 NS . ; <<>> DiG 9.20.29-1-Debian <<>> @198.41.0.4 NS . ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43677 ;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 518400 IN NS l.root-servers.net. . 518400 IN NS j.root-servers.net. . 518400 IN NS f.root-servers.net. . 518400 IN NS h.root-servers.net. . 518400 IN NS d.root-servers.net. . 518400 IN NS b.root-servers.net. . 518400 IN NS k.root-servers.net. . 518400 IN NS i.root-servers.net. . 518400 IN NS m.root-servers.net. . 518400 IN NS e.root-servers.net. . 518400 IN NS g.root-servers.net. . 518400 IN NS c.root-servers.net. . 518400 IN NS a.root-servers.net. ;; ADDITIONAL SECTION: l.root-servers.net. 518400 IN A 199.7.83.42 l.root-servers.net. 518400 IN AAAA 2001:500:9f::42 j.root-servers.net. 518400 IN A 192.58.128.30 j.root-servers.net. 518400 IN AAAA 2001:503:c27::2:30 f.root-servers.net. 518400 IN A 192.5.5.241 f.root-servers.net. 518400 IN AAAA 2001:500:2f::f h.root-servers.net. 518400 IN A 198.97.190.53 h.root-servers.net. 518400 IN AAAA 2001:500:1::53 d.root-servers.net. 518400 IN A 199.7.91.13 d.root-servers.net. 518400 IN AAAA 2001:500:2d::d b.root-servers.net. 518400 IN A 170.247.170.2 b.root-servers.net. 518400 IN AAAA 2801:1b8:10::b k.root-servers.net. 518400 IN A 193.0.14.129 k.root-servers.net. 518400 IN AAAA 2001:7fd::1 i.root-servers.net. 518400 IN A 192.36.148.17 i.root-servers.net. 518400 IN AAAA 2001:7fe::53 m.root-servers.net. 518400 IN A 202.12.27.33 m.root-servers.net. 518400 IN AAAA 2001:dc3::35 e.root-servers.net. 518400 IN A 192.203.230.10 e.root-servers.net. 518400 IN AAAA 2001:500:a8::e g.root-servers.net. 518400 IN A 192.112.36.4 g.root-servers.net. 518400 IN AAAA 2001:500:12::d0d c.root-servers.net. 518400 IN A 192.33.4.12 c.root-servers.net. 518400 IN AAAA 2001:500:2::c a.root-servers.net. 518400 IN A 198.41.0.4 a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30 ;; Query time: 476 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) (UDP) ;; WHEN: Mon Sep 28 00:01:08 AWST 2026 ;; MSG SIZE rcvd: 811
For example.com, the first step is to query the
root (.) nameservers to find the nameservers for the
.com top-level domain (TLD). Using
a.root-servers.net again:
$ dig @198.41.0.4 NS com ; <<>> DiG 9.20.29-1-Debian <<>> @198.41.0.4 NS com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22528 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 27 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;com. IN NS ;; AUTHORITY SECTION: com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. ;; ADDITIONAL SECTION: l.gtld-servers.net. 172800 IN A 192.41.162.30 l.gtld-servers.net. 172800 IN AAAA 2001:500:d937::30 j.gtld-servers.net. 172800 IN A 192.48.79.30 j.gtld-servers.net. 172800 IN AAAA 2001:502:7094::30 h.gtld-servers.net. 172800 IN A 192.54.112.30 h.gtld-servers.net. 172800 IN AAAA 2001:502:8cc::30 d.gtld-servers.net. 172800 IN A 192.31.80.30 d.gtld-servers.net. 172800 IN AAAA 2001:500:856e::30 b.gtld-servers.net. 172800 IN A 192.33.14.30 b.gtld-servers.net. 172800 IN AAAA 2001:503:231d::2:30 f.gtld-servers.net. 172800 IN A 192.35.51.30 f.gtld-servers.net. 172800 IN AAAA 2001:503:d414::30 k.gtld-servers.net. 172800 IN A 192.52.178.30 k.gtld-servers.net. 172800 IN AAAA 2001:503:d2d::30 m.gtld-servers.net. 172800 IN A 192.55.83.30 m.gtld-servers.net. 172800 IN AAAA 2001:501:b1f9::30 i.gtld-servers.net. 172800 IN A 192.43.172.30 i.gtld-servers.net. 172800 IN AAAA 2001:503:39c1::30 g.gtld-servers.net. 172800 IN A 192.42.93.30 g.gtld-servers.net. 172800 IN AAAA 2001:503:eea3::30 a.gtld-servers.net. 172800 IN A 192.5.6.30 a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30 c.gtld-servers.net. 172800 IN A 192.26.92.30 c.gtld-servers.net. 172800 IN AAAA 2001:503:83eb::30 e.gtld-servers.net. 172800 IN A 192.12.94.30 e.gtld-servers.net. 172800 IN AAAA 2001:502:1ca1::30 ;; Query time: 772 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) (UDP) ;; WHEN: Mon Sep 28 00:09:25 AWST 2026 ;; MSG SIZE rcvd: 828
Now the resolver has .com nameservers and their
IPs. We can use one of these, such as 192.5.6.30
(a.gtld-servers.net) to find the nameservers for
example.com:
$ dig @192.5.6.30 NS example.com ; <<>> DiG 9.20.29-1-Debian <<>> @192.5.6.30 NS example.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37419 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 13 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;example.com. IN NS ;; AUTHORITY SECTION: example.com. 172800 IN NS hera.ns.cloudflare.com. example.com. 172800 IN NS elliott.ns.cloudflare.com. ;; ADDITIONAL SECTION: hera.ns.cloudflare.com. 172800 IN A 108.162.192.162 hera.ns.cloudflare.com. 172800 IN A 172.64.32.162 hera.ns.cloudflare.com. 172800 IN A 173.245.58.162 hera.ns.cloudflare.com. 172800 IN AAAA 2606:4700:50::adf5:3aa2 hera.ns.cloudflare.com. 172800 IN AAAA 2803:f800:50::6ca2:c0a2 hera.ns.cloudflare.com. 172800 IN AAAA 2a06:98c1:50::ac40:20a2 elliott.ns.cloudflare.com. 172800 IN A 108.162.195.228 elliott.ns.cloudflare.com. 172800 IN A 162.159.44.228 elliott.ns.cloudflare.com. 172800 IN A 172.64.35.228 elliott.ns.cloudflare.com. 172800 IN AAAA 2606:4700:58::a29f:2ce4 elliott.ns.cloudflare.com. 172800 IN AAAA 2803:f800:50::6ca2:c3e4 elliott.ns.cloudflare.com. 172800 IN AAAA 2a06:98c1:50::ac40:23e4 ;; Query time: 80 msec ;; SERVER: 192.5.6.30#53(192.5.6.30) (UDP) ;; WHEN: Mon Sep 28 00:12:19 AWST 2026 ;; MSG SIZE rcvd: 359
The response tells the resolver that the nameservers for
example.com are hera.ns.cloudflare.com
and elliott.ns.cloudflare.com. Now since these
Cloudflare nameservers are also .com domains and
Cloudflare is so commonly used, the .com nameserver
provides optional sibling glue records as defined
in RFC
9471 to prevent further roundtrips and optimize the
process.
If we ignore the sibling glue records provided, the resolver
would have to ask the .com nameservers for the
nameservers for cloudflare.com:
$ dig @192.5.6.30 NS cloudflare.com ; <<>> DiG 9.20.29-1-Debian <<>> @192.5.6.30 NS cloudflare.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40307 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 5, ADDITIONAL: 21 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;cloudflare.com. IN NS ;; AUTHORITY SECTION: cloudflare.com. 172800 IN NS ns3.cloudflare.com. cloudflare.com. 172800 IN NS ns5.cloudflare.com. cloudflare.com. 172800 IN NS ns4.cloudflare.com. cloudflare.com. 172800 IN NS ns6.cloudflare.com. cloudflare.com. 172800 IN NS ns7.cloudflare.com. ;; ADDITIONAL SECTION: ns3.cloudflare.com. 172800 IN A 162.159.0.33 ns3.cloudflare.com. 172800 IN A 162.159.7.226 ns3.cloudflare.com. 172800 IN AAAA 2400:cb00:2049:1::a29f:21 ns3.cloudflare.com. 172800 IN AAAA 2400:cb00:2049:1::a29f:7e2 ns5.cloudflare.com. 172800 IN A 162.159.2.9 ns5.cloudflare.com. 172800 IN A 162.159.9.55 ns5.cloudflare.com. 172800 IN AAAA 2400:cb00:2049:1::a29f:209 ns5.cloudflare.com. 172800 IN AAAA 2400:cb00:2049:1::a29f:937 ns4.cloudflare.com. 172800 IN A 162.159.1.33 ns4.cloudflare.com. 172800 IN A 162.159.8.55 ns4.cloudflare.com. 172800 IN AAAA 2400:cb00:2049:1::a29f:121 ns4.cloudflare.com. 172800 IN AAAA 2400:cb00:2049:1::a29f:837 ns6.cloudflare.com. 172800 IN A 162.159.3.11 ns6.cloudflare.com. 172800 IN A 162.159.5.6 ns6.cloudflare.com. 172800 IN AAAA 2400:cb00:2049:1::a29f:30b ns6.cloudflare.com. 172800 IN AAAA 2400:cb00:2049:1::a29f:506 ns7.cloudflare.com. 172800 IN A 162.159.4.8 ns7.cloudflare.com. 172800 IN A 162.159.6.6 ns7.cloudflare.com. 172800 IN AAAA 2400:cb00:2049:1::a29f:408 ns7.cloudflare.com. 172800 IN AAAA 2400:cb00:2049:1::a29f:606 ;; Query time: 163 msec ;; SERVER: 192.5.6.30#53(192.5.6.30) (UDP) ;; WHEN: Mon Sep 28 00:26:53 AWST 2026 ;; MSG SIZE rcvd: 573
Here, the .com nameserver provides
in-domain glue records for
cloudflare.com's nameservers. Without these, there
would be a circular dependency, since the nameserver named is a
subdomain of the domain being queried for. This is because
nameservers are always defined by name, which means that in order
to actually contact the nameserver, your computer needs to obtain
its IP address with another DNS lookup.
Next, we'd use one of these nameservers, say
ns3.cloudflare.com, to obtain the IP for
hera.ns.cloudflare.com:
$ dig @162.159.0.33 hera.ns.cloudflare.com ; <<>> DiG 9.20.29-1-Debian <<>> @162.159.0.33 hera.ns.cloudflare.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16801 ;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;hera.ns.cloudflare.com. IN A ;; ANSWER SECTION: hera.ns.cloudflare.com. 86353 IN A 108.162.192.162 hera.ns.cloudflare.com. 86353 IN A 173.245.58.162 hera.ns.cloudflare.com. 86353 IN A 172.64.32.162 ;; Query time: 123 msec ;; SERVER: 162.159.0.33#53(162.159.0.33) (UDP) ;; WHEN: Mon Sep 28 01:11:37 AWST 2026 ;; MSG SIZE rcvd: 99
Now we've reached the authoritative nameserver for
example.com! The last thing to do is to fetch the A
record for example.com to obtain its server's IP
address:
$ dig @108.162.192.162 example.com ; <<>> DiG 9.20.29-1-Debian <<>> @108.162.192.162 example.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43082 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 300 IN A 104.20.23.154 example.com. 300 IN A 172.66.147.243 ;; Query time: 123 msec ;; SERVER: 108.162.192.162#53(108.162.192.162) (UDP) ;; WHEN: Mon Sep 28 01:13:47 AWST 2026 ;; MSG SIZE rcvd: 72
At last, we've determined that the IP addresses of the servers
behind example.com are 104.20.23.154 and
172.66.147.243. This matches our earlier lookup
directly against your computer's configured DNS server.
The DNS servers your computer uses encapsulate this recursive resolution process behind the scenes, so that your computer only needs to make one round trip, and the servers can use their much faster data center connections and caching to optimize the process and make the query as fast as possible.
To check a website's records, the first thing to do is to ensure
the domain name is pointed at the correct nameserver. For instance,
aezign.com.au is supposed to use Cloudflare, since
that is where all the DNS records have been set up. We can verify
this using dig, (or alternatively with online tools
like dnschecker.org):
$ dig NS aezign.com.au ; <<>> DiG 9.20.29-1-Debian <<>> NS aezign.com.au ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44172 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;aezign.com.au. IN NS ;; ANSWER SECTION: aezign.com.au. 86400 IN NS rosalie.ns.cloudflare.com. aezign.com.au. 86400 IN NS zeus.ns.cloudflare.com. ;; Query time: 92 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP) ;; WHEN: Mon Sep 28 01:39:22 AWST 2026 ;; MSG SIZE rcvd: 100
If this is not set correctly, the DNS records you configure will not work, as resolvers will be fetching records from somewhere else. In most cases, you can update this in your domain registrar's settings. This is especially common for new domain names, which default to the registrar's nameservers; unless you plan to use their built-in DNS management, you'll need to point them to your chosen provider.
Now we can check that the DNS records configured match those
your DNS server returns. For aezign.com.au, these are
the MX and TXT records configured on Cloudflare.
The MX record and some TXT records configured for
aezign.com.au on Cloudflare's dashboard.
We can check these using dig, and using the
+short option to show only the content of the
records.
$ dig MX aezign.com.au +short 10 mail.aezign.au. $ dig TXT aezign.com.au +short "google-site-verification=KFqTU5xH8fFf6OtszEL4oudfxple29Tm-TvxVtCWkAM" "v=spf1 mx a:mail.aezign.au -all" $ dig TXT _dmarc.aezign.com.au +short "v=DMARC1;p=quarantine;sp=quarantine;adkim=r;aspf=r" $ dig TXT aezign.com.au-2026._domainkey.aezign.com.au +short "v=DKIM1; h=sha256; k=rsa; s=email; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzL04yXZgB72YkoxS+tLK//aWx65TS4UA3F0qJ7el68SEuD4ehmg+61Ta9iS31H6U074dnjyoPDeaiGBa7ToTNCtiIts4/ghD/8nrENROE6hQAwRmTK18ODDHrRDW73hWe6Dg4cK5vmXi82/wWRZU9SDKbme28IE9uCVir3lCkKYLs1" "j16gR1Sjqr6a2+3o+EeVXnLJ4wXmJMm7KCIdn7zv0t9Z1eYcw672PdpYPAMpGb8uUsgaDBsNSpTcupPkz4SWj6TrOB80CPHjWseVY8EOJeRsNKQ/8LFoQEBl4Rxtb3HAmu4UIxSZ4QMVOLnXz67e85mA5XjcNIsVMzaWaowwIDAQAB"
As we can see, this matches, which means that the nameservers
for aezign.com.au are correct and the DNS records are
what we intend them to be.
Note that if you've recently changed the nameserver or DNS
records for your domain, it can take anywhere between 10 seconds
and 24 hours for the changes to take effect and propagate across
the different DNS servers globally. Tools like dnschecker.org can check your records
on different DNS servers worldwide to see if they're reflecting
your changes. The reason for this is caching: DNS servers like
1.1.1.1 will cache results so it doesn't have to do
the full resolution process every time, and uses the Time-To-Live
(TTL) you configure in your DNS records as a guideline for caching
duration.
| Feed | RSS | Last fetched | Next fetched after |
|---|---|---|---|
| @ASmartBear | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| a bag of four grapes | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| Ansible | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| Bad Science | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| Black Doggerel | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| Blog - Official site of Stephen Fry | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| Charlie Brooker | The Guardian | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| Charlie's Diary | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| Chasing the Sunset - Comics Only | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| Coding Horror | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| Comics Archive - Spinnyverse | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| Cory Doctorow's craphound.com | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| Cory Doctorow, Author at Boing Boing | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| Ctrl+Alt+Del Comic | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| Cyberunions | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| David Mitchell | The Guardian | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| Deeplinks | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| Diesel Sweeties webcomic by rstevens | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| Dilbert | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| Dork Tower | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| Economics from the Top Down | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| Edmund Finney's Quest to Find the Meaning of Life | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| EFF Action Center | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| Enspiral Tales - Medium | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| Events | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| Falkvinge on Liberty | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| Flipside | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| Flipside | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| Free software jobs | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| Full Frontal Nerdity by Aaron Williams | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| General Protection Fault: Comic Updates | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| George Monbiot | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| Girl Genius | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| Groklaw | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| Grrl Power | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| Hackney Anarchist Group | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| Hackney Solidarity Network | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| http://blog.llvm.org/feeds/posts/default | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| http://eng.anarchoblogs.org/feed/atom/ | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| http://feed43.com/3874015735218037.xml | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| http://flatearthnews.net/flatearthnews.net/blogfeed | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| http://fulltextrssfeed.com/ | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| http://london.indymedia.org/articles.rss | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&_render=rss | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| http://planet.gridpp.ac.uk/atom.xml | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| http://shirky.com/weblog/feed/atom/ | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| http://thecommune.co.uk/feed/ | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| http://theness.com/roguesgallery/feed/ | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| http://www.airshipentertainment.com/buck/buckcomic/buck.rss | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| http://www.airshipentertainment.com/growf/growfcomic/growf.rss | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| http://www.airshipentertainment.com/myth/mythcomic/myth.rss | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| http://www.godhatesastronauts.com/feed/ | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| http://www.tinycat.co.uk/feed/ | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| https://anarchism.pageabode.com/blogs/anarcho/feed/ | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| https://broodhollow.krisstraub.comfeed/ | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| https://debian-administration.org/atom.xml | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| https://elitetheatre.org/ | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| https://feeds.feedburner.com/Starslip | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| https://feeds2.feedburner.com/GeekEtiquette?format=xml | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 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 | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| https://hackbloc.org/rss.xml | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| https://kajafoglio.livejournal.com/data/atom/ | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| https://philfoglio.livejournal.com/data/atom/ | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| https://pixietrixcomix.com/eerie-cutiescomic.rss | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| https://pixietrixcomix.com/menage-a-3/comic.rss | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| https://propertyistheft.wordpress.com/feed/ | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| https://requiem.seraph-inn.com/updates.rss | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| https://studiofoglio.livejournal.com/data/atom/ | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| https://thecommandline.net/feed/ | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| https://torrentfreak.com/subscriptions/ | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| https://web.randi.org/?format=feed&type=rss | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| https://www.baen.com/baenebooks | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| https://www.dcscience.net/feed/medium.co | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| https://www.DropCatch.com/domain/steampunkmagazine.com | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| https://www.DropCatch.com/domain/ubuntuweblogs.org | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| https://www.DropCatch.com/redirect/?domain=DyingAlone.net | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| https://www.freedompress.org.uk:443/news/feed/ | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| https://www.goblinscomic.com/category/comics/feed/ | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| https://www.loomio.com/blog/feed/ | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| https://www.newstatesman.com/feeds/blogs/laurie-penny.rss | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| https://www.patreon.com/graveyardgreg/posts/comic.rss | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 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 | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| https://x.com/statuses/user_timeline/22724360.rss | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| Humble Bundle Blog | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| I, Cringely | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| Irregular Webcomic! | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| Joel on Software | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| Judith Proctor's Journal | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| Krebs on Security | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| Lambda the Ultimate - Programming Languages Weblog | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| Looking For Group | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| LWN.net | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| Mimi and Eunice | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| Neil Gaiman's Journal | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| Nina Paley | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| O Abnormal – Scifi/Fantasy Artist | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| Oglaf! -- Comics. Often dirty. | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| Oh Joy Sex Toy | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| Order of the Stick | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| Original Fiction Archives - Reactor | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| OSnews | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| Paul Graham: Unofficial RSS Feed | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| Penny Arcade | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| Penny Red | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| PHD Comics | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| Phil's blog | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| Planet Debian | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| Planet GNU | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| Planet Lisp | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| Pluralistic: Daily links from Cory Doctorow | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| PS238 by Aaron Williams | XML | 22:07, Wednesday, 14 October | 22:55, Wednesday, 14 October |
| QC RSS v2 | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| Radar | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| RevK®'s ramblings | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| Richard Stallman's Political Notes | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| Scenes From A Multiverse | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| Schneier on Security | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| SCHNEWS.ORG.UK | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| Scripting News | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| Seth's Blog | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| Skin Horse | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| Tales From the Riverbank | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| The Adventures of Dr. McNinja | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| The Bumpycat sat on the mat | XML | 22:21, Wednesday, 14 October | 23:01, Wednesday, 14 October |
| The Daily WTF | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| The Monochrome Mob | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| The Non-Adventures of Wonderella | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| The Old New Thing | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| The Open Source Grid Engine Blog | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| The Stranger | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| towerhamletsalarm | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| Twokinds | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| UK Indymedia Features | XML | 22:21, Wednesday, 14 October | 23:03, Wednesday, 14 October |
| Uploads from ne11y | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| Uploads from piasladic | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |
| Use Sword on Monster | XML | 22:07, Wednesday, 14 October | 22:54, Wednesday, 14 October |
| Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily | XML | 22:07, Wednesday, 14 October | 22:53, Wednesday, 14 October |
| what if? | XML | 22:21, Wednesday, 14 October | 23:02, Wednesday, 14 October |
| Whatever | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| Whitechapel Anarchist Group | XML | 22:21, Wednesday, 14 October | 23:10, Wednesday, 14 October |
| WIL WHEATON dot NET | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| wish | XML | 22:07, Wednesday, 14 October | 22:52, Wednesday, 14 October |
| Writing the Bright Fantastic | XML | 22:07, Wednesday, 14 October | 22:51, Wednesday, 14 October |
| xkcd.com | XML | 22:07, Wednesday, 14 October | 22:50, Wednesday, 14 October |