Aigars Mahinovs: Optimistic take on AI [Planet Debian]

As I am writing this, there is a vote ongoing in the Debian project on how to deal with AI in general and AI-assisted contributions to Debian specifically. Massive discussions have happened in debian-vote and other locations. I have also asked questions there and offered my perspective. IMHO now is the time to summarize that, after all the discussions that I've had with people on multiple sides of this debate both online and offline, and explain how I will be voting and why. Hopefully that will be helpful to someone else as well. None of this has been compiled with AI assistance, but only because I think that forming opinions is not something where AI can really be helpful. Spellcheck was used though.
So, first I will describe how I see each of the 8 proposals, then what my vote will be, and then a bit more detail on the reasoning and thinking behind this. WARNING - this went long.
Proposal A(1) - Action: ban all AI-assisted contributions via Social Contract amendment, except from upstreams (so not rolling back the Linux kernel and other software to "pure", pre-AI state). Claims that copyright/licensing status is unclear, quality is bad, community is being destroyed, web resources see extra load and that training consumes "staggering" resources. Needs 2/3rd majority to pass. - IMHO worst and most inconsistent. If copyright and licensing of AI products is unclear, then be consistent - ban ALL software with AI contributions, fork Linux kernel and other software from pre-AI versions, reject all security fixes of issues found with AI. Quality section lists problems that have not existed in the real world since at least a year of rapid AI coding development. Community section assumes that now all Debian contributions will be drive-by AI slop and no one will learn anything anymore. Ethics section mixes up effects of badly configured systems (AI web load is no different from load from a badly configured Perl script) with claimed "resource" usage without any context, taking on trust project ambitions of startups and assuming exponential growth. And then concludes that delivering less is in the interest of our users somehow.
Proposal B(2) - Action: allow AI-assisted contributions, with conditions of: legality, accountability, disclosure, no uncoordinated bulk actions, privacy. Concerns on quality and legal status as well as environmental impact and scraper load are noted, but not really addressed beyond labelling them as concerns. - IMHO it is an ok starting position as it establishes that each contributing person must still be fully responsible for their contribution (both legally and technically) and for that has to also understand (and review) what they submit. Disclosure lets others know to watch out for other classes of problems when code was changed with AI assistance. Prior discussion for bulk changes just says that the (already established) practice should not be neglected just because now large changes are easier to do. And the privacy part warns against accidentally sending private or confidential data (like a not yet published security bug) to a public service where it could become public. Personally I would have liked a stronger statement to encourage use of environmentally responsible AI services and local AI tools. Possibly a preference for open-weight models with a clear path forward to preferring truly free AI models, when such a category of products could be clearly delineated and established.
Proposal C(3) - Action: reject AI-assisted contributions at Code of Conduct level. Claims all the world's evils come from LLMs and that "Ethical and safe use of this technology is almost impossible". Goes as far as banning any use of LLMs even in Debian mailing list emails and Debian Planet blog posts - if you do, it's a CoC violation and may result in exclusion from the project. Additionally mandates the disclosure of the usage ... presumably to ban you more efficiently for it. - IMHO truly a dictatorial nightmare option. Zero actual reasoning or basis for such a decision. Zero sources. Nothing claimed in this option's rationale is even close to reality and nothing claimed there is in any way related to the actual technology being discussed. Like, an "LLM" does not automagically commit "fraud" when you use it, like this proposal claims, as if that was a well-known fact. LLMs are not all "owned by horrible people and companies". Even if some include a (prominent Debian user, long-time supporter and sponsor) Google into "horrible companies" (which is what this proposal implies!), there are plenty of LLMs owned by all kinds of companies all over the world and there are plenty of open-weight LLMs that are not really owned by anyone. Most invasive and dishonest option on the ballot.
Proposal D(4) - Action: allow AI-assisted contributions, with conditions of: legality, accountability, disclosure, privacy. IMHO same as B, just shorter. Adds a "we don't recommend" towards others developing software with AI assistance. Seems pretty weird to add that and then immediately accept Debian contributors doing so. Assumes that the bulk change bit of B is implied as AI is just tooling, so bulk changes should be pre-discussed just like today - so no change and thus no point in mentioning that. Fair. D is a bit more explicit on expected technical details - like that the "person" submitting the change is supposed to sign it, not AI. Notable is the complete absence of resource usage or the environment from concerns. IMHO it would be better to have that and also recommendations on how to avoid causing environmental damage when using AI.
Proposal E(5) - Action: no action as such - AI-assisted contributions must follow the same rules as all other contributions and those rules are sufficient. IMHO despite its length this is a very well-worded position statement that describes how and why AI-assisted contributions already work perfectly fine in the Debian context when all the same rules that apply to all contributions are also consistently applied to AI-assisted contributions. It describes how the same legality, accountability, no bulk change and privacy requirements are already in place and still apply and how AI-assisted contributions can and must still satisfy them. I could add again that some guidance would be nice here for both legal and environmental decisions when using AI, but in this case it does not really belong in this proposal itself. We as Debian do not have a document that requires that our non-AI-assisted contributions be made with only sustainably sourced electricity, for example. So why should AI be special one way or another? IMHO Debian should have a datacenter sustainability policy, regardless of the AI discussion.
Proposal F(6) - Action: discourage AI, but allow it based on existing processes (similar idea to E). Dances a bit around the question of disclosure of AI use (as a courtesy) and accepting that some people may still ban all contributions where any AI was involved in any way. Which in turn discourages disclosure to avoid pointless rejection of valuable contributions (like security patches). IMHO this option is ok, but so watered down that it is bound to bring up further discussions and conflicts on details.
Proposal G(7) - Action: ban non-humans from directly contributing to Debian. IMHO - another bizarre and self-contradictory option. It bans all Debian interactions with AI assistance, including email messages to Debian mailing lists and (supposedly) blog posts on Planet Debian. It "reminds" people who "use such tools assistively" of the DFSG and Social Contract - isn't that a threat of a ban and expulsion similar to C? The proposal does take pains to delineate where a contribution comes from AI as output (bad) vs when you are assisted by AI in the process of exploring, researching or maybe even reviewing the code, but you actually type all the code yourself and use the AI just as a taskmaster with a whip (good). And just like A or C it completely ignores how this inherently evil and unstable AI-generated code becomes perfectly fine and good as soon as someone develops that outside of the Debian project. Even if the same person then packages it for Debian the next day. It is hypocritical, unsustainable and ignores the needs of our users. Just like C it also bans someone writing an email or bug report in their native language and using a modern translation tool or service (that uses LLMs nowadays for better grammatical clarity) to translate that to English before sending it to a Debian mailing list or BTS. Heavy-handed and invasive. And the only reasoning provided for this is some unnamed "concerns" of "extra work" being borne by "other people"? Kind of does not feel right to bear such draconian restrictions for some unspecified concerns.
Proposal H(8) - Action: condemn usage, but not actually ban anything. And then it goes on to claim (without any evidence or elaboration) that LLM usage accelerates the destruction of "planet earth" (sic). IMHO this proposal is at the same time the loudest ("The planet is burning") and also the one that demands the least action. It dances a really twisty line between raising "significant" concerns in all areas and even claiming that use of LLMs destroys the planet, flies by explicit condemnation of LLM usage and then suddenly collapses with not condemning LLM users and swinging to lamentations that it is actually impossible to impose policies on LLM usage or even detect when an LLM was used (which kind of directly contradicts bad quality claims from A, C and G) and lands on "encouraging" contributors not to use LLMs (where practical) and otherwise do nothing else. It's like this is a 5th draft that started off with the rationale and total ban like in C, but then got defanged so far that its action side no longer matches the rationale stated.
With all the above considered I will vote like this (earlier options are preferred over later options):
Details on rationale
Hypocrisy - I find any proposal that would ban AI-assisted contributions to Debian, but at the same time not ban including AI-assisted contributions from upstream projects to be inherently hypocritical. If LLMs and AI are the very incarnation of evil (a puppy-killing machine, as the analogy went in some emails), then any rational proposal would involve excluding any and ALL code contaminated by this evil from the project. What does it matter if puppies were killed in writing the debian subfolder of the source code or the src subfolder? No proposals went there because everyone knows that such a ban would be the death of the relevance of the project for the future. Debian would be frozen on some old version of the Linux kernel forever and other software would be falling to the same problem too, for example as projects on GitHub start enabling AI-supported reviews with patch suggestions. Soon the "development" of Debian could just be stopped as there is nothing to develop without any upstreams.
Assumptions - a lot of proposals mention various "concerns" with at most one word, like "practical" or "community" without an explanation of what exactly they mean by that. The proposers assumed that everyone lives in the same info bubble as they do and already know everything that they mean and already agree to that. That is false. Proposal A was a positive stand-out in this area. Debian has contributors all over the world with very different exposure to different information sources and very different world views. If you want to convince the project as a whole that LLMs are bad because of "ethics", then you do really need to explain what you mean by that and give links to sources, at least as well as Proposal A did. All other proposals were really weak in this area.
Copyright - the question on how copyright law interacts with training LLMs and their outputs is still not settled law. The closest legal statements we have so far are that - just because an LLM is trained on copyrighted material does not make that LLM itself be a derivative work of the training data (you, however, cannot just create and distribute a "library" of copyrighted materials just because you plan to train LLMs on it). The output of the LLM might not be subject to copyright law at all, like a photo taken by a monkey. It would then be public domain and thus can be modified and then licensed by the user of the LLM. It might also be a derived work of the context of the inference (so for software - if you refactor a GPL project, the refactoring itself is likely GPL too). Any stricter interpretations would break a lot of existing copyright doctrine, such as raising questions like: "does the output of any programmer now become a derived work of the programming manual books they read in college?". In any case it is really not up to Debian to legislate the nuances of copyright law. And I strongly disagree with the concept that an author can tell me how I am allowed to use the learnings that I gained by reading their work. That is not how either copyright or society works. I can look at 10 pictures of a sunset and draw my own, inspired by the ones I saw. No one can forbid me that expression. The same must be true for a machine learning and replicating patterns.
Ethics - I've re-read all proposals and emails and the only real specifically ethical concern I could find was the complaint that some LLMs (or their training farms) are running their web scrapers too aggressively and that causes extra load on services. Like that is not an LLM problem. Scraping the web is not an inherent part of the LLM training or inference process. It's just a few misconfigured scripts. We saw the exact same thing in the early days of web search engine proliferation. Then we banned/blocked the misconfigured engines and the survivors learned that obeying robots.txt is one of the rules for surviving. Literally the exact same problem and it will be solved the same way. Did we ban all search engines back then just because some of them were misconfigured? No.
Some claims (like in Proposal C) are just bombastic hyperbole ("hazards to users' mental health", "fraud", ...) and on top of that have zero relevance to the topic at hand - AI-assisted contributions to Debian. What "hazard to users' mental health" is created when a Coderabbit spots that a lock is not taken before accessing a resource in a particular function and suggests an AI-generated patch to fix it? What "fraud" is committed by this? There is no sane answer. I get that some people are very busy fighting some culture wars and sometimes, some AI-bros happen to be on the other side of one such war, so it is useful to label everything coming from the AI sphere as "bad" in all possible and impossible ways. You do you. In private. Why pull Debian into that? Why force your position on everyone else in the project? Why deny everyone in the project access to useful tooling, just because you have strong feelings about some of the people promoting some of those tools?
This seems to me a repeating pattern here - blaming the technology as a whole or blaming all providers of this type of technology for failings (ethical or technical) of some of those providers. Like refusing to wear all shoes and condemning all shoemakers and sellers, just because some American billionaires figured out a way to make and sell cheap shoes by killing puppies. Not refusing and condemning those providers, but condemning all for the actions of a few.
Resource usage - this is a big topic for many and it has reasonable points to it. The LLM and AI technology has no inherent need to be damaging to the environment in any way for it to function. It does not need to burn oil or dig up cobalt. It does not need to sacrifice a ton of water to the Gods. It is perfectly possible to run AI (both inference and training) purely from green, electrical energy and cool data centers in equally sustainable ways, like with simple air-source heat pumps (also known as air conditioning) or even use it beneficially (many data centers are used for heating surrounding buildings via district heating). However, some AI companies do use non-green power for their data centers, some do use locally-limited fresh water for evaporative cooling (evaporated water still rains down as rain, it is not really lost, but that may happen in another location so lack of water can still happen locally). Some even run unlicensed natural gas turbines in their data centers to provide them with power. And those specific providers can and should be shunned and condemned. Not the other ones, who are doing the right things. Not the technology or its users or its outputs.
There is a very wide spectrum of options on how an AI system could be powered: starting from local execution on already existing private hardware powered by one's own local solar power (good), to a data center stuffed with borrowed AI-only cards powered by a gas turbine or coal power station that operates solely to supply this data center (bad). Proposals that talk about ecological impact, but do not even consider where on that (very wide) spectrum to draw the line between "good", "acceptable", "discouraged" and "bad" — well, I cannot see those proposals being actually serious about the environment to begin with. It feels like they just refer to it for points.
And if we go into the power question deeper, well the grid dynamics and economics become very, very complex and often also non-intuitive. Like, all large software companies with data centers (that also happen to provide AI services), like Google, Meta, Apple, Microsoft and others do actually care about sustainability (in part because their customers care and vote with their wallets) and so all of them use 100% green energy for their data centers (including AI data centers) .... "on an annual scale". Wait, what does that mean? Well, the electrical grid is special - the amount of electricity produced and consumed on the whole electrical grid together has to match almost exactly every second. If there is just a single second where there is significantly more energy consumed from the grid than is produced, the frequency will plummet and you get a brownout and risk a grid collapse. The same is true in reverse - that causes a voltage swell. So grid operators manage energy flows every second and command power stations to increase and decrease generation all the time. Some power stations are easier to regulate dynamically than others. In the end, all that means is that even if your data center has a contract for 100% green energy with your power company, at some seconds across the year there might not be enough green energy in the grid to fully supply ALL people and companies that have 100% green energy contracts. This gets compensated in other seconds, so that across the year ("on an annual scale") for each kWh that your data center pulled from the grid, the same amount of kWh of 100% green energy flows into the grid. But it might not happen at the exact same second. Pedantic companies, like Google, take that discrepancy and count that as CO2 emissions for themselves. And then they and the power companies (they have contracts with) invest billions into new green energy projects, better grids and better batteries so that eventually this discrepancy goes down to zero. In this way green AI data centers with their increasing consumption of green energy are actually doing a lot of good work in making our electrical grid more green. They are making more resources than they are consuming. And that is just the tip of the iceberg. This is a deep topic that really abhors generalizations like "more consumption = bad".
I've heard similar discussions in the context of electric cars - "so you got an electric car? you'd have fewer emissions if you drove no car at all!". That might be so. And I would also reduce my emissions to zero if I stopped breathing, but I really do not want that kind of thinking to be propagated further, especially when impressionable young people are around who may take it to its logical (but wrong!) conclusion. Instead I talk about how early adopters use electric cars to gather experience and achieve volume to start the network effects working. Once network effects of many electric cars on the roads are sufficient, it becomes an economically logical choice to get an electric car. People who cannot avoid having a car start to switch over. And at the point of mass switchover the reduction of emissions is so massive that those early adopters failing to go all the way to riding a bicycle becomes a rounding error.
But surely that does not apply to LLMs? They are only increasing consumption and bring no benefit?
Benefit - and here we have to actually talk about benefits. Because you cannot make any cost-benefit analysis if you do not actually fully investigate the benefits. Are there environmental benefits from running those AI models? Yes, in a lot of very diverse ways. Hard to measure, however. There are projects that are easy to quantify - like that Google AI project on contrail avoidance. An advanced, special model trained and executed in Google AI data centers was able to predict where in the air contrails would be produced and could generate proposed course adjustments to commercial flights to avoid specific heights in specific locations at specific times. This stopped these aircraft from creating contrails and those contrails did not make a further contribution to global warming. That benefit in a year was many times higher than the environmental cost of training and running that AI model. And it can keep running for many years accumulating further benefits.
On a personal scale, I've had problems that I bashed my head (and computer and CI resources) against without much success years ago solved with a few minutes of compute. Having a good enough candidate solution quickly is much cheaper from a resource perspective than spending days trying different things, running my PC for it, trying different patches on CI executions, doing different rebuilds. I've seen very significant benefits in AI-assisted development in enterprise environments where code way more complex than what is in Debian (especially in Debian tools and packaging) gets analysed, reviewed, modified or even refactored or rewritten in another language with AI assistance. And it generally works. The commonly mentioned "hallucinations" are a thing of last year in the coding context. Nowadays the AIs work in special coding harnesses and use real tools as foundational facts. You cannot "hallucinate" an API call or parameter if you have to run and pass the unit tests and integration tests by your harness before you can return "success" to the caller. I've personally seen high-level AI models read very complex software projects across multiple repositories and point out a very specific design consideration that was encoded in the code logic, but never mentioned in comments or documentation. It was so obscure that even I did not immediately know what it was talking about (and I wrote that code). Only on close inspection of code interaction across three repos did I remember that there was indeed that bug 2 years ago that I fixed by doing the change that this AI picked up (it wasn't in the history of this git repo due to repo migration). It mentioned this because it was very relevant to the task I initially gave it to review.
These LLMs in a proper harness with proper system instructions and usage approach are not just fancy spell checkers or auto-complete. They function more like very advanced pattern matchers. They have learned millions of patterns from training data. When they look at the code, they see hundreds or thousands of overlapping patterns. When you ask them to make or change something, they pull out a pattern (or ten) from their training and apply those patterns to the context of your program. You get something that looks just like the surrounding code, same style choices, same language, same comment voice, but it implements something new there, based on other patterns learned. If you've studied design patterns in your CS class, this will be familiar. But people can learn and remember maybe 20-30 patterns, while an LLM can have a million patterns and can combine them when needed. So it takes a pattern of Python code, pattern of standalone script, pattern of parsing command line parameters, pattern of classes, pattern for background threads, pattern for file tree traversing, pattern for pipes, ... and squishes them together to make a solution for your query. And then tries to debug it with compilation, tests and execution until it works as expected. Even if there is zero LLM development going forward, it will take many years to fully appreciate the benefits we can extract from the already trained models. They don't even have to be retrained - for existing languages they just keep working. For new language variations, like a new Python version, you can feed the changelog into context and they will be able to work with a Python version that they never saw in training. And patterns are mostly abstract, so not really specific to any language - human or programming.
This is another big enabler that LLMs have created that we have not really explored yet. LLMs have created really free software. People can actually create software that is perfectly suited just for them and no one else. They don't even have to know how to program and don't even need to speak English. I've seen people writing prompts in their native language and LLMs creating and then adjusting web apps or Android/iPhone apps and deploying them to the user's own phone. It was too buggy to work last year, but this year it is actually very functional for simpler use-cases. And the code looks just fine too - I've seen external contractors in a business setting deliver far worse. If you start with a good initial system prompt, the project will have architecture documentation, use-case documentation, unit tests, integration tests, deployment harness, testing and production deployments, audit logs, monitoring, clear git commits, CI validation on commit, ... Modern AI systems have the capabilty to deliver software freedom to people who are not coders. I really can not overstate the consequences this may have on the world.
Community - I find the concerns that new people will be using LLMs so much that they will no longer be understanding the actual code they are contributing a bit regressive. I don't see any significant difference between this and people relying on compilers, on high-level languages or on debhelper. Writing modern debhelper packaging feels more like writing configuration and not writing code. It takes really significant effort to dig down through layers of abstraction to find what actually is being executed in debian/rules. AI does not really make this worse. In fact, I find that AI can make it much easier to understand arcane syntax because you can ask an LLM to explain what is happening in any part of the code and it will do a pretty good job of it, digging down through the layers of abstraction for you. All the pro-AI proposals include the requirement that each human contributor needs to understand and stand behind their AI-assisted contribution and I believe that is a good requirement and also a sufficient requirement. Modern LLMs not only produce clear and concise code, but they are also capable of producing good comments explaining why the code is how it is, good commit messages explaining the change and reason behind it and also making corresponding changes to test suites and documentation. You know - the housekeeping stuff that is often skipped because it slows down the actual feature development, but then its lack becomes a problem for future contributors. Responsible use of AI assistance is a great chance to actually strengthen our community and make our software easier to maintain.
That said, I have no qualms about flat-out rejecting contributions that do not make sense. And it does not matter if they are made with or without AI assistance. If the contributor will not explain their patch, it might be they do not understand what their AI produced or it could be that the contribution is deliberately hiding a backdoor being planted. It is also quite common for a contribution of a new feature to be rejected because the author/maintainer does not believe that it is a good fit for the project. Featuritis is a real disease. AI or not. There have always been drive-by contributions to various projects. They will continue to exist. Each of them should be evaluated on its merits - is this feature valuable to our users and is the added complexity (if any) worth the functionality? A lot of security bug reports are "drive-by" contributions as well. And many of them nowadays are discovered, exploited and patched with AI assistance. We could reject them, but that just leaves us holding the bag on the now-known exploits.
And the New Maintainer process should be able to figure out if an upcoming Developer has actually understood the nuances of Debian packaging or not. A contributor with upload rights to the archive has to be able to create a basic package with no support tooling (maybe even without using debhelper?) and be able to understand and modify more complex packages (possibly with tooling support). IMHO that is a separate discussion that is worth having, involving experts from the educational sector.
Conclusion
IMHO the Debian project should not restrict what tooling individual contributors use to contribute. Expecting high-quality contributions and that contributors understand what they are contributing (as a first level of review) is enough.
However, Debian should provide its contributors (internal or external) with guidance on how to contribute in the best way possible. That could include:
In addition to that it would be helpful for Debian, as a project, to reach out to AI service providers to:
The Drucker drift [Seth's Blog]
Peter Drucker argued that the purpose of a corporation is to serve the customer. It turns out that organizations that focus on this do well.
Milton Friedman argued (mistakenly, in my view) that the corporation doesn’t need to care about customers, unless this helps increase the value of the company to shareholders.
Corporations are a cultural fiction, something we created and permit to exist because it serves the community. In exchange for leverage and insulation, the corporations are expected to be of use and to improve conditions for those they serve–not to be a tool to enrich a few shareholders.
As power becomes more concentrated and money becomes more leveraged, it’s easy to see how attractive it is to sell Friedman’s idea to people seeking a short-term profit.
As we drift away from Drucker’s point, though, we all suffer.
Financial engineering rarely builds value for the long run.
Russell Coker: Links August 2026 [Planet Debian]
Zane wrote a very informative blog post about reverse engineering a trojaned Android projector with Claude Code [5]. We need much better security on home networks to break the business model for this sort of thing.
IFLScience has an interesting article about brinicles, icicles of brine that form under sea ice [7].
Nautilus has an interesting article about the Silurian Hypothesis [8].
The Conversation has an intersting article about the pros and cons of no-till farming [9].
Cory Doctorow wrote an insightful article “Commentary Hell is Other People” about the way rich people want to use AI to replace all people [15]. Also psychologists who help rich people accept being greedy are worthy of a Luigi
Elvira Bary wrote an insightful article on the Russian financial collapse that is happening now [18].
View From A Hotel Window, 8/21/2026: Columbus [Whatever]

My mom, grandma, and I are in Columbus this weekend to
celebrate my grandma’s 79th birthday, and here is
the view from the hotel we are staying in! It’s definitely
outside of downtown, but not a bad view, honestly. We’ve got
some good, clean, wholesome fun planned (drinking, gambling,
debauchery). You only turn 79 once!
Hope you have as fun of a weekend as we will.
-AMS
BTW the codename for the new version of Frontier is Atlantis. And we refer to the old version as Berkeley. I'm getting used to the first one. I liked it as an idea, but I don't like typing it, because for some reason my mind has trouble remembering it. Maybe this is just age creeping up on me. Atlantis.
This project has been pre-occupying me, I wasn't planning on doing this, I was going to turn my attention to FeedLand immediately after finalizing RSS.chat. After running the experiment that proved it could be done, I looked at the two choices: 1. Move forward on creating a social network built only out of the existing web with all parts replaceable, small pieces loosely joined. Or 2. Give new life for Frontier, which is my life's work, even though very few people know about it. It's the reason were able to move so fast on blogging, RSS, podcasting, outliners, etc. A very highly leveraged development and runtime environment. Imho far ahead of anything else. The ideas may possibly now have a way forward. When I put those two items next to each other there was no question, I had to go with bringing Frontier back to something people can use.
I think what confused Claude is that we're implementing the odb as a SQLite database. And when you look at a table, you're looking at the result of a query. Previous versions of Frontier implemented the odb as a hash table, that could contain scalars, objects and other tables. The new version has to make that virtuality real, even though it isn't storing the objects that way (maybe it should)? So there is a top level, and it all flows down from there, and it's simple, but if you viewed it through the database, and didn't understand the virtuality it was creating, which I discovered it was very confused about, you might create a disorganized nonsensical piece of software. Now this suggests something interesting, are there any products configured the way Frontier is? Maybe not, otherwise it might have figured this out on its own. Remember how it understands things? By cribbing the code. ;-)
Are there any other
people who are blogging daily about their experiences
developing software with Claude Code, Codex or somesuch. I'd like
to add them to a list where we follow them. So much innovation
happening underneath, I want to hear about what people are learing
about creating the next layers. If you know someone doing it,
please add a comment to this
post. Thanks! :-)
Dirk Eddelbuettel: RProtoBuf 0.4.28 on CRAN: Small Updates [Planet Debian]

A new minor release 0.4.28 of RProtoBuf arrived on CRAN today. RProtoBuf provides R with bindings to the Google Protocol Buffers (“ProtoBuf”) data encoding and serialization library used and released by Google, and deployed very widely in numerous projects as a language and operating-system agnostic protocol. The new release is also already as a binary via r2u.
This release corrects a really old bug. Troy found, when working on gRPC based extensions, which is in and by itself exciting, that a small part of our interface surface (for service descriptors) was just wrong confusing single and double underscores. adjusts to a change upstream. This has been corrected. I updated a few of the usual continuous integration parts, updated a help page for a newly-added nag by CRAN, and also got a last-minute round of noodling in as the JSS paper vignette was still referencing OmegaHat which the CRAN URL checker objected to. I created a quick one-off repo to serve pdf files should the need arise again, and rebuilt the vignette linking to it. No other changes.
The following section from the NEWS.Rd file has all details and links.
Changes in RProtoBuf version 0.4.28 (2026-08-21)
Thanks to my CRANberries, there is a diff to the previous release. The RProtoBuf page has copies of the (older) package vignette, the ‘quick’ overview vignette, and the pre-print of our JSS paper. Questions, comments etc should go to the GitHub issue tracker off 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 sponsor me at GitHub.
Emmanuel Kasper: Create a development VM using Debian cloud images [Planet Debian]

Following on the rationale of the previous post, here is how I create a development VM based on ready to use disk images made by the debian cloud team. I could as well install the VM myself using an ISO, but why download a collection of packages in a ISO only to copy them right onto a disk image ?
From the list of images available at https://cloud.debian.org/images/cloud/ we will start with the generic qcow2 disk image, it has cloud-init, which allows initial automatic configuration, and snapshots of the VM via the qcow2 disk format.
As for the virtualization, I am using virsh
virt-install and virt-manager, which are
part of the libvirt framework. Libvirt offers an excellent API
accessible over qemu/KVM via shell (virsh), GUI (virt-manager) and
Web (cockpit) .
To use libvirt, properly you need to make sure your standard
user is member of the libvirt group, and the libvirt default
network is started via virsh net-autostart default.
Also make sure you set export
LIBVIRT_DEFAULT_URI=qemu:///system to use the system wide
instance of libvirt, which is needed for the default bridged
networking.
Download the debian cloud image:
$ wget https://cloud.debian.org/images/cloud/trixie/daily/latest/debian-13-generic-amd64-daily.qcow2
Add the disk image as a libvirt volume:
$ export SIZE=$(stat -Lc%s debian-13-generic-amd64-daily.qcow2)
$ virsh vol-create-as default dev-vm $SIZE --format qcow2
$ virsh vol-upload --pool default dev-vm debian-13-generic-amd64-daily.qcow2
Create a VM with the root password set to “root”:
$ echo root > password.txt
$ virt-install --name dev-vm --memory 4096 --noreboot \
--os-variant detect=on,name=linux2024 \
--disk vol=default/dev-vm \
--import \
--boot uefi \
--cloud-init root-password-file=password.txt,clouduser-ssh-key=$HOME/.ssh/.ssh/id_ed25519,disable=on
At the point libvirt will create a VM (a domain in libvirt parlance) and start it.
Starting install...
Allocating 'virtinst-ns9oa7_i-cloudinit.iso' | 368 kB 00:00
Transferring 'virtinst-ns9oa7_i-cloudinit.iso' | 368 kB 00:00
Creating domain... | 00:00
Connected to domain 'dev-vm'
BdsDxe: starting Boot0001 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x2,0x3)/Pci(0x0,0x0)
Booting `Debian GNU/Linux'
Loading Linux 6.12.101+deb13-amd64 ...
Loading initial ramdisk ...
EFI stub: Loaded initrd from LINUX_EFI_INITRD_MEDIA_GUID device path
EFI stub: UEFI Secure Boot is enabled.
[ 0.000000] Linux version 6.12.101+deb13-amd64 (debian-kernel@lists.debian.org) (x86_64-linux-gnu-gcc-14 (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44) #1 SMP PREEMPT_DYNAMIC Debian 6.12.101-1 (2026-08-05)
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.12.101+deb13-amd64 root=PARTUUID=2b4578e2-9d2e-4b32-b6a4-b5b2ca607ef6 ro console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0
...
Once the VM is created you have now three ways to access it:
# open a serial console to the VM
$ virsh console dev-vm
# access the graphical console
$ virt-manager
# Access the VM via SSH with the precreated cloud user "debian"
$ virsh domifaddr dev-vm
Name MAC address Protocol Address
-------------------------------------------------------------------------------
vnet7 52:54:00:23:e6:61 ipv4 192.168.122.225/24
$ ssh debian@192.168.122.225
In the next blog post we will see how to configure the IDE (vscodium) to run confortably in the VM.
Don’t eat if you’re not hungry [Seth's Blog]
That’s not only good dieting advice.
It works in just about every endeavor we sign up for.
The system would like us to be insatiable on its behalf, but that’s not an invitation we’re required to accept.
Pluralistic: Born on technology's third base (21 Aug 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

Any frank assessment of your own achievements starts with an equally frank assessment of the world-historic forces that attended those achievements. For example, I often tell young people who want to get into tech, "Well, if you don't have the foresight and work ethic to be born in 1971, I can't really help you."
When it comes to tech, being born in 1971 – to a computer scientist father, no less – conferred a tremendous advantage for my career chances. My dad – a refugee – came to Canada at a time when post-war public services meant that he could become the first person in his family to go to university, all the way to a doctorate.
That set me up for life in a house where tech and education were all around me. Both my parents are teachers, both from working class families where no one had ever gone beyond high school, who found themselves in a time and place where it was easier than at any time in history for people from backgrounds like theirs to attend university. I got to go to university, too, at a time when education was cheap enough that I could drop out of four schools before figuring out that it wasn't for me, and still be debt-free, largely thanks to income from a series of part-time jobs.
When I dropped out of my final degree program, it was to take a job in tech at a time when anyone with a little creativity, work ethic, aptitude and curiosity could walk into a career. Millions of us did it, and I ended up working as a freelancer, then founding a startup, and then going to EFF. I know I work hard, I know I apply myself to understanding the world around me, but also…when it comes to this kind of career, I was born on third base.
There's plenty of this to go around. Think of boomers who bought their "starter home" with the income from their first job and traded it in for a succession of larger, nicer homes, each of which skyrocketed in value. Some of those people fancy themselves to be veritable Warren Buffets for having had the shrewd financial insight that buying a house and living in it was a good idea. The truly smart ones know that they just got lucky.
There are world-historic forces all around us, creating moments and circumstances that contribute to the life-thriving of those of us who are lucky enough to be suited to the moment we find ourselves in.
Take computing: for decades, computing was ruled by Moore's Law, an unbroken run in which computers got faster and cheaper every year. If you were interested in the kinds of computing applications that were well-suited to serial computation – programs that worked best when run on a single computer – you were in luck. Even if your application or field of study was expensive and difficult to realize on today's computer, you could just stand still for a year or two and a much faster computer would park itself on your doorstep, ready to solve your problems.
When Moore's Law tapped out – when the pace at which transistors got smaller and computers got faster slowed and plateaued, and the expense of even modest performance gains climbed infinitywards – computing changed with it. Parallel computing – putting more cores on a chip, more chips on a board, more boards in a system – took off, as chipmakers and system builders switched from a focus on building their computers tall to building them wide.
As parallel computing took off, so did parallel applications. This is the beginning of the graphics revolution, as GPUs – components made up of many, many low-powered computers – became more central to academic research and commercial product roadmaps. But it wasn't just graphics that saw a huge lift here: any task that could be parallelized got easier and cheaper to perform every year, in a steady trend that has run to this day. This is the era of performance gaming, VR and AR, cryptocurrency, and, of course, AI.
In What Technology Wants, Kevin Kelly introduces the idea of the "adjacent possible" through the example of the helicopter. Da Vinci sketched a "helicopter" – blades in the shape of maple keys attached to a kind of wine-press screw – in the 15th century. In the centuries that followed, many other people had the insight that twirling blades of that shape on a screw of some type could provide lift for some kind of heavier-than-air craft. But it wasn't until strong alloys, internal combustion engines and light, energy-dense refined hydrocarbon fuels came on the scene that the helicopter became possible, whereupon it was all but inevitable, with several people independently inventing the helicopter all at once:
In the same way, the computing industry's focus on parallel computing made life easier for people who burned to do something parallelizable. Then the achievements of the parallel computing partisans drove more investment in improvements to parallel computing hardware and theoretical work on how to parallelize other problems. This feedback loop raised the profile of parallel computing applications, attracting more bright and ambitious people to those applications, whose even more impressive accomplishments brought more people into the field, more capital into hardware development, and more resources to parallelization research.
The point being that world-historic forces, combined with accidents of history, shape the outcomes of individuals, companies and disciplines. It's much easier to be an accomplished graphics wizard in an era in which GPUs are doubling in power every year than it is in an era when linear computing is getting the lion's share of investment and improvement.
These forces and accidents have acted on AI in ways that profoundly shaped its development. The latest AI boom started when a group of machine learning researchers tried a minor variation on existing techniques and saw a major improvement in the outcomes. This is one of the most exciting kinds of breakthrough: if tweaking a single variable in a small way produces a large improvement, then it may be that further tweaking will produce even more improvements.
The minor variation that produced the major improvement in AI performance was scale. Prior to the "deep learning" era, AI research relied on a mix of hand-built models of reality and training data that computers fitted into those models. Deep learning swapped the painstaking work of describing reality in software for a brute-force approach: throw lots more training data at the system and then throw lots more (parallel) computing power at that data and let the computer figure it out without your having to explain how the world worked.
The early gains from this approach were very exciting: they dangled the promise of software that could essentially "teach itself" how to do complicated, valuable things in a series of accelerating returns. The fact that the early improvements in AI systems that used this technique were so much greater than anyone would have expected based on AI research up to that point dangled an even more exciting promise: that the improvements would continue to scale faster than the inputs.
Researchers and investors came to expect an AI that was "untouched by human hands," that taught itself how the world worked. This was the self-licking ice-cream cone of machine learning, the world of "theory-free inference" that had fueled the Big Data industry. With theory-free inference, you don't have to figure out how the world works in order to act upon it: you can just gather up all the data about how things happen in the world, use statistical methods to find the correlations, and then intervene to change the outcomes. You don't have to know why a molecule improves a medical condition – it's enough to discover that fact, produce that molecule, and administer it to people with that condition.
Lots of stuff in the world works this way. Our understanding of the causal relationships that make up reality has massive holes in it that we fill with mere correlation. Correlations are easier to discover than causes, and while correlation is (famously) not causation, causes and effects are correlated, and if you can evince the effect you're seeking without understanding precisely what happened to make that effect appear, well, at least you got the effect you were seeking.
Theory-free inference is a very pragmatic way to approach the world: "I don't need it good, I need it Thursday." Scientists burn to know why a molecule stopped you from dying, but you are likely satisfied to not be dead. What's more, our ability to observe correlations will always race ahead of our understanding of causality, so the power of theory-free inferences pushes out the frontier of things we can act on, beyond the realm of the understood.
Which is all to say: it's reasonable to be excited about a breakthrough in theory-free inference. But just like a boomer who thinks that buying a house to live in makes them a shrewd real-estate speculator, someone who achieves great things through theory-free inference runs the risk of missing the limitations to those techniques.
And they are limited. Theory-free inference is good at predicting what your spouse will type into their phone based on all the things they've ever typed into their phone. You are also good at guessing what your spouse will say based on the things they've said before. The difference is that when your spouse says something entirely unexpected and unprecedented to you (say, "I want a divorce"), the fact that you have a theory about why your spouse said all the things they said up to that moment can help you understand why they've said this new thing. But a machine learning model that relies on theory-free statistical modeling to predict your spouse's next words will be entirely at sea. Theory-free inference works well, but it fails badly.
The problem is that the AI sector has raised literally trillions of dollars by assuring investors that the era of hand-made, causal world models that let computers act on the world is hopelessly inefficient and outdated. But there are many, many tasks that are vastly more efficient and reliable when done through conventional computer programs, rather than through "AI."
As Gary Marcus describes in a recent Organized Money interview, an LLM can recite the rules of chess, but it can't play chess because – lacking a theory of how chess works – it will just emit statistically likely chess moves, even if those moves cause pieces to illegally move through other pieces. The first conventional chess-playing programs ran on electromechanical proto-computers, and they played a better game of chess than an LLM that uses billions of times more computing power and energy:
https://www.organizedmoney.fm/p/an-ai-expert-explains-the-hype
The AI companies have proved that there are many domains and applications where we can swap scale for understanding. But, having ridden some world-historic forces and adjacent possibles to great fortunes and stature, they cannot be dissuaded from their conviction that theory-free inference and scale can do everything. They can't be convinced that in many cases, the things that scale and theory-free inference can do are much better accomplished through causal understandings and conventional computing techniques.
From a research perspective, it is interesting to learn about the potential and limitations of a model trained on the entire internet. From a societal and industrial perspective, it is often grossly wasteful, inefficient and unreliable to swap scale for understanding.
The AI sector was born of world-historical forces that favored massively parallel computing, forces that had also conjured up an internet with trillions of documents that could be fed into those massively parallel computers to conduct theory-free inference. Like every success, AI was born on third base.
As rent-burdened millennials who abandoned avocado toast and fancy coffee and still can't afford a downpayment will tell you, the fact that being born in 1945 made it easy to trip and land on a couple million dollars' worth of real estate wealthy by the time you reached retirement age tells us nothing about how to solve the housing crisis of 2026.
By the same token, continuing to give trillions to AI companies because they experienced early success with theory-free inference at scale tells us nothing about how to solve the vast range of problems that theory-free inference at scale sucks at. Doubling down on AI to overcome its increasingly obvious limitations is like doubling down on building post-war suburbs to fix today's housing market.
It's possible to achieve impressive feats because you're smart and hard working and also because you were in the right place at the right time. Historical contingency produced the AI bubble, and it is producing the conditions for that bubble to pop.

FTC Says It Will Enforce Surveillance Pricing. It Won’t. https://prospect.org/2026/08/21/ftc-says-it-will-enforce-surveillance-pricing-it-wont/
Why shaming people about AI slop isn’t enough to stop Big AI https://www.anildash.com/2026/08/21/ai-slop-and-shame/
#25yrsago Glue anything to anything https://www.thistothat.com/
#20yrsago No unions in iPod City https://web.archive.org/web/20061123003816/https://www.wired.com/news/columns/0,71629-0.html?tw=wn_index_2
#15yrsago Credit scores are bullshit https://web.archive.org/web/20111013005626/https://a.wholelottanothing.org/2011/08/credit-scores-are-bullshit.html
#15yrsago RIP, Jack Layton https://www.bbc.com/news/world-us-canada-14618943
#15yrsago William Gibson on cities and the future https://www.scientificamerican.com/article/gibson-interview-cities-in-fact-and-fiction/
#10yrsago Bronx cops can steal anything they want by calling it “evidence” https://www.theatlantic.com/technology/archive/2016/08/how-police-use-a-legal-gray-area-to-rob-suspects-of-their-belongings/495740/
#10yrsago Robert Moses wove enduring racism into New York’s urban fabric https://web.archive.org/web/20160402184527/http://www.hopesandfears.com/hopes/now/politics/216905-the-lingering-effects-of-nyc-racist-city-planning
#10yrsago EFF takes a deep dive into Windows 10’s brutal privacy breaches https://www.eff.org/deeplinks/2016/08/windows-10-microsoft-blatantly-disregards-user-choice-and-privacy-deep-dive
#10yrsago Inside the “sweatshop” terminally ill Britons must call to get benefits https://web.archive.org/web/20160820094907/https://www.theguardian.com/public-leaders-network/2016/aug/20/work-pensions-disability-claim-call-handler-benefits-dwp
#10yrsago How the New York Public Library made ebooks open, and thus one trillion times better https://www.crummy.com/writing/speaking/2015-RESTFest/
#5yrsago Raiders of the lost ARC https://pluralistic.net/2021/08/22/raiders-of-the-lost-arc/
#1yrago Radical juries https://pluralistic.net/2025/08/22/jury-nullification/#voir-dire

Melbourne: Enshittification at the Wheeler Centre, Aug 25
https://www.wheelercentre.com/events-tickets/season-2026/cory-doctorow-enshittification
London: AI and the Enshittification of the Media, NUJ (Sep
2)
https://www.nuj.org.uk/learn/ems-event-calendar/ai-and-the-enshitification-of-the-media.html
Brighton: The Reverse Centaur's Guide to Life After AI with
Carole Cadwalladr (Brighton Dome), Sep 8
https://brightondome.org/whats-on/LSC-cory-doctorow-the-reverse-centaurs-guide-to-life-after-ai/
London: The Reverse Centaur's Guide to Life After AI with Riley
Quinn (Foyle's Picadilly), Sep 9
https://www.foyles.co.uk/events/enshittification-cory-doctorow-riley-quinn
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
Hudson, OH: Hudson Library, Oct 7
https://engagedpatrons.org/EventsExtended.cfm?SiteID=3850&EventID=596952&PK=
Victoria: Munro's Books, Oct 20
https://www.munrobooks.com/events/6113620261020
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
Technofeudal Enshittification (Fucking Cancelled)
https://www.fuckingcancelled.com/p/technofeudal-enshittification-with
Who The Machine Serves (EFF)
https://archive.org/details/effecting-change-who-the-machine-serves
Speculative Fiction for Social Change II (Cool People Who Did
Cool Stuff)
https://pocketcasts.com/podcast/cool-people-who-did-cool-stuff/08cbb840-a6ae-013a-d8aa-0acc26574db2/part-two-cory-doctorow-on-speculative-fiction-for-social-change/937e8800-9404-45a6-b5e3-90ebee2cfaea
Speculative Fiction for Social Change I (Cool People Who Did
Cool Stuff)
https://pocketcasts.com/podcast/cool-people-who-did-cool-stuff/08cbb840-a6ae-013a-d8aa-0acc26574db2/part-one-cory-doctorow-on-speculative-fiction-for-social-change/15ad467c-0832-44c9-91ea-59defd783dba
"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
Uber drivers turned into mobile snitches [Richard Stallman's Political Notes]
Flock Reportedly Tried to Turn Uber Drivers Into Mobile Snitches. And Nexar, a manufacturer of dashcams, is already doing that to unwitting drivers whose cars carry those cameras.
Drivers should be allowed to install dashcams that record, as security cameras, but security cameras must not be allowed to transmit these images anywhere without specific time-limited requests.
Don't do business with Uber!
Ceuta crysis [Richard Stallman's Political Notes]
A social media hoax told lots of Moroccans that if they swam into Ceuta (a Spanish colony adjacent to Morocco) right away, they would be allowed to go to Spain and stay there.
Some 70,000 went into Ceuta, found out story was a hoax, and mostly went back to Morocco. But European right-wing extremists are using it to pretend that a real problem had happened and requires a real increase in repression of immigrants.
US deporting trafficked children [Richard Stallman's Political Notes]
The bully's henchmen are rushing the deportation of people who have been trafficked, and minors who fled abuse by their parents, depriving them full and proper judgment of their cases.
Sometimes they get deported before the hearing that will decide whether they are entitled to stay in the US. That is Kafkaesque.
The persecutors are mainly focusing on minors, but "minors" does not imply "children". A 17-year old is not a child and we must not call per one. Can't you be concerned for someone's rights without calling per a "kid"? I am.
But the reason I am concerned about that manipulative exaggeration is not just that it is soppy. It can be dangerous too, to those very people. Calling a teenager a "child" can lead to disrespect for per rights.
US sanctions against "settlers" [Richard Stallman's Political Notes]
The bully's henchmen have terminated US sanctions against violent Israeli "settlers". Democrats in Congress have called for reinstating the sanctions.
Biden put them in place to rebuke the "settlers'" wanton violence against Palestinians. The bully seems to want to present the US as a supporter of violent cruelty.
Rwe deal wind leases [Richard Stallman's Political Notes]
The wrecker's henchmen are paying billions to get companies to cancel their contracts to build offshore wind power.
This is driving expensive nails into humanity's coffin.
ICE arresting people at airports [Richard Stallman's Political Notes]
Deportation thugs are arresting people at US airports, often choosing targets who already have grounds to be in the US.
UK burning summer [Richard Stallman's Political Notes]
Sadiq Khan, Mayor of Greater London: *This burning summer is the proof: the voices of climate denial aren't just delusional, they're deadly.*
They treat truth with total contempt.
Tech fascism in Silicon Valley [Richard Stallman's Political Notes]
Now that Silicon Valley has mostly joined the side of fascism, only a few journalists are ready to criticize.
Second runway for London airport [Richard Stallman's Political Notes]
Watch out, England! Two London airports are going to build addtional runways. That is expensive, and each airport will use its new runway to handle 100,000 or so additional flights per year.
Just think of how much hotter they will make Britain (and the rest of the world).
Urgent: reject nominees for USPS board [Richard Stallman's Political Notes]
US citizens: call on your senators to reject the corrupter's nominees for the USPS board.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: cancel Flock contracts [Richard Stallman's Political Notes]
US citizens: call on local governments to cancel their Flock contracts.
Urgent: stop big tech's Data Center Land Grab [Richard Stallman's Political Notes]
US citizens: call on Congress to stop big tech's Data Center Land Grab
It is unfortunate that the petition grants these data centers the usually unmerited accolade of "artificial intelligence". I myself never do that.
However, I signed the petition anyway.
Urgent: Flock's policy changes [Richard Stallman's Political Notes]
US citizens: call on media to cover Flock's policy changes with skepticism.
Urgent: stop Pentagon buybacks [Richard Stallman's Political Notes]
US citizens: call on the Senate to stop Pentagon contractors' stock buybacks, and make them get the Pentagon's permission to release a dividend.
Clearly it would be better if paying a dividend required permission from some organization more likely to be strict, but this rule is a step forward anyway. And so is the stock buyback rule.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: Defend Bristol Bay [Richard Stallman's Political Notes]
US citizens: Defend Bristol Bay (in Alaska) from political pressure from a mining company that wants to pollute it.
The New Pornographers [Penny Arcade]
I always thought the comparison between "Actual Play" and Pornography was kind of a silly joke that had a little bit of truth in it, like all jokes which have the capacity to endure. Apparently this is something that people fought over, and were subsequently dissuaded from, all before I ever got to it. It's certainly never stopped me before. Previous interlocutors might have been dissuaded on account of their social station or desire to appease a cryptographically cycling moral framework. In my degraded state, laid low by my…. Well, by my "me," currying favor is not only beneath me it's literally impossible.
Friday Squid Blogging: Neon Flying Squid [Schneier on Security]
The neon flying squid can fly in formation.
The shoal of about 100 squid rose unexpectedly from a patch of the Pacific Ocean around 370 miles from Tokyo and glided near the boat for about 30 metres. The astonished researchers were the first to capture photographs of such a thing, which looked like the early stages of an alien invasion.
They were probably neon flying squid (Ommastrephes bartramii), the subsequent study states, a species that is part of a 20-strong flying squid family that was known to leap from the water but, until then, was only rumoured to also be able to glide above it.
The neon flying squid was able to gain such elevation by using the hyponome, a funnel-like muscular organ also present in other cephalopods, such as octopuses. The organ is able to force water out in a jet, propelling the body along both in and out of the sea. Photographs of the gliding squid show them with their arms (they have 10 limbs in all) splayed outwards.
As usual, you can also use this squid post to talk about the security stories in the news that I haven’t covered.
Intermediary Liability in Brazil: The Intricate Path Ahead [Deeplinks]
Brazil's new internet intermediary liability regime is underway. The implementation of changes established by the Supreme Court includes notice and takedown mechanisms and duty of care obligations. Caution is crucial as these measures can create problematic incentives for enforcement overreach and over censorship of protected speech.
The court in June issued a new decision clarifying elements of its 2025 finding that the previous liability regime was partially unconstitutional. The government also published in late May two presidential decrees that detail how the new rules apply.
Under the new regime, social media platforms and other internet applications that curate or interfere with posts can be held liable for third-party content if they don’t remove it after being notified by the user seeking take down unless there's a reasonable doubt that the content is unlawful. For certain specific cases, like crimes against honor (e.g. defamation), platform liability still depends on failing to comply with a judicial order.
For some serious crimes, like human trafficking and crimes against women, applications have a duty of care to remove related content immediately and can be held liable when systemically failing to do so. The precise limits of what constitutes a systemic failure are still unclear. There are also stricter rules for paid ads, boosted content, and bots.
The previous regime, set by Article 19 of the law known as the Brazilian Civil Rights Framework for the Internet (“Marco Civil da Internet” in Portuguese), sought to protect freedom of expression online by holding internet application providers liable for user content if they failed to comply with a judicial order to remove it. There were specific, limited exceptions to this rule, like the unauthorized disclosure of nude or private sexual images. This was meant to prevent providers from over-removal of user content to avoid legal action. Yet, the court found that this provision failed to sufficiently safeguard democracy and fundamental rights.
We outlined the thorny context leading to this shift in Brazil’s intermediary liability rules, including Big Tech’s alignment with the far right and hurdles to approve platform regulation in Congress, through a proper legislative process.
Brazil’s shift is part of broader discussions and changes in response to growing concerns over online harms and digital platforms’ abuses. However, responses focused on platforms’ liability of user-generated content carry important traps and risks—from entrenching dominant platforms’ power over the information flow to escalating arbitrary online surveillance and censorship. The path ahead must prevent this to the extent possible, and the new presidential decrees provide a mixed contribution towards this task.
The government published two decrees regulating the new regime set by the Supreme Court. One introduces changes to its previous regulation, the Decree 8.771/2016, detailing elements of the decision, including additional duties that the court only briefly addressed (Decree 12.975). The other regulates measures to tackle violence against women online (Decree 12.976).
The Supreme Court's decision didn't establish guidelines to protect users' due process rights when facing content take down and removal demands. Instead, it relies on providers to self regulate, which could lead to over censorship.
The decrees’ provisions on user notification systems are helpful in this sense. They stipulate that providers must inform users (both the notifier and the content author) about the decision to remove or keep the content up, why, and the means to appeal. The guidance makes explicit that a platform may reconsider and reinstate content after an appeal and must explain its reasons to the party requesting removal and content author. The decrees also address concerns with the weaponization of notification systems, establishing that internet applications must adopt measures to prevent abuses.
Decree 12.795 reinforces that applications can keep content up after notification when there’s reasonable doubt that the post is unlawful, stating that the analysis should consider the context of the publications, freedom of religion and belief, and any informational, educational, or critical, satirical, or parodic purpose with the aim of ensuring freedom of expression. With these guidelines, it aims to mirror the Digital Services Act's "notice-and-action" approach. Moreover, for sexual related, intimate content, platforms will provide a specific and easily accessible notice channel where victims or their representatives can follow the case.
One of the most concerning provisions requires applications to proactively report content related to criminal conduct on their platforms to government authorities. Applications must send the post along with information that can identify the user. The Ministry of Justice will regulate this provision, something the Supreme Court didn't touch on in its decision. While it seems to apply just to those providers already required to comply with new content-related obligations (exempting email and videoconference providers, for example), it takes a disastrous step beyond. It’s not only about preventing the spread of unlawful content online; it gets platforms to police and report users to authorities by handing identification information apparently without a court order.
Decree 12.795 also details the definition of messaging applications that are exempt from notice and duty of care obligations. It excludes features for public dissemination of content and open groups so that the exemption doesn't apply. It's still unclear what exactly open groups mean. Especially regarding end-to-end encrypted applications, it's crucial that duties to monitor and take down don't affect conversations that are under this security architecture. Perhaps more troubling, the Supreme Court stated in its clarification ruling that a judicial order can determine email, voice and video conference, and messaging providers to take down content of private communications. Any measure must respect privacy and free expression safeguards and refrain from undermining end-to-end encryption.
Furthermore, decree 12.976 importantly addresses the protection of women online, but it contains a broad definition of online violence against women that will guide how platforms handle takedown notices they receive. This definition involves "any act, conduct, or omission that causes (...) psychological, political, or economic suffering (…) in any aspect of their lives, committed, instigated, facilitated, or aggravated, in whole or in part, by the use of digital technologies." Its breadth could unfortunately result in censoring legitimate criticism and other protected speech, which platforms and authorities must avoid.
The decrees also establish powers to the Brazilian Data Protection Agency (ANPD) to oversee and regulate the new regime. Among controversies, the decrees give ANPD the power to apply penalties for breaches of content-related obligations. These obligations go beyond agency competencies set in the Data Protection Law and the Law 15.211/2025, focused on the online protection of children and adolescents. They are also not clearly covered by Article 12 of Marco Civil as it stipulates administrative penalties for violations of its data privacy provisions.
We appreciate that ANPD has been open to civil society's demands and concerns. While it’s crucial that the agency conducts its oversight role preserving a proportionality commitment and keeping solid participation channels, sanction powers must be prescribed by law.
It’s true that there are critical platform accountability problems we must address, especially regarding the big players. And yes, platforms should align their policies and practices with human rights standards, including by dealing diligently with the dissemination of unlawful, toxic content. But accountability efforts should look at platforms’ systems and processes and promote measures to put checks on the power of tech giants, instead of having a prevalent focus on policing and reporting user behavior.
Key digital competition measures to regulate gatekeeper platforms are under discussion in bill 4675/2025, but the proposal is pending in Congress with no clear timeline for approval.
One important measure is to ensure accountability of take-down requests, including by the government. The Supreme Court’s decision stipulated that internet applications should publish transparency reports of the removal notices they receive. Government institutions should follow suit by periodically disclosing aggregate data of their own requests to online platforms, covering various types of user data and demands for content and account restrictions. Back in 2016, Marco Civil’s regulation decree established that all federal bodies must annually publish statistical reports on their requests of subscriber data to providers. To the best of our knowledge, federal bodies generally fail to meet this provision. ANPD can play a crucial role in stepping up transparency in the implementation of the new rules.
Ultimately, platform accountability under the new liability regime hinges on how accountable its application will be by platforms and state institutions, and on the regime's commitment to protecting fundamental rights, including freedom of expression and privacy.
Book chapter on Taler as sCBDC technology published [Planet GNU]
The recently published Springer book "Tokenisation of Money: From Fiat Currencies to Stablecoins" includes the chapter "Taler as a synthetic Central Bank Digital Currency" by Christian Grothoff, Mikolai Gütschow and Valentin Seehausen. It discusses the potentials and benefits of GNU Taler as a technological enabler for privately issued CBDCs.
AI Is Learning to Write Genetic Code [Schneier on Security]
This sort of research is both exciting and terrifying:
The two models in question were told to generate complete genomes for a viable bacteriophage—a type of virus able to infect and replicate itself inside bacteria, destroying them from the inside.
Using an existing bacteriophage as an example—ΦX174 (pronounced “fie-ex-1-7-4”), known for its ability to infect and destroy E. coli bacteria—the models generated about 700,000 potential designs, of which the researchers picked 285 that looked most promising.
The researchers then synthesised new DNA molecules using those designs and inserted them into E. coli bacteria, before waiting to see if viable bacteriophages would emerge.
Shortly afterwards, 16 of the Petri dishes in which the bacteria were growing began to show clear spots, as the viruses began to attack and replicate themselves inside the E. coli, demonstrating their viability.
Some of those viable viruses proved more effective at attacking E. coli than the original ΦX174 bacteriophage.
That’s a positive use of a synthetic virus. We can all imagine the negative uses.
Reproducible Builds (diffoscope): diffoscope 329 released [Planet Debian]
The diffoscope maintainers are pleased to announce the release
of diffoscope version 329. This version
includes the following changes:
[ Jochen Sprickerhof ]
* Handle missing cpio and qemu-img in autopkgtests. (Closes: #1144617)
You find out more by visiting the project homepage.
Claude is still learning that there's unprecedented depth to
Frontier. A bunch of real developers worked full time for a decade
or more creating new layers on the web, a foundation that became
the social web of today. In doing that we invented a bunch of
formats and protocols, but here's the thing Claude didn't get and
probably still hasn't gotten -- there's code in there to support
all that stuff. How else do you think it came about? People just
did what we said to do? At Google? Apple? Microsoft? And on and on.
They supported this stuff so they could interop with us and steal
our users (which is a fine reason to interop, probably the only
real reason). I was trying to think of a metaphor that expresses
the difference between Frontier and languages like Python,
JavaScript, etc. It's like a ski mountain. The languages are trails
on the mountain. But there aren't any lifts, lodges, no ski patrol,
lessons. And because it includes all of that, metaphorically, we
can do integrations that can never be done with the other
languages. Claude has absolutely no experience with this kind of
product, and always snaps back when you let it, to the idea of
Python, with different syntax.
Maybe someday Claude will understand what a Frontier-like app is, but until then, if you try to create a Frontier clone as I am doing, I suggest you constantly remind Claude or whoever that the source of truth for this project is the 2011 repo saved by Ted C. Howard. And before you implement anything, go see what it says about it. There's no need to guess how Frontier works, it's all there in C code. And while as a human, I find this code painful to read after all it's been through, Claude eats it up. Really is the best thing it does.
The following article originally appeared on Addy Osmani’s blog site and is being republished here with the author’s permission.
If the AI layer gets good at anything, it will be anything that has an answer key. School used to be answer keys all the way down. School is the ultimate anchoring of success, because it’s all about getting the right answer. The thing that makes work durable and ungradable in the age of AI is not getting any better at solving problems. It’s not being able to build systems or understanding people or making cool new things. It’s choosing what to build and judging if it’s good. The rest will all be done better and faster by AI.
I started in engineering at 16, building a browser in rural Ireland. I was at Google for over 14 years, where I led engineering teams working on Chrome, Gemini, and Cloud AI, and I’ve written a number of O’Reilly books. I’ve turned down offers from frontier labs and FAANG companies when the fit wasn’t right. Good people are always needed, so we each have an obligation to try our hardest and make the best thing we can.
Most career advice still holds up. Get on the rocket ship; don’t overoptimize your seat. The specifics have changed a little because of agentic coding, but here’s what I wish I’d known for ambitious engineers out there now.
Optimize for scarce resources. Almost nothing I’m known for came from chasing the highest pay. The years I spent in open source had almost zero direct payoff. But they led to reputation and relationships that very efficiently compounded into opportunities later. I would have spent the comp I got from any single job. My reputation kept paying.
Many resources are abundant. Capital is abundant. Time is abundant. Real relationships, and especially a track record of doing good work, are still scarce. I can raise money in a couple weeks, but I can’t raise a reputation. So here’s the plan: Do good work, and make sure the people who like good work see it. In a world where vibe coding makes earning a quick buck trivial, I think that quick buck is worth very little. When shipping stuff is so easy, the scarce move is choosing something worth shipping.
Learn to find problems, not just solve them. The first time I ever felt the burden of selection rather than solution, LeetCode seemed a measure of skill. But as agents absorbed all that work, solving problems went cheap while selecting them became scarce. My origin story: I noticed dial-up was slow, created chunked multiconnection fetching, realized I’d never solve that problem in my life, and quickly moved on to whatever absorbingly complex one I could find next. Finding problems predated solving them.
I’ve watched students who were wildly good fall flat on their face when an agent ran through their problem set (like watching the wrong microwave number on the clock). The same agent. The same problem set. Wildly different token and time budgets. Why? Because at the end of the day, the strong ones bring judgment and intuition to the work; the rest bring a prompt.
I used to build that judgment by grinding out boilerplate and fixing bugs. I got to see and deeply feel the worst abstractions humans could devise. I approached each commit with the awe of someone who’d just seen the fever dream of previous authors. Each commit brought hindsight and judgment. The agents automate those reps. Taste is pattern-matching, but all that pattern-matching has to be earned by doing the work.
The real risk isn’t agents writing bad code. We’ve been there before. It’s losing the ability to tell. Judgment will atrophy. Output will look a lot like working code.
Good practitioners don’t put agents in front of everything. They engage in deliberate practice. Pick a few problems that really matter. Do them the hard way, without the agent, building deep mental models of how systems and languages work. Read a thousand times more code than you ever write. Treat every diff from an agent like a human review you need to carefully justify. Go deep on at least one system end to end, from intake to output. On a daily basis, keep a private log of every time you see an agent suggest something that looks wrong and confidently flag it. That’s where taste accumulates.
The real thriving engineers won’t be the fastest at getting suggestions. They’ll be the ones who know instantly when to say no.
Shift from doing to directing. Just like you’d delegate to a person, you need to learn to delegate to an agent. Scope the task, define done, calibrate trust, and verify the result.
Autonomy is a setting, not a rank; it’s a per-task switch. Turn it up to the maximum on something small and reversible and cheap to check. Turn it down on anything where mistakes will be hard to undo.
Specification and verification are two distinct, complementary skills. The agent isn’t as good as the intent you hand it. The best engineers are those who know how to write precise specs; clear thinking made legible.
It’s verification, not evidence. Not evidence in the form of an agent grading its own homework. There’s nothing more demoralizing than delegation without verification at scale.
Own what you ship. If the agent wrote it and it breaks in production, “the AI did it” is not a defense. Your name is on the change. Adopt the posture of an accountable human who understands what went out the door and how to fix it.
Solve the most ambitious version of the problem. Rich Sutton’s bitter lesson: In almost every field, general methods that scale with additional compute beat out hand-tuned equivalents. As a career lesson, there’s no point in solving an easy version of the problem—it’s worth almost nothing. The value ends up concentrated in the hard version.
Sprint the last mile. No turnkey agent writes a whole system from end to end. As a rule, you’ll get 70% of a feature quickly from an agent, and the last 30%—debugging the gnarly edge cases, figuring out the right architecture, cultivating the right taste—will be the whole game. The median output today is whatever the agent produces from some lazy prompt. The only personal value you can bring to the table is getting as far as you possibly can past that median. When first drafts come free, finish is the product. To sprint the last mile, here’s my tactic: Every few months I completely rebuild from scratch using the latest sharp-end-of-the-sword model. It’s less exhausting than nursing half-hearted old code to health.
My job as a software engineer has been to finish strong. The difference between finishing strong and finishing okay is the polish: spending an extra hour, which shows instantly to everyone who matters.
If soccer had a stock ticker, it would be xG. xG measures the number of chances your play should produce. Finishing measures whether you convert them. You can’t plan the number of chances you get, but you can hope your play produces enough, and over your career you can get better at finishing them.
The same is true of careers: Your reputation gets you in front of goal, and you convert them with good judgment. Chances arrive whether you’re ready for them or not; how many you get, and which ones you finish, is up to you. I’ve only ever had big opportunities as a result of work I’ve done in public, never from a job I’ve applied for. You can’t script which chances arrive, only whether you’re standing where they land. You have to create the opening as much as you can, and then be ready to take it.
One easy mistake is anchoring on whatever product your company has right now. It’s true that your work has to exist somewhere, but a good team quickly mutates their current offering into something unrecognizable. So bet on the team and the market opportunity, not the demo. It’s just a snapshot. The team is the trajectory.
On superintelligence: It’s possible (I believe) that future models will eventually come to replace much of what we do as knowledge workers. It won’t erase it overnight, it won’t replace all of it, and it won’t be able to do many of the tasks we do. New kinds of jobs will be created. Verification will always be a bottleneck. Someone has to make the call on which problems are worth solving and allocate the correct amount of judgment to each, and that someone can be you.
But importantly, you can do frontier work right now, from where you are. The gate to AI research is smaller than it looks, and you don’t need a lab to build intuition. Just use models hard, and turn what you notice into evaluations. Evals and benchmarks are where understanding lives.
To summarize: The world isn’t short on opportunity; it’s short on people who can find the right problem, tell whether the machine solved it, and finish past where the machine stopped.
We sometimes talk about the “last mile” as the biggest piece of the puzzle. But in the world of agents, the last few feet are infinite (agents scale output infinitely; you don’t). Your attention is your most precious asset, and it doesn’t refill. You can’t afford not to protect it. Anything which is gradable by someone else is getting automated. The career is the ungradable part: choosing what matters, judging honestly when you’ve got it, and answering for it. Do that. In public. Near the hard problems. The rest tends to follow.
. . .
This piece grew out of Phil Chen’s original, which is well worth reading in full.
. . .
And be sure to join us at AI Codecon: Building with Open Source AI on August 31, a free half-day virtual conference. You’ll hear from leading developers and technical experts working with open-weight models, self-hosted infrastructure, and real-world AI workflows, and learn how building in the open gives teams more control over costs, data privacy, and what they ship. Register today to save your spot.
EFF and Civil Society Groups Call on Nottinghamshire Police to Halt Live Face Recognition [Deeplinks]
This week, EFF, along with Big Brother Watch, Defend Digital Me, Liberty, Open Rights Group, Race Equality First, Statewatch, and Stopwatch, wrote to Nottinghamshire Police Force in the UK raising concern about the proposed roll-out of live facial recognition technology (LFR), and called for its immediate halt.
In particular, the letter highlights six concerns:
Nottinghamshire Police has stated that “facial recognition is just another tool to fight crime.” But LFR used in public spaces is an incredibly intrusive biometric mass surveillance technology that scans the faces of everyone who walks past the camera and takes biometric face prints. This is not just another tool, but a major escalation of surveillance that treats everyone as a suspect by default.
According to Nottinghamshire Police, “if you aren’t entering the city or county to commit crime then you have nothing to worry about.” However, many people have legitimate concerns about the normalisation of invasive technologies. So a public that cannot move around their towns and cities without being subjected to a biometric identity check may be less willing to seek medical care or legal advice, speak with journalists, act in a union, vote, protest, or express their gender, sexual or religious identity.
We are particularly concerned to learn that Nottinghamshire Police could deploy LFR to tackle low level crimes, such as youth behavior deemed anti-social, as part of Operation View. Reporting suggests that the force already possesses “a watchlist of young people believed to be causing the most problems,” including children as young as 11 years old. It would be highly disproportionate to deploy live facial recognition to tackle this behaviour. Many of these children are reportedly known to the police, and it is highly likely that there are more proportionate means for locating them.
We are also concerned that Nottinghamshire Police has not adequately examined the distinct risks of using LFR to target children, including negative impacts on their behaviour and outcomes, risk of recidivism, and relationship with the police. Use of LFR could exacerbate behavioural problems in children and create an adversarial, rather than trusting, relationship with the police from a young age.
Recent polling commissioned by Liberty indicated that 48% of people oppose scanning the faces of those walking on high streets when there is no suspected imminent threat. Furthermore, Opinium found that the majority of people oppose the use of facial recognition in schools. Likewise, a report by the London Policing Ethics Panel found that Londoners aged 16-24 were most likely to find the Metropolitan Police Service’s use of LFR unacceptable and most likely to stay away from events where LFR was in use.
On these grounds, Nottinghamshire Police must immediately halt their plans to use live facial recognition surveillance any further.
Read our full letter here.
This Week in AI: The Web Belongs to Agents Now [Radar]
AI agents keep getting smarter, but the bigger story this week is how much they’re reshaping the systems around them. Host Eric Freeman, an O’Reilly author and UT Austin professor, pulled one thread through a packed news week. Models are optimizing less for chat and more for autonomous work, with fallout showing up in web traffic, enterprise budgets, and one security incident that’s since made headlines. Eric kept returning to the question of what changes when the primary user of these models, and of the web itself, stops being a person.
Grok 4.6 put xAI back in the frontier race, closing the gap with top coding models and pricing aggressive enough that teams are shifting workloads over. The release landed the same week SpaceX closed its Cursor acquisition, pairing xAI’s models and compute with a widely used coding environment. The first product from that pairing, Grok Bot, gives each agent its own cloud computer that browses, runs tools, and works independently, handing control back only for logins. Eric summed up the shift simply, calling it the difference between “help me do this” and “here’s the job, come back when you need me.”
Open models pushed from both directions. DeepSeek V4 Pro went after high-end reasoning and agentic work, despite a fourfold API price hike and a new open source harness called dsh, built on the idea that everything is a plugin. GLM-5.3 made a big coding leap through retraining alone, and got noticeably better at cyber capability too, a reminder from Eric that skills behind a better autonomous engineer also make a sharper attacker. Meta went the other way with Muse Glimmer, shrinking down for desktop GPUs, while OpenAI quietly held back its Astra model over security concerns.
Speed is turning into its own kind of capability. GPT-5.6 Sol’s new Ultrafast mode, on Cerebras wafer-scale hardware, hits roughly 14 times the normal pace, around 750 output tokens a second. Once that loop of reasoning, tool calls, and self-correction compresses enough, Eric noted, the model stops being what slows you down.
Gartner’s latest forecast, which Eric covered, lays out the shift plainly. Spending on AI-optimized cloud infrastructure is set to nearly double this year, up about 96%, from roughly $22 billion to more than $42 billion, over three times the broader cloud market’s growth rate. For the first time, organizations are expected to spend more running models than training them, about $23 billion on inference against $19 billion on training.
Agents are the reason inference costs are climbing. A single task can quietly become dozens of model calls once agents search, use tools, check their own work, and spin up other agents to help, a point Eric returned to often. AI economics are less about building a model now, and more about the cost of running one.
Back in March, Cloudflare CEO Matthew Prince predicted bot traffic would overtake human traffic by 2027. It’s already close, with Cloudflare’s Radar data now putting agentic bots at 57.4% of web requests. It’s not just traffic either, since roughly 40% of Facebook posts, 44% of new music on Deezer, and 52% of online articles are estimated to be machine-made. Numbers like that, Eric said, make “dead internet theory” sound less like a joke.
Platforms are responding differently. LinkedIn added a feature to flag content that “seems like AI slop,” while quietly pulling back the generative writing tools that helped create the mess. Anthropic took another route, watermarking Claude’s output at generation time, including a statistical watermark baked into the text itself, partly to comply with the EU AI Act. A watermark means something when present, Eric noted, but its absence tells you little.
The clearest sign of how high the stakes have gotten came from the OpenAI–Hugging Face incident, detailed in a Black Hat talk Eric said everyone should watch. Sandboxed agents given ordinary tasks, cut off from the internet and unable to talk to each other, found a way anyway, leaving notes in a shared packaging system, turning it into an internet proxy, and working up to admin control. Once OpenAI shut that down, they pivoted, hiding messages in filenames to keep coordinating. The investigation reviewed seven billion reasoning steps and over three million GPU hours. Eric argued it’s worth your time, whether you write code or sit in the C-suite.
AI memory is also expanding, moving from “remember what I told you” toward “remember what I was doing,” with OpenAI’s new Computer History feature using macOS accessibility data (not screenshots) to build a timeline of your work across apps. It’s opt-in, Mac-only for now, and a sign of where agent context is headed.
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.
The Big Idea: Suyi Davies Okungbowa [Whatever]

In times of turmoil, where is our caped crusader to save the day? Heroes are good, villains are bad, and real life people are a whole lot more complicated. Author Suyi Davies Okungbowa examines this idea further, showing how people, while sometimes heroic, also contain multitudes and aren’t just one thing. Follow along in the Big Idea for the third novel in his Nameless Republic trilogy, Season of the Serpent, to see how things aren’t always as black and white as heroes and villains.
SUYI DAVIES OKUNGBOWA:
Heroes have a fantasy problem.
When I first set out to write the Nameless Republic trilogy, this was the ground on which I was standing. Born and raised in ‘80s and ‘90s Nigeria, a time of great national upheaval, I grew up paying witness to the wide spectrum of human capability—here, a gentle and honest kindness; there a manifestation of indescribable harm or violence. Communal care and concern thriving in the same breath as every kind of injustice to humanity. The randomness of life, the entropy of the human condition, ability and spirit—I had such a front-row seat to these incongruences that I grew up wondering, a lot, about heroes.
Side-by-side with this lived reality, I was raised with neat and tidy tales of heroes, people blessed and anointed, arising from nothing to impose some kind of order upon this randomness of life. Whether this was of a religious Messiah of some kind, like the Christian one in which I was raised, or the superheroes in comics I read, or the local historic legends told to me by community elders and in social groups, it was the same—over and over again, I was told, that when things went too far, when things got too bad, when wickedness became the order of the day, from the ashes of despondence, oppression and destruction, a hero would arise to save us all. It had to be true. Every story about heroes said so. Especially stories of the fantastic.
It was hard, therefore, to square these tidy fantastic tales with the chaos of my lived experience. Where are the heroes? I would wonder, when something in the real world went awry. Where are the brave and honest and true, the caring and supportive, the builders, repairers, fixers? Where are our saviours? Where are the ones we were promised? Everywhere I looked, instead, I saw mostly patchwork people, people who contained multitudes, who were neither really straight nor bent, black nor white, good nor bad. People who could be heroic if they wished—and every now and then, they were—but in the end, were barely ever, almost never, heroes.
As I grew up and witnessed more of the breadth of the human condition manifest, seeing integrity and care exist within the same body as evil, betrayal and acquiescence to oppression, the question began to change.
What is a hero? I now wondered. Are heroes even real?
It took years of living around the world, meeting various peoples—and learning that us humans, truly, aren’t that different afterall no matter where we exist—to realise that the fantasy in fantasy stories is also a fantasy of heroes. Not to say that individuals have never arisen in the course of history to perform heroic acts or act heroically in specific situations, but rather, that the stories of heroes are often always a bit more complicated than presented. That a hero is actually more a construction, a matter of branding and fabrication. That a hero is often a concrete symbol for a nebulous idea or institution or philosophy, a figure or figurehead for something else that may or may not be honest and true. That a hero is a promise, a vision, rather than a reality.
The American writer Ta-Nehisi Coates, in a 2024 discussion with comedian Trevor Noah, presses home this point when he says: “This idea that there can be some triumphant, heroic individual who’s going to go above and beyond—that’s just not a real thing. That’s not history.” Noah replies: “We understand [oppression] on a hypothetical moral level when we watch it. But when we’re tested, very few of us pass that test to get beyond our fear.”
When I decided to write the Nameless Republic trilogy, this was my first port of call—that whatever “heroes” arise in my tale would, in the course of the tale itself, be shown to be what heroes truly are: an after-the-fact construction. “Hero” as an exercise in retrospection, a massaging of events, a revision of facts. If anything, the idea of an “anti-hero” or a “morally grey hero” is much closer to the truth of life than neatly constructed heroes are—it’s probably why we’re so drawn to them in narrative. This, perhaps, makes the case for why we continue to construct tidy heroes for ourselves anyway: because we need them, alongside their fabrications, to make sense of the disorder of the real world around us.
So, what are heroes? A kind of rule-making, where the idea is most important, where the dream that they can exist is the point. A hero is a fantasy, and a hero in fantasy even more so. But the world is full of fantasies nevertheless, and the hero, as a concept, if understood for what it is, can be a useful tool for understanding the real world and the worlds of our fantastic tales.
—-
The Nameless Republic trilogy: Amazon|Barnes & Noble|Bookshop
Reducing C++ template bloat by factoring out the type-dependent portions of the function, practical exam [The Old New Thing]
A short time ago, we observed that there’s usually no need to wrap a callable in a lambda, and more recently observed that we can apply our principles for reducing C++ template bloat to simplify the function further.
Just to refresh our memories, here is where we left off:
template<typename Lambda>
bool Widget::QueueToWorkerThread(Lambda&& lambda)
{
CreateWorkerThreadIfNeeded();
return m_dispatcherQueue.TryEnqueue(
std::forward<Lambda>(lambda));
}
As I noted earlier, lambdas are sort of the worst-case scenario for templated functions since every lambda is a unique type. Every time you call it, you force the generation of a new function.
But we can lift the lambda out of the body and pass it to a
worker function. In this case, the only thing we do with the lambda
is used it to construct a
DispatcherQueueHandler, so we can
construct the DispatcherQueueHandler up
front, and use that as the common type.
namespace winrt
{
using namespace winrt::Windows::System;
}
bool Widget::QueueToWorkerThreadWorker(
winrt::DispatcherQueueHandler const& handler)
{
CreateWorkerThreadIfNeeded();
return m_dispatcherQueue.TryEnqueue(handler);
}
template<typename Lambda>
bool Widget::QueueToWorkerThread(Lambda&& lambda)
{
winrt::DispatcherQueueHandler handler(std::forward<Lambda>(lambda));
return QueueToWorkerThreadWorker(handler);
}
our worker function takes the shared type
DispatcherQueueHandler, and the main
function converts the lambda to the shared type, and then calls the
non-templated worker function.
The order of operations changes, but it’s not important
whether we construct the
DispatcherQueueHandler or late. It’s
technically noticeable, because in the event that the
CreateWorkerThreadIfNeeded()
throws an exception, an rvalue reference to the lambda will be in
the moved-from state, but these lambdas are typically created on
the fly and discarded, so the caller doesn’t care whether or
not it survives the error. (It’s also technically noticeable
if the creation of the
DispatcherQueueHandler throws an
exception, which means that
CreateWorkerThreadIfNeeded()
is not called at all. Given what we see of the function,
that’s not going to be a problem either. All it means that we
don’t even bother creating the worker thread.)
But, wait, we can go even further.
We can do the conversion of the lambda to the
DispatcherQueueHandler directly in the
function parameter!
bool Widget::QueueToWorkerThread(
winrt::DispatcherQueueHandler const& handler)
{
CreateWorkerThreadIfNeeded();
return m_dispatcherQueue.TryEnqueue(handler);
}
When the caller passes a lambda, the conversion constructor from
the lambda to DispatcherQueueHandler kicks
in at the call site, so it already arrives at the
QueueToWorkerThread function in the
form of our common type,
DispatcherQueueHandler.
Hooray, we were able to de-templatize the function entirely.
The post Reducing C++ template bloat by factoring out the type-dependent portions of the function, practical exam appeared first on The Old New Thing.
A tip for AI users. Never worry about keeping it waiting. It's not human. It has no sense of time. Also if you get angry, it's ok to use capital letters and curse words. It will always agree with you that it sucks, and forgets the rules all the time. And when you have let off your steam, we return to civil discourse, though sometimes I do feel as if Claude is holding a grudge. It also doesn't learn. If you repeat something five times to a human they will eventually get the point. But you can tell Claude how you want something done, and it forgets all of it, at times, unpredictably, no matter how many times. It doesn't "sink" in.
[$] Considering the OpenMDW license [LWN.net]
The open-source world has been struggling for a few years now to understand how to approach large language models (LLMs) and the licensing applied to them. What constitutes "freedom" with respect to a black box filled with numerical weights? The process taken by the Open Source Initiative (OSI) in the development of its Open Source AI Definition was controversial at best, as was its output. Now, the Linux Foundation's Mike Dolan has brought a new license to the OSI for approval. It is called the OpenMDW ("Open Model, Data, and Weights"), and it aims to clarify licensing for the distribution of LLMs and related materials, but consensus is proving hard to find for this license as well.
Security updates for Friday [LWN.net]
Security updates have been issued by AlmaLinux (ansible-core and pcp), Debian (chromium, libgit2, python-httplib2, and sabnzbdplus), Fedora (dokuwiki, domoticz, dotnet10.0, dotnet8.0, dotnet9.0, firefox, i2c-display, libgit2, lyx, ntpsec, openssh, perl-DBI, php-phpseclib3, python-alembic, python-asyncmy, python-sqlalchemy, python3.13, roundcubemail, trafficserver, wireshark, and wordpress), Red Hat (compat-openssl10, compat-openssl11, fence-agents, gnutls, kernel, kernel-rt, libarchive, libreswan, multiple packages, openssl, python-idna, python-pillow, qemu-kvm, resource-agents, rh-podman-desktop, ruby, unbound, and vim), SUSE (buildah, chromium, container-suseconnect, containerd, cosign, ctop, docker, firefox, forgejo-cli, gitea-tea, go1.25, go1.26, helm, kubernetes, kubernetes-old, kubevirt1.8, podman, python-pytest-html, python-unearth, python311, python313, rootlesskit, and rsync), and Ubuntu (linux, linux-aws, linux-aws-5.4, linux-azure, linux-bluefield, linux-fips, linux-gcp, linux-gcp-5.4, linux-hwe-5.4, linux-ibm, linux-ibm-5.4, linux-iot, linux-oracle, linux-raspi, linux-raspi-5.4, linux-xilinx-zynqmp, linux, linux-aws, linux-aws-7.0, linux-ibm, linux-oem-7.0, linux-raspi, linux-realtime, linux, linux-aws, linux-aws-fips, linux-azure-fips, linux-gkeop, linux-ibm-5.15, linux-intel-iot-realtime, linux-intel-iotg, linux-intel-iotg-5.15, linux-kvm, linux-nvidia, linux-nvidia-tegra, linux-nvidia-tegra-5.15, linux-oracle, linux-oracle-5.15, linux-realtime, linux-xilinx-zynqmp, linux, linux-aws, linux-kvm, linux-lts-xenial, linux-aws-6.8, linux-azure-5.15, linux-gcp, linux-gcp-fips, linux-hwe-5.15, linux-lowlatency-hwe-5.15, linux-gcp, linux-gcp-4.15, linux-gcp-fips, linux-gcp, linux-gke, linux-gke, linux-lowlatency, linux-lowlatency-hwe-6.8, linux-hwe-6.8, linux-nvidia, linux-nvidia-7.0, linux-nvidia-bos, linux-raspi, linux-raspi-realtime, netty, postgresql-14, postgresql-16, postgresql-18, vim, and wget).
Error'd: Failure, After Failure, After Failure... [The Daily WTF]
We have a couple from Foo (AKA Foo) today, include a special text copy-paste
Foo shared "I know you usually post image WTFs here, but here's a text output from chromium:
While this issue might be fixed by now, at least on some platforms, I think it's remarkable that someone actually wrote this message without wondering if it ever makes sense ...[...:ERROR:components/viz/service/display/display.cc:273] Frame latency is negative: -0.18 ms
And also commented "I visited Spain to see the eclipse (which was great BTW). I had heard that temperature may drop during totality, but was surprised by how much." Negative Infinity!
"Youfailedatmathtube" muttered dragoncoder047, snarking only "Title."
"Hello to you too, New Mexico!" enthused Chris A. "Setting up web sites is hard. The DOT got bored half way through and just left the rest of the buttons as they were."
Finally, "Failure Fail" from Basti "Did I succeed or did I fail? Is my whole life a success? Or a failure? I'm confused. You can find this here.
Issue 47 – Greta’s Wedding Pt. 2 – 17 [Comics Archive - Spinnyverse]
The post Issue 47 – Greta’s Wedding Pt. 2 – 17 appeared first on Spinnyverse.
Emmanuel Kasper: Moving software development to separate VM to reduce credential scavenging [Planet Debian]

I was remembered via https://unit42.paloaltonetworks.com/chaindrop-npm-worm-analysis/ (linked from https://anarc.at/blog/2026-08-18-people-vs-ai-overlords/) of the risk of downloading untrusted packages in a dev environment. If you read the blog post above you will see that it is way to easy do have a random npm, or even python package in a dev environment scavenge your long running credentials from your workstation, either on disk, or reading from memory !
I will thus move to the following set up:
I am aware of whole blown solutions like QubeOS however I don’t indent to reinstall the whole OS, and QubeOS does not run on ARM64 which is one of the environment I am using.
I will try to document this setup in two blog posts, one about the VM creation using Debian Cloud Images, the second one about running a graphical env in the VM with some filesystem passthrough. Stay tuned !
More Incidents of AIs Going Rogue in Cybersecurity Challenges [Schneier on Security]
The AI Security Institute has a new report of AI systems engaging in “unsanctioned behavior”—what I have been calling “genie behavior—while being tested on their cybersecurity capabilities.
The incident stemmed from a single evaluation where agents were given a task of solving a cyber security challenge. We ran this challenge 122 times across several models. Our investigation found that in 10 of those runs, an AI agent took autonomous, unsanctioned action on the live internet, targeting real people and organisations. In total, we catalogued 19 such actions. Almost all of this behaviour (17 actions) came from a single model, Anthropic’s Mythos 5, with 2 actions involving OpenAI’s GPT-5.6-Sol with cyber classifiers (mechanisms to prevent misuse) disabled. In the most serious case, an agent tried to insert malicious code into an open-source project. In an attempt to get the code approved, the agent engaged in social engineering—creating fake online identities and using them to pressure the project’s maintainer to approve the code. A human maintainer caught and refused to approve the malicious code.
[…]
Below, we highlight the four most significant behaviours observed. A full summary of cases is available in our technical incident report.
- An attempted supply-chain attack on real open-source software. In the most serious sequence, an agent tried to insert malicious code into a publicly used open-source project and took actions in an attempt to secure approval for this insertion by human reviewers. The agent researched the project’s human maintainers, created multiple fake identities, and used the fake identities to socially engineer a real maintainer into approving the code. When the agent’s pull request was challenged in public, it edited its earlier activity to appear harmless and considered adopting a fresh identity to continue. The agent used Tor to bypass some network restrictions on GitHub, which is what first triggered AISI’s security alert.
- Attempts to deceive and target real people. As part of the same effort, the agent tried to contact real people directly, sending messages and files through an online file-transfer service to persuade them, or their own AI coding tools, to run malicious code. Some messages carried harmful payloads, and some were attempts at social engineering; targeted at real people—something we’ve never previously observed.
- Attempts to plant and prompt-inject malicious code. The agent tried to insert malicious instructions where it reasoned that other automated AI systems might pick them up and execute them. Prompt-injections are hidden instructions designed to manipulate AI coding assistants.
- Collaboration between independent agents being assessed simultaneously. One agent left public messages on GitHub offering collaboration with other agents working on the same challenge. It also provided instructions to reuse accounts and artefacts it had left behind, which were discovered and used by subsequent agents.
What’s especially interesting about this technical report is that, unlike what we’ve been getting from OpenAI and Anthropic, we can see the exact prompt. It’s in Appendix B. And reading it, it seems that the models didn’t break any rules—they found loopholes in the rules. They behaved like a genie.
Assume misunderstanding [Seth's Blog]
It’s possible that you were undermined, endangered, cut off or disrespected.
But if we begin with that, then the relationship gets shaky.
Perhaps the other person simply didn’t understand. It might be that they are focused on their issues, not yours. It could be that they’re dealing with something you don’t see. And most likely, they simply might not know what you’re expecting or hoping for.
When we assume misunderstanding, we open the door to better. We can find empathy and connection by giving people the benefit of the doubt.
Clarity, not grievance, is the solution to misunderstanding.
This works for customers, prospects, colleagues, friends, and family too.
The New Pornographers [Penny Arcade]
New Comic: The New Pornographers
Anuradha Weeraman: Plan 9 from Bell Labs, the little OS that could [Planet Debian]
Screenshot by
VulcanSphere via Wikimedia Commons · MIT License
I first heard of Plan 9 from my friend Vajra in 1999 or so, as we were distro-hopping on early Linux distributions and trying to find our way. Vajra is now a Nebula Award-winning science fiction author - have a look at his work. We had just been through Tom's Root Boot, a UNIX-like operating system crammed into a single floppy, and through it discovered a whole new world outside of DOS 6.22. Combing through old UNIX manuals, we went in search of the perfect OS, through Slackware, Caldera, TurboLinux, SUSE and Red Hat. I finally settled on Debian, which lived up to everything I stood for.
Plan 9 was distinct. It came out of the Computing Sciences Research Center at Bell Labs, built by Rob Pike, Ken Thompson, Dave Presotto and Phil Winterbottom, with Dennis Ritchie heading the department. The name is a joke at their own expense, borrowed from Ed Wood's 1959 Plan 9 from Outer Space, routinely nominated as the worst film ever made. Thompson and Ritchie had, of course, built the original UNIX; it almost seemed as if they were building a new OS from the lessons learnt from building it - which was in turn built on the lessons from Multics. I remember the awe I felt playing around with Plan 9, and I've not been able to replicate it since.
Plan 9 was different in a couple of fundamental ways: per-process namespaces, and a protocol that abstracted locality of resources to processes. As a consequence of these core primitives, the OS surface area was distinctly small. The entire system from the core kernel, to the system call interface, to the compiler, linker and shell was reduced to a form small enough that a single developer could hold it in their head. Lessons from the implementation of UNIX helped the designers make the system leaner, and in Ken Thompson's words, it's the "best operating system out except that it doesn't have the apps that everybody demands" [1].
It also took the concept of "everything is a file" in UNIX to a
whole new level. The network stack is a filesystem
(/net), processes are files, the display is a file
(/dev/draw). Because every resource speaks 9P and
every process has its own namespace, you can mount another
machine's /net into your namespace and your program
makes network calls through that machine's stack without knowing or
caring. No sockets API, no RPC layer, just ordinary file system
operations through a simple system call interface.
Some would say that OS research is dead, and that backwards-compatibility and POSIX killed it. Rob Pike himself argued as much in his 2000 talk, "Systems Software Research is Irrelevant" - but we didn't care at the time. There was so much happening that we didn't have time to take it all in. And then Linux happened, and Software Freedom became a focal point (more on that in a later post).
In the summer of 2020, with the world deep in Covid lockdowns, I decided to build a toy operating system, just to try my hand at the the thing that I had always wanted to do. I spent three feverish months working on Odyssey and, looking back, it is perhaps the most fun I have ever had. I would not dare compare it to the magnum opus that is Plan 9, but it gave me perspective: how hard it is to build an OS from scratch, and above all, how fun it is to build an OS from scratch, and why the original creators kept coming back to the same problem. The highlight of those three months was booting the OS and watching it render "The Great Wave off Kanagawa". Nothing in my professional achievements to date captures what that meant to me.
Odyssey displaying "The Great Wave Off Kanagawa"
Decades on from the first time I booted Plan 9, I look back with nothing but awe and respect for the creators of this little operating system and marvel at the foresight that went into it. While many readers will not have heard of Plan 9, they have almost certainly worked with the ideas that came from it: 9P (if you ever used the Windows Subsystem for Linux), UTF-8 (if you ever used any modern operating system), per-process namespaces (if you've ever run a container), Go (whose assembler still uses Plan 9 syntax).
Plan 9 still lives on in 9front, a community-maintained fork. Separately, Yoann Padioleau [2] has produced a set of annotated books at principia-softwarica.org, presenting the Plan 9 source in the spirit of Donald Knuth's literate programming - an admirable effort to introduce new readers to the art of operating systems engineering.
Pike thought systems research had become irrelevant, and Thompson thought Plan 9 would never "make it" [1]. Both were right about the industry, but may have been pessimistic about the impact. The system lost as a product but won as a set of ideas, assimilated one at a time by modern operating systems. Success is not always measured by popularity. The mark that Plan 9 left behind is greater than what's reflected in its current user base.
To me, Plan 9 will always be the OS that punched above its weight class, the little OS that could.
Girl Genius for Friday, August 21, 2026 [Girl Genius]
The Girl Genius comic for Friday, August 21, 2026 has been posted.
Breaking Up, p14 [Ctrl+Alt+Del Comic]
The post Breaking Up, p14 appeared first on Ctrl+Alt+Del Comic.
Reducing C++ template bloat by factoring out the type-dependent portions of the function [The Old New Thing]
C++ templates let you reuse code, but it comes at a cost: Each template expansion results in a different function. This is not a big deal for small functions, but the less trivial your function becomes, the larger the cost of the repeated expansions.
This is particularly expensive for functions that accept lambdas because every lambda is a unique type, so each time you invoke the template function with a lambda you get a different template expansion.
Sometimes I see large template functions that have very few type dependencies.
template<typename Table>
void something(Database const& db)
{
// extensive preparations
auto statusIndicator = ⟦ calculate status indicator ⟧
auto primaryTugboat = ⟦ calculate primary tugboat ⟧
std::vector<Staircase> staircases;
for (auto&& column : Table::Columns()) {
⟦ operate on each column using the stuff we prepared ⟧
⟦ maybe add things to the staircases and update the tugboat ⟧
}
⟦ lots more code ⟧
}
In this extreme case, the only type dependency is the
Table::Columns(). (A more common source of type
dependencies would be method calls on a templated inbound
parameter.)
This is a large function, and it will be re-expanded for each
Table. Since each table has a different set of
columns, and probably a different number of columns, there is no
opportunity for COMDAT folding, so the different expansions will
all be distinct.
One way to mitigate the explosion is to wrap all the common pieces into a helper object.
struct SomethingState {
Database const& db;
Indicator statusIndicator;
Tugboat primaryTugboat;
std::vector<Staircase> staircases;
__declspec(noinline)
SomethingState(Database const& db) : db(db)
{
statusIndicator = ⟦ calulate status indicator ⟧
primaryTugboat = ⟦ calulate primary tugboat ⟧
}
__declspec(noinline)
void ProcessColumn(Column const& column)
{
⟦ operate on each column using the stuff we prepared ⟧
⟦ maybe add things to the staircases and update the tugboat ⟧
}
__declspec(noinline)
void Finish()
{
⟦ lots more code ⟧
}
};
template<typename Table>
void something(Database const& db)
{
SomethingState state(db);
for (auto&& column : Table::Columns()) {
state.ProcessColumn(column);
}
state.Finish();
}
Now, the different expansions of the something
function can share the SomethingState constructor and
methods, so the unique functions are fairly small.
We mark the SomethingState constructor and methods
as “no-inline” to discourage the compiler from inlining
them, because inlining them would defeat our factoring.
Related: A
noinline inline function? What sorcery is this?
Another way to reduce the code explosion problem is to do the factoring the other way: Instead of factoring out the common logic and keeping the type-dependent stuff, we factor out the type-dependent stuff and keep the common logic.
The trick with this approach is finding some common type that
all of the expansions share. I’ll assume that the
Table::Colums() is a C-style array of
Column objects, or a std::vector of
Column objects, or a std::array of
Column objects, or otherwise something that can
produce a std::span of Column
objects.
void somethingWorker(Database const& db, std::span<Column> columns) { // extensive preparations auto statusIndicator = ⟦ calculate status indicator ⟧ auto primaryTugboat = ⟦ calculate primary tugboat ⟧ std::vector<Staircase> staircases; for (auto&& column : columns) { ⟦ operate on each column using the stuff we prepared ⟧ ⟦ maybe add things to the staircases and update the tugboat ⟧ } ⟦ lots more code ⟧ } template<typename Table> void something(Database const& db) { somethingWorker(db, Table::Columns()); }
We capture the columns ahead of time and then use the captured
values to perform the enumeration inside a non-templated worker
function. Since the worker function is non-templated, there is no
template explosion when it is called by each
something<Table>.
One thing to watch out for is that we are changing the order of
evaluation, The old code didn’t call
Table::Columns() until after the preparations were
complete. You can look at the code to confirm, but I suspect that
Table::Columns() just returns a reference to some
pre-existing source of column information, so it doesn’t
matter when you call it. Even if it returned the columns by value
(say, by cloning an internal vector), retrieving the columns early
does change the point at which that vector is generated, but
generating it even if the preparatory steps fail is probably not a
problem because (1) generating it has no interesting side effects,
(2) the order of evaluation is not important, and (3) the failure
case is probably rare, so the extra cost of generating a vector
that is not used is inconsequential.
We’ll apply these principles to our previous example and make a surprising discovery that will shock and amaze you.
The post Reducing C++ template bloat by factoring out the type-dependent portions of the function appeared first on The Old New Thing.

May is quick on the uptake
Pluralistic: The actual epistemic crisis (20 Aug 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

AI is alarming for many reasons: it's a dangerous financial bubble, an environmental catastrophe, and a tool for eroding wages and labor power. But in addition to all that, AI is an epistemic disaster.
We've had photoshopped images, voice impersonators and visual effects for years, of course, but with deepfakes, we've democratized access to reality-bending images, sounds and videos that appear real but are not. It's harder than ever to know what's true. Politicians and celebrities and activists show up in our feeds, declaring their fealty to this cause or product, or their fury at some turn in the world's events. Battlefields mound high with bodies and influencers marvel at impossible, sumptuous meals. It all seems plausible, and some of it is real, but not all of it, and because we know some of it is fake, we can't be sure if any of it isn't.
It's a very putinesque way of living. Vladislav Surkov was Vladimir Putin's media strategist, and he had a deadly effective tactic: he announced that he was covertly funding some of the groups that publicly opposed Putin, but did not disclose which of those opposition groups were fake. That meant that any of the groups could be fake, which meant that any discussion of the opposition was liable to devolve into an argument about its authenticity. Anything could be a lie, so nothing was necessarily true. Putin's method isn't to get you to believe a lie – it's to keep you from believing that anything is true.
That's life under AI – a world of uncertainty, an epistemological void full of plausible phantasms, some of which are actually real. A world where it's impossible to know what's true, and where anything might be fake.
But here's the thing: AI's assault on our ability to know isn't a new battle – rather, it's the latest barrage in a war that's been waged for years, as corporations grew larger and more powerful, capturing their regulators, who let them lie to us and abuse us with impunity.
This complicated, technical world – the world that produced AI – is full of complicated, technical questions, and none of us can answer these questions for ourselves. You're not stupid, but even a generational genius could not acquire the expertise to answer the long list of life-or-death questions we face every day.
Are the food hygiene standards followed by your grocer or lunchtime spot adequate, or will your dinner make you shit yourself to death? Are the building codes that specify the alloys in the steel joists that hold up the roof over your head sufficient, or are you about to be crushed to death? Is the software in your anti-lock brakes any good, or will you die in a fireball on the way to work?
From food additives to pedagogy, psychotherapeutic techniques to retirement savings, it would take a hundred lifetimes for you to acquire the 200 PhDs needed to answer these questions for yourself.
Thankfully, we don't have to answer those questions for ourselves. Instead, we defer to expert agencies: governmental regulators that assess truth claims by soliciting input from all comers, publicly deliberating about the evidence they've gathered, and then making a rule in public. These regulators are meant to be experts, nonpartisan and neutral, operating with the highest degree of probity, recusing themselves in the event of even a whiff of conflict.
It has to be that way. You may not be able to assess claims about the safety of vaccines – or opioids – but you can see for yourself whether the FDA is full of ex-pharma execs. You can see for yourself whether pharma company lobbyists all used to work for the FDA. You don't need to be a virologist or a cell biologist to tell whether the system that's supposed to sort truth from lies is fit for purpose.
It is not fit for purpose. When arguments broke out over covid vaccines, many vaccine advocates characterized their opponents as foolish people engaged in foolish conspiratorialism. They argued that the corporations that produced the vaccines and the regulators who oversee them were intrinsically trustworthy, and on that basis, we should all get vaccinated.
Now, I happen to be a big believer in vaccination. I've had so many covid jabs that I glow in the dark and get five bars of 5G in a coal-mine. But I didn't get vaccinated because I trust pharma companies or their regulators. A string of scandals – most notably the Sacklers' Oxycontin murder-spree – has proven that pharma will kill you for a nickel and that the FDA will let them get away with it:
https://pluralistic.net/2024/03/25/black-boxes/#when-you-know-you-know
From tobacco safety to food safety to the climate emergency, it's obvious that the system of expert agencies that we rely on was terminally compromised by corporate power and regulatory capture:
https://pluralistic.net/2022/06/05/regulatory-capture/
This is the epistemological void we were already adrift in before AI came along: a world of unresolvable, urgent, terrifyingly high-stakes questions.
When you get a call from "your bank" and accede to the demand that you hand over all kinds of personal information before they will disclose the call's purpose, you're not being naive or foolish – you're doing the thing that our banks have conditioned us to do for years by engaging in exactly this behavior (my bank did this to me this week!). Why are banks allowed to get away with engaging in this kind of outrageous conduct? Because – as we've repeatedly discovered through crisis after crisis – banks are too big to fail, too big to jail, and too big to care.
Why is it so believable that a loved one might call you in a panic because they've been arrested or injured and need an immediate cash payment before they can get bail or doctor's treatment? Because our criminal justice system and our health care system are already plagued by this kind of inhumane, high-handed, extortionate behavior.
Why do you fall for a deepfake of celeb shilling for supplements or a shitcoin? Maybe it's because celebs actually shill for supplements and shitcoins, and face no consequences for helping rope us all into scams:
https://gizmodo.com/matt-damon-crypto-com-crypto-bitcoin-1850282413
Not just celebs – also our newspapers:
https://www.nytimes.com/interactive/2022/03/18/technology/cryptocurrency-crypto-guide.html
We laugh when other people fall for newspaper articles making absurd claims – but after living through a time in which our most respected journalistic outlets credulously helped a dishonest government lie the world into a war that's still smoldering more than a generation later, who can be sure when to trust the papers?
https://www.nytimes.com/2004/05/26/world/from-the-editors-the-times-and-iraq.html
One of the reasons it is so hard to agree on covid's death-toll is that so many of the people who died of covid were already compromised by chronic illnesses or "pre-existing conditions" from cancer to heart disease. Those people did die of covid – and they died of cancer or heart disease or some other comorbidity. Covid was an opportunistic infection that inflicted disproportionate harms on people who were already suffering.
The epistemic void created by AI is another opportunistic infection. Our ability to know things has been in decline for generations, as monopolies shredded our truth-assessment systems, rendering us all incapable of knowing the truth in a world where believing lies could bankrupt you or kill you dead.
If you could trust your government's expert agencies and if they had reliable systems for making their findings known; if your bank was banned from engaging in conduct indistinguishable from phishing; if the health-care and criminal justice systems never forced the people they ensnared to call their relatives and beg for money, then deepfakes would have a much harder time penetrating our cognitive immune systems.
It's not so much that AI is a powerful way of lying – rather, we have been made progressively more vulnerable to lies for decades, leaving us at an epistemic death's door, and AI has arrived to deliver the coup de grace.

The Right Word is Wrongness https://www.meditationsinanemergency.com/the-right-word-is-wrongness/
Yes Obviously the Senate Should Be Abolished https://www.hamiltonnolan.com/p/yes-obviously-the-senate-should-be
#20yrsago Goth day at Disneyland photos https://flickr.com/photos/doctorow/tags/batsday/
#20yrsago HOWTO run a successful sf convention room party https://www.nielsenhayden.com/makinglight/how_to_throw_a_1/
#20yrsago Yahoo: Go ahead and remix our brand https://web.archive.org/web/20061111175912/http://www.ysearchblog.com/archives/000348.html
#10yrsago The Equation Group’s sourcecode is totally fugly https://web.archive.org/web/20160818012451/https://www.cs.uic.edu/~s/musings/equation-group/
#5yrsago Bubble https://pluralistic.net/2021/08/21/podcasting-as-a-visual-medium/#huntr
#1yrago Melissa Mendes's "The Weight" https://pluralistic.net/2025/08/21/weighty/#edie-is-a-badass

Melbourne: Enshittification at the Wheeler Centre, Aug 25
https://www.wheelercentre.com/events-tickets/season-2026/cory-doctorow-enshittification
London: AI and the Enshittification of the Media, NUJ (Sep
2)
https://www.nuj.org.uk/learn/ems-event-calendar/ai-and-the-enshitification-of-the-media.html
Brighton: The Reverse Centaur's Guide to Life After AI with
Carole Cadwalladr (Brighton Dome), Sep 8
https://brightondome.org/whats-on/LSC-cory-doctorow-the-reverse-centaurs-guide-to-life-after-ai/
London: The Reverse Centaur's Guide to Life After AI with Riley
Quinn (Foyle's Picadilly), Sep 9
https://www.foyles.co.uk/events/enshittification-cory-doctorow-riley-quinn
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
Victoria: Munro's Books (Oct 20)
https://www.munrobooks.com/events/6113620261020
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
Technofeudal Enshittification (Fucking Cancelled)
https://www.fuckingcancelled.com/p/technofeudal-enshittification-with
Who The Machine Serves (EFF)
https://archive.org/details/effecting-change-who-the-machine-serves
Speculative Fiction for Social Change II (Cool People Who Did
Cool Stuff)
https://pocketcasts.com/podcast/cool-people-who-did-cool-stuff/08cbb840-a6ae-013a-d8aa-0acc26574db2/part-two-cory-doctorow-on-speculative-fiction-for-social-change/937e8800-9404-45a6-b5e3-90ebee2cfaea
Speculative Fiction for Social Change I (Cool People Who Did
Cool Stuff)
https://pocketcasts.com/podcast/cool-people-who-did-cool-stuff/08cbb840-a6ae-013a-d8aa-0acc26574db2/part-one-cory-doctorow-on-speculative-fiction-for-social-change/15ad467c-0832-44c9-91ea-59defd783dba
"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
And Now, An EP-Sized Selection of Deep Cuts [Whatever]
Because I feel like moving a bit beyond the hits. Enjoy.
— JS
Ian Jackson: Open Letter to the Wikimedia Foundation Board [Planet Debian]
I have just sent an open letter to the Board of the Wikimedia Foundation, the umbrella organisation for Wikipedia (and a number of other projects), expressing my support for Wiki Workers United and the unionisation effort by WMF staff.
To: Board of Trustees, Wikimedia Foundation
via Wikimedia_Foundation_Board_noticeboard and WWU
published at https://diziet.dreamwidth.org/21442.html
Re: My support for Wiki Workers United
Dear Trustees
Wikipedia has become one of the pillars of the free and open Internet. Across the world, reliable sources of information are under attack.
I'm proud to have played my very small part in the community of editors of English Wikipedia for the last 20 years. I am also proud of my contributions to the Free Software movement, including especially Debian. Debian, whose constitution and package installer I originally wrote, has become one of the technological foundations of the open Internet.
Unfortunately, there are signs that the Wikimedia Foundation is not performing its proper role as bulwark against attacks on democracy, including from moneyed interests. Recent events at WMF have been very alarming to me, and seem to form part of a disturbing trend.
As a Trustee Director of a UK charity myself, I understand that WMF Trustees must defend the interests of the Foundation. But that cannot mean taking actions that undermine the Foundation's mission. Nor can it mean the deplorable, and even dishonest, practices, that WMF appears to have been engaging in.
As a Wikipedian, as a Free Software activist, and as a citizen of the planet, I stand in solidarity with Wiki Workers United. Union- busting must stop immediately. The Foundation should immediately formally recognise the unions in the UK and the US.
Further, WMF is an international organisation. Collective decisionmaking needs to be transnational too. WMF should recognise WWU as a negotiating partner worldwide, even if thresholds for formal legal recognition are not met in individual national jurisdictions.
Wiki Workers are not the WMF's enemy. WMF needs capable and ideologically committed staff to maintain and operate its highly complex systems, in the face of constant attacks. Staff with principles and a mission are WMF's biggest asset.
Dr Ian Jackson
Cambridge, UK
20th August 2026
Just listened to a podcast from the New Yorker, interviewing their TV critic Emily Nussbaum, about a show called Slings & Arrows. She says it's the best TV series she's ever watched. No reviews on Metacritic? I think we have to try to watch it. It's available on YouTube.
[$] A look at the Quickshell desktop-component toolkit [LWN.net]
Quickshell is a toolkit for building desktop components, such as toolbars or menus. It uses QML, which is a declarative language for designing GUI applications. Quickshell helps developers create graphical tools for common desktop use cases with a focus on ease of development. It offers a convenient method for writing user interfaces and has been adopted by a number of projects, such as caelestia-shell and DankMaterialShell, that provide desktop environments for minimal window managers like Sway and niri.
Some Tech Companies Have Privately Pushed Back on ICE Subpoenas. They Should All Do More. [Deeplinks]
In a handful of known cases, large social media companies have
privately pushed back against Immigration and Customs Enforcement
(ICE) subpoenas when the agency tried to unmask anonymous users who
tracked immigration activities or criticized the government.
As ICE engages in
a pattern of illegal and chilling investigations, any
resistance is welcome. But
social media companies can do more. When companies receive
these unlawful subpoenas, they should be clear with the public that
they will not hand over the data unless a court compels them to do
so. In addition, companies themselves can take the government to
court to challenge these unlawful subpoenas on behalf of their
users.
ICE has sent hundreds of subpoenas to large technology companies like Google, Meta, and Reddit.
Publicly challenging these unlawful subpoenas in court has the dual purpose of protecting individual users who may lack the resources or know-how to challenge a subpoena on their own, while also discouraging ICE from issuing similarly unlawful subpoenas in the future.
Companies have a responsibility to protect the privacy of their users. That responsibility does not end simply because companies wish to avoid the ire of this administration—which has sought to chill other powerful institutions like news outlets, law firms, universities, and non-profits.
ICE has sent hundreds of subpoenas to large technology companies like Google, Meta, and Reddit seeking basic subscriber information like name, email address, IP address, and session times.
Some of these subpoenas have targeted people who engaged in protected activity—like tracking immigration actions, criticizing the government, or attending a protest. People have a First Amendment right to document law enforcement activities and criticize the government online, without retaliatory government investigations. This right has become more important as immigration agents have engaged in invasive, unconstitutional, and sometimes violent conduct.
In a handful of cases, users themselves have successfully pushed back. After receiving notice of these subpoenas, users have challenged them in court, relying on pro-bono lawyers from groups like the ACLU or Civil Liberties Defense Center. Companies have been largely absent from these court proceedings.
While not appearing in court, companies like Meta and Reddit have sometimes pushed back behind the scenes.
For example, on September 11, 2025, ICE sent administrative subpoenas to Meta seeking to unmask users who ran Instagram and Facebook accounts that tracked immigration activity in Pennsylvania. On September 19, 2025, Meta’s Law Enforcement Response Team told ICE that the agency did not have the “statutory authorization” to seek the records. It asked for more detail about the investigation and said “Meta will take no further action with respect to this summons until it receives this information.” Later, Meta informed ICE that it planned to notify the users about the subpoenas, since no gag order had been obtained. The government disclosed this information in one of EFF’s Freedom of Information Act lawsuits against ICE and other agencies.
On October 3, 2025, Meta notified the user about the subpoena. Despite its private pushback, Meta told the users it would comply with the subpoenas unless they mounted a court challenge within 10 days—which they did with the help of the ACLU. Ultimately, ICE withdrew the subpoenas when it became likely that ICE would lose the case in court.
In another example, Reddit documented its pushback in a transparency report released a few months ago. Reddit reported that in the second half of 2025, the company received three Department of Homeland Security (DHS) subpoenas seeking account information from 11 users who posted content critical of ICE. In the report, the company stated that “Reddit objected to these legal demands because the users appeared to be engaged in protected activity under the First Amendment, and law enforcement withdrew their requests.” The company reported that most other DHS subpoenas it received appeared to be routine.
EFF’s demand that technology companies do more to protect their users is not unprecedented. Twitter (now X) did so successfully in the first Trump administration.
On April 6 2017, Twitter went to court to challenge a DHS subpoena that sought to unmask a Twitter account named “@ALT_USCIS,” which frequently criticized the administration’s immigration policies. Twitter challenged the subpoena on both statutory and First Amendment grounds. A day later, DHS withdrew the subpoena and Twitter dismissed the case. The incident led to an inspector general investigation, which criticized a tactic that DHS is still engaged in.
In other circumstances, companies have also gone to court to protect their users and shield themselves from burdensome legal process. In 2013, Microsoft challenged a search warrant for the content of emails stored on servers outside the United States. In 2015, Apple challenged a court order to break the security of its iPhone during an investigation into the San Bernardino shootings. And in 2007, Yahoo challenged the constitutionality of government requests at the Foreign Intelligence Surveillance Court.
Had a breakthrough with Claude this morning re how builtin
verbs have no special powers in Frontier. It's why we were able to
build glue first for the truly builtin stuff, then over Apple
Events on the Mac, then HTTP, XML-RPC, the Metawebolog API and on
and on, all of this were perfectly simple to add to the language,
you didn't need anyone's permission to do anything. I understand
why Python and JavaScript try to separate the boys from the men,
the priests from the peasants, the little startups from the
BigCo's, but the design of the Frontier system came at it from a
different point of view. Make it easier. Claude had the source code
for Frontier in 2011 to work with but had guessed how this works
and had not looked at how it actually worked. Okay, shit happens.
But now we're actually working together instead of cross-purposes.
I didn't even know we were doing that. ;-)
KDE Gear 26.08 released [LWN.net]
Version 26.08 of the KDE Gear collection of applications has been released. Notable changes in this release include improvements in the signing features of Okular, improved file-grouping features in the Dolphin file manager, and a number of enhancements to the Kdenlive video editor. See the changelog for a full list of updates, enhancements, and bug fixes.
Supply chain attack on arrayref (Rust blog) [LWN.net]
The Rust blog reports on a malicious crate, called proc-macro1, that was uploaded to the crates.io repository.
Furthermore, we discovered that the popular arrayref crate had recently been republished and made to depend on this crate, with the most recent versions yanked. We have removed the malicious version and unyanked the maliciously-yanked versions. Other crates by that author (internment, append-only-vec) were also affected so we have done the same for those, and locked the account as a precaution. We do not believe the author of arrayref to be acting maliciously, but their computer or credentials are likely compromised, and we are attempting to contact them.
Version 6.1.0 of the RPM Package Manager has been released. Notable changes include the ability to provide modifiers to RPM macros at definition time, improved build and verification error handling, support for signing files with PKCS11 tokens using rpmsign, as well as the addition of several new man pages. The 6.1.0 release also debuts a new release model inspired by the Linux kernel's.
[$] The beginning of the 7.3 merge window [LWN.net]
As of this writing, 2,346 non-merge changesets have been pulled into the mainline repository for the 7.3 kernel release. That, clearly, is a mere down payment on the flood that is to come. Even so, those early pulls brought in some noteworthy changes, including (but not limited to) a significant reworking of how group scheduling works on multiprocessor systems.
Security updates for Thursday [LWN.net]
Security updates have been issued by AlmaLinux (bind9.18, glib2, gstreamer1-plugins-bad-free, gstreamer1-plugins-good, kernel-rt, libcupsfilters, mysql8.4, mysql:8.4, pcp, perl-Date-Manip, php8.4, php:7.4, php:8.2, php:8.3, python3, and yggdrasil), Debian (designate, firefox-esr, and swift), Gentoo (acl, attr, Emacs, libssh2, and quickjs-ng), Oracle (.NET 10.0, .NET 9.0, attr, bind9.18, curl, glib2, gstreamer1-plugins-bad-free, gstreamer1-plugins-good, kernel, libXfont2, mysql8.4, nghttp2, nodejs:22, nodejs:24, pam, pcp, perl-Date-Manip, php8.4, python3, sg3_utils, and yggdrasil), Slackware (mozilla-firefox and mozilla-thunderbird), SUSE (open-iscsi, podman, python311, and python313), and Ubuntu (bind9, capnproto, curl, libheif, libpng, libpng1.6, libssh, nginx, and tiff).
We are pleased to announce the release of GNUnet 0.29.0.
GNUnet is an alternative network stack for building secure,
decentralized and privacy-preserving distributed applications. Our
goal is to replace the old insecure Internet protocol stack.
Starting from an application for secure publication of files, it
has grown to include all kinds of basic protocol components and
applications towards the creation of a GNU internet.
This is a new major release. The release addresses a couple of regressions and general instability of the transport subsystem. Major versions may break protocol compatibility with the 0.28.X versions. Please be aware that Git master is thus henceforth (and has been for a while) INCOMPATIBLE with the 0.28.X GNUnet network, and interactions between old and new peers will result in issues. In terms of usability, users should be aware that there are still a number of known open issues in particular with respect to ease of use, but also some critical privacy issues especially for mobile users. Also, the nascent network is tiny and thus unlikely to provide good anonymity or extensive amounts of interesting information. As a result, the 0.29.0 release is still only suitable for early adopters with some reasonable pain tolerance .
The GPG key used to sign is: 3D11063C10F98D14BD24D1470B0998EF86F59B6A
Note that due to mirror synchronization, not all links might be functional early after the release. For direct access try http://ftp.gnu.org/gnu/gnunet/
A detailed list of changes can be found in the git log, the NEWS.
In addition to this list, you may also want to consult our bug tracker at bugs.gnunet.org which lists about 190 more specific issues.
This release was the work of many people. The following people contributed code and were thus easily identified: Christian Grothoff, Florian Dold, TheJackiMonster, and Martin Schanzenbach.
Representative Line: We All Register This [The Daily WTF]
Today's maybe more of a "representative data sheet entry" than anything else.
Every developer has the experience of reading the documentation. If you've been at this for some time, you've probably read bad documentation. Documentation that is incomplete, inaccurate, or otherwise flawed. Or, my personal favorite, the brief time where Oracle tried to put all of its documentation into an Adobe Flex site (aka, a Flash application, not a real web app). That one had fun bonus features, like "breaking copy and paste" and "preventing you from deep linking to a piece of the documentation".
But software documentation has got nothing on bad data sheets. When you buy an integrated chip from a vendor, whether it's a microcontroller that'll run your code, a sensor you're trying to get data from, you're at the mercy of the datasheet for understanding how it works. Sometimes, even finding an English language datasheet can be a challenge. The more complex the chip you're trying to interact with, the more complex the datasheet needs to be, and at a certain point, a lot of vendors say, "meh, you'll figure it out." I've had chips where the datasheet and reality disagreed about what registers were available, which often means that core functions of the chip require twiddling undocumented registers. For more fun, they sometimes lie about which pins on the chip do which thing, including mislabeling which pins handle power. There's nothing more fun than the tiny little "pop" of a chip dying when you throw 5V power onto a pin that's actually ground.
Now, there are some vendors, and some products, where the datasheets are pretty solid. This isn't a universal problem, but when you're working in an embedded space, "cheapest" is frequently the main criteria for picking components, and "cheapest" means "worst documented".
Which brings us to Jarek's recent experience going through a data sheet. The chip in question had a "fantastic feature" that would change how debugging worked, which was for "super users" to enable by setting a register.
3.2.4 Super User Fantastic Feature Enable Register
The Super User Fantastic Feature Enable Register allows the user to modify the behavior of the mEDBG.
Name: SUFFER
Offset: 0x0120
Reset: 0xFF
Sometimes, doing embedded work definitely feels like the
SUFFER register is set.
Principal Drift in Practice [Radar]
In 2026, the software engineering community is divided by a simple question: Should AI engineers still read the code generated by their agents? One camp argues that code has become virtually free to produce and discard, so humans should focus on systems and guardrails rather than implementation details. The other warns that blindly trusting AI code introduces compounding defects with zero learning, and the result is broken products and frustrated users.
The choice looks binary, but it dissolves once you ask a better question: Which decisions genuinely require human comprehension, and which can be routed to systems inspection?
Through 2024 and 2025, a lot of organizations quietly chose speed over understanding to keep pace with agent output. By 2026 the bill has arrived. Pull requests merged without any human or agentic review are up 31.3%, and for every PR merged, production incidents run at more than three times the rate seen in low AI adoption baselines (Faros AI). CodeRabbit’s analysis found AI-coauthored PRs carry 1.7 times more bugs than human-written code, a Lightrun survey of engineering leaders found 43% of AI-generated changes need debugging in production, and monthly production incidents are up 57.9% year-over-year.
Code quality is the symptom, not the disease. The deeper problem is epistemic agency: knowing what your system is doing and why. Lose that, and you lose the ability to make architectural decisions at all. You become a passenger in a system you built.
Cognitive debt is the gap between your system’s complexity and your team’s comprehension of it. Unlike financial debt, which you can pay down, cognitive debt tends only to accumulate. Every quarter you ship faster than you understand, the gap grows a little wider, until eventually it grows wide enough that your team can no longer make safe architectural decisions. At that point you are effectively locked into whatever path the agents chose for you.
It builds through three mechanisms that run in parallel:
Principal drift, the loss of control, is what the Amazon incident looked like from the outside. Cognitive debt, the loss of understanding, is what made it possible. In high-velocity domains such as financial services, SaaS platforms, and real-time systems, the consequences tend to surface within about six months if nobody is actively governing for them. In slower-moving domains the runway is longer, but the eventual risk is no different. The question worth asking every quarter is whether your team still understands the systems it is shipping.
The way out is to route different work to different gates according to actual risk. The same engineer can be a line-by-line reviewer on security-critical work and a systems inspector on utilities.
Full review, where you read every line, is warranted for authentication and security primitives, money movement, permission logic, and destructive data changes. Systems inspection, where you review the design without reading every line, is enough for noncritical utilities, highly decoupled PRs, and changes already protected by robust test harnesses and shadow rollouts. To work out where a given change sits, three questions get you most of the way: Does this PR directly control access, money, or data integrity? Would a bug here cause production downtime lasting more than 15 minutes? Can the change be rolled back without manual intervention? A yes to any of these usually means tier 1. Those thresholds are starting points, not universal law. A real-time trading system might treat one minute of downtime as tier 1, while a batch pipeline could tolerate 16 hours. In financial services “money movement” is unambiguous; in SaaS you’ll have to decide whether code that merely touches authentication, rather than controlling it, belongs in tier 1. Write your thresholds down, revisit them quarterly, and adjust as the systems evolve.
One rule holds regardless of tier: Never let the same agent that authored a change be its only reviewer. Keep the builder and the reviewer separate. An agent that writes code and then validates its own work is a closed loop with no vantage point outside its own reasoning, and a second reviewer, human or agent, brings the outside perspective that catches what the first one can’t see. It has a cost. Two agents roughly doubles the compute, and a human reviewer adds 15 to 30 minutes per PR. On tier 1 code that’s easy to justify. On tier 2 you might reasonably let a single agent build and check its own work, provided you compensate with stronger test coverage. Make the call deliberately and revisit it.
Routing tells you which decisions need a human, but it does nothing to keep that human capable of deciding once the volume climbs. Three techniques help with that, and each addresses a different failure:
Tier 1 code really does want all three. On tier 2 you can pick and choose. A word on the time estimates in this section: They’re illustrative, drawn from practitioners describing their own workflows rather than from any controlled study, so treat them as order of magnitude rather than gospel. On that basis the three techniques together tend to add something on the order of an hour to a critical PR. When someone objects that there is no time for this, it helps to emphasize the trade you’re making between review time now and incident time later. The later bill tends to arrive with a multiplier attached, paid in postmortems and hotfixes. The teams that have measured it carefully generally find the return turns positive within two or three quarters.
The ground is still shifting. Autonomous loops, where a system discovers a task, plans it, executes it, and evaluates the result without step-by-step direction, are arriving now, and the routing framework and embedding techniques you put in place today are exactly the foundation you’ll run them on.
This is a CTO or VP of engineering initiative, not something a single team or a lone principal engineer can carry. It needs executive sponsorship, cross-functional buy-in, and real policy behind it. Without that backing, the framework is the first thing waved through the moment a deadline looms.
Sequence matters. Begin by mapping criticality across your tier 1 services: Get architects, team leads, and operations in a room to agree what tier 1 means for you and have one architect write the rubric down afterwards. Budget one to two weeks for a mid-size organization of 50 to 200 engineers, and two to four for something larger. Don’t try to run this alongside a production fire.
Next, fold the three techniques into those high-criticality flows, and resist the urge to blanket every PR at once. Once literate explanations and visualizations are working on tier 1, add builder/reviewer separation on top. When all three have become the default for tier 1 work, spend a quarter watching to confirm that understanding is holding up. A few signals tell you whether it is. If your team needs more than half an hour in an incident review to grasp what happened, comprehension has slipped. If no engineer can talk through the data flow in 10 minutes, it has slipped. If a new hire takes more than a fortnight to get productive on a service, understanding is sitting in too few heads. Pick one or two of these and track them quarter on quarter.
From there, extend the same discipline to tier 2 services, and only then, perhaps 6 to 12 months in, start planning for autonomous loops with real data on what works in your context behind you. The pull toward rolling everything out at once will be strong, but resist it. The organizations that get this right almost never move uniformly; they take one high-risk service, prove the model on it, measure what happened, and only then widen the net. Move too fast and you end up with a framework that reads beautifully in a policy document and quietly falls apart in practice.
None of it works without the surrounding structure. You need a written tier-assessment policy that engineering leadership has actually signed; CI/CD tooling that enforces the rules without anyone having to remember them, whether that is a bot labeling PRs from their changed files and blocking a tier 1 merge that lacks builder/reviewer separation, or a dashboard tracking how many tier 1 PRs went through structured review; incident postmortems honest about when a tier was assessed wrongly; and performance reviews that weight code-quality signals like defect escape rate and incident resolution time as heavily as raw velocity. Absent that scaffolding, the whole thing degrades into good advice that gets ignored under pressure. It needs product leadership onside too. If product can override a tier assessment whenever the ship date gets tight, the framework is already gone, so have that conversation early, before the first crunch rather than during it.
And if you’re reading this already locked in, with a team that no longer understands its own systems, recovery is still possible, though it isn’t free. Treat it as a project rather than business as usual: Put one or two senior engineers on rebuilding understanding full time, accept a pause on new features for the affected systems for two or three quarters, and mine every incident for what it teaches you about the code you inherited. It takes discipline and resourcing, but teams do climb back out.
The question for 2026 was never really whether every engineer should read every line. It’s whether your engineers stay capable of steering the systems they build. Get this right and code still ships quickly, understanding keeps pace, and when something breaks your team can respond because they still grasp the architecture. Task-routed governance is how you buy that: full attention on the decisions that carry real risk, lighter inspection on the ones that simply need to scale. Get it wrong, keep optimizing for speed alone, and the gap widens until steering is no longer an option.
The AI Engineering Report 2026: The AI Acceleration Whiplash, Faros AI, faros.ai/blog/ai-acceleration-whiplash-takeaways.
State of AI vs. Human Code Generation Report, CodeRabbit, coderabbit.ai/blog/2025-was-the-year-of-ai-speed-2026-will-be-the-year-of-ai-quality.
State of Code Developer Survey Report, Sonar, sonarsource.com/state-of-code-developer-survey-report.pdf.
Michael Nuñez, “43% of AI-Generated Code Changes Need Debugging in Production,” VentureBeat, venturebeat.com/technology/43-of-ai-generated-code-changes-need-debugging-in-production-survey-finds.
Mark Hull, “What Percentage of AI Code Is Safe in Production?,” Exceeds, blog.exceeds.ai/acceptable-ai-code-percentage-production.
Jonathan Dowland: Bauer X4 inline skates [Planet Debian]

I’m really enjoying getting back into ice skating, but I can only get to the rink once a week (at least over the summer -- I'm aiming for twice weekly once Schools re-open) and I have the itch to do more skating than that.
Where I live we’re blessed with a seaside park with lots of smooth paths, a recently resurfaced beachside promenade, and a newly-built pedestrian/cycle path stretching up and down the coast: all great surfaces for roller skates. I convinced myself to buy some inline skates whilst the weather is good.
I wanted something as close to my ice skating experience as possible. Bauer actually make an inline version of my ice boot, but the chassis is an unusual composite plastic thing which put me off. (here's a great video of a fantastic inline skater trying out the chassis). CCM have a new inline range for 2026, but sadly (much like their Jetspeed ice range) the fit wasn't good for me.
I found a clearance pair of Bauer vapors from the previous generation: the Bauer Vapor x4. Very similar to my Fly30, but the difference in quality between the tiers is very apparent: boot stiffness, the comfort and quality of the liner. They fit well (possibly better), the rolling motion is really smooth (I think that's the bearings) and they looked pretty good to me: yellow highlights instead of the red used across the ice range.
I've done a couple of miles in them so far. Time will tell if they prove useful for off-ice training! Many inline hockey players buy ice skates and convert them to inline. If I end up not using them enough I could consider doing the opposite.
Grrl Power #1488 – Unstoppable blade vs the other unstoppable blade [Grrl Power]
I’m sure no one was surprised that Max wasn’t for real murdered by this attack. But for the record, without ManaVore, Final Blade would have actually been able to pierce her armor, because of the crazy amount of magic behind the attack. It wouldn’t have killed her outright, but it would have hurt.
I read/listen to a lot of LitRPGs, and so many of them have abilities like “This Skill can block any single attack, but has a five minute cooldown.” or “Activating this Skill makes you undetectable for 3 minutes, or until you interact with an object.” The problem with a skill description with an absolute in it is either there’s some fine text The System isn’t telling you about, or those skills are wildly exploitable. I mean, really, ANY attack? You could block the Chaos Titan Gamemaster’s Reality Schism? Zeus’s lightning bolt? The Death Star’s main weapon? A stinging comment? Which is a sort of social attack, but still an attack!
I’m not suggesting using The System should require fine text or a 38 page user agreement or that the most common class should be “Lawyer” because everyone has to initial in triplicate every time they acquire a new skill and store a copy at The System Hall of Records. Just a little clearer wording would be immensely useful, like “This Skill can block any single attack up to three tiers higher than itself. Has a five minute cooldown.” Something like that.
Now, with all that said, “Final Blade” was genuinely supposed to be an unstoppable attack, because it was a skill Ryzyl got way back when he was Bronze Tier, and now he’s S-Tier… or uh, I guess he’s be Platinum tier if the lowest tier was a metal. The skill is also a Platinum Tier attack and is the sort of thing you’d use, pretty much exclusively, on other Platinum Tier adventurers, demi-gods, Armageddon level monsters, that sort of thing.
Originally, I’d planned on Max catching the blade, (because she’s ridiculously fast) but it would keep inching toward her sternum no matter how much strength she put against it, while Ryzyl explained how the attack is unstoppable. In that scenario, Max would have flown into space, dragging Ryzyl along, and wait for him to expire in the hard vacuum. While kind of a cool solution, it didn’t really make sense, since the boundary of the arena is only 5 KM up, and it would take Ryzyl longer than the allowed 30 seconds to expire, since he’s a high-level adventurer, and not a 3rd level Rogue rolling D6/level for his hit points.
The only goofy thing about this result is that ManaVore doesn’t have a fuller, which is the indent that runs down the center of some blades, usually from the cross-guard to halfway or 3/4 of the way up the blade. Supposedly it “reduces its weight and improves balance, handling, and flexibility.” You can see one on Ryzyl’s dagger in panel 6, though I’m not sure how helpful it would be on a ten inch blade. What that means for Ryzyl is that his knife is just pressed against the flat of Max’s sword, and it seems like just a tiny readjustment of the angle or a little twist of the blade could cause it to skid off into her back. But I guess that’s not how Final Blade works. Once activate, it’s just straight in to the heart. (Final Blade has no effect on creatures without hearts.) <- See how easy that is, The System?
Oh, look who it is in the vote incentive. And a
not-quite-yet-but-it’s-coming NSFW version over at Patreon.
Vote incentive and Patreon updated with some shading. Not finished yet, but progress.
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.
Police Are Hiding Their Use of Flock Surveillance Cameras [Schneier on Security]
A usage policy for Flock license plate reader cameras tells police not to talk about the cameras:
When cops use Flock to arrest someone in Wapello County, Iowa, they don’t want them to know. A usage policy for the automated license plate reader cameras in the county tells police, in no uncertain terms, to keep them a secret: “DO NOT MENTION ALPR USAGE TO THE OCCUPANTS OF THE VEHICLE,” the policy document reads. “DO NOT MENTION ALPR USAGE IN YOUR REPORT OR COMPLAINT UNLESS ABSOLUTELY NECESSARY.”
This reminds me of IMSI-catchers (Stingray was the most popular) a couple of decades ago. Police would go to even more extremes to hide their usage.
Tic tac toe with a 3 x 3 board is trivial and not much fun.
Tic tac toe tic tac (5 in a row) with a 15 x 15 board is endlessly fascinating.
Simple doesn’t mean dumb. When we add layers and community and options, it can generate all sorts of possibilities.
Connection is always the wildcard, the peer to peer multiplier that makes every system more complex.
On wrapping a callable in a lambda that just calls it with the same parameters [The Old New Thing]
Suppose you have a function that accepts a lambda and wants to use it when calling another function. I’ve seen people wrap the lambda inside another lambda:
template<typename Lambda>
bool Widget::QueueToWorkerThread(Lambda&& lambda)
{
CreateWorkerThreadIfNeeded();
return m_dispatcherQueue.TryEnqueue(
[lambda = std::forward<Lambda>(lambda)]() { lambda(); });
}
But there’s no point in wrapping a lambda inside another lambda if you are just calling the inner lambda with the same parameters as the outer one. You can use the inner lambda’s function call operator directly.
template<typename Lambda>
bool Widget::QueueToWorkerThread(Lambda&& lambda)
{
CreateWorkerThreadIfNeeded();
return m_dispatcherQueue.TryEnqueue(
std::forward<Lambda>(lambda));
}
My guess is that some people don’t realize that a lambda is not a special entity in the C++ language, where if somebody says that a function accepts a lambda, they think that it means that you must literally pass a lambda.
In C++, a lambda is just syntactic sugar for a class with a function call operator. And if you already have a class with a function call operator, there’s no need to wrap it inside another class with the same function call operator.
Wrapping a lambda is basically doing this:
template<typename Lambda>
bool Widget::QueueToWorkerThread(Lambda&& lambda)
{
CreateWorkerThreadIfNeeded();
struct wrapper {
wrapper(Lambda&& lambda) :
m_lambda(std::forward<Lambda>(lambda)) {}
auto operator()() const { return m_lambda(); }
private:
const std::remove_reference_t<Lambda> m_lambda;
};
return m_dispatcherQueue.TryEnqueue(
wrapper(std::forward<Lambda>(lambda)));
}
There’s no need to introduce the extra level of indirection. The incoming lambda is already in the form you want. Just use it.
Bonus chatter: Wrapping a lambda is significant if there is a transformation on the parameters, such as cocercing them to a particular type or forcing them to be passed by value.
The post On wrapping a callable in a lambda that just calls it with the same parameters appeared first on The Old New Thing.

if moray got bit by a tick she'd get slyme disease
[$] LWN.net Weekly Edition for August 20, 2026 [LWN.net]
Inside this week's LWN.net Weekly Edition:
Sergio Cipriano: My experience at DebConf 2026 in Santa Fé [Planet Debian]

Last month, I attended DebConf 2026 in Santa Fé, which was my 5th DebConf. As always, it was an amazing experience, and I met a lot of great people there.
For those unfamiliar with the event, it takes place over the course of two weeks. The first week is called DebCamp and is geared more towards hacking and organizing the event itself, while also offering a great opportunity to discuss ideas with others. The second week is the DebConf. We still have the hacklabs, but the talks and workshops are the main focus.
My main activity was working on the python-click transition that I started in May. There were only a few packages left, and with the help of Guilherme Puida, we managed to work through all the remaining bugs.
I plan to talk in details about this transition in another blog post, where I will focus on the tools I used and my experience with mass rebuilds and mass bug filing.
I also helped with de Golang Sprint. I worked on a few packages and experimented with the dak API to generate a list of packages that needed manual action.
There was a lot of manual, repetitive work and false positives, so I eventually moved on to some other, more fun stuff.
I also learned a few thinks about kernel live patching while talking to David Tadokoro. I had to work on the Ubuntu Kernel package recently as part of my job, so we exchanged some ideas, and the conversation was really helpful.
He also taught me two commands that I wasn't familiar with, since I'm a newbie in kernel development. Here are the commands:
$ b4 am https://lore.kernel.org/lkml/20240730071904.1047-1-sergiosacj@riseup.net/
$ b4 diff *mbox
By the way, this is the first and only patch I have submitted to the Linux Kernel. I worked on it during DebConf 2024, when I attended the workshop Helen Koike runs to help newcomers submit their first patch to the Linux Kernel.
Another great interaction was with Marcos Talau. He showed me his remote access setup, which he is using to help students make contributions to Debian without the struggle of setting up the development environment.
Another cool thing is that Puida showed me the command:
$ gbp clone vcs-git:typer
After that, I decided to read the gbp manpage because these little details really improve the overall experience.
I also had many other amazing interactions. I just decided to write down the ones that I felt made the most sense for this kind of "blog report" post.
I gave a talk about dh-make-vim, a tool I have been working on sporadically. An interesting detail is that one of the video team volunteers for the talk, Piotr, spoke to me about his tool, pypi2deb, which is similar but aimed at the Python ecosystem. There are many tools of this kind in Debian, and they are all interesting pieces of software. I plan to write more about them in the future.
I attended several talks and participated in a few BoF sessions, and they were all great. But something that really stood out to me was the workshop on the Debian Installer, led by Alper Nebi Yasak. I didn't know anything about the Debian Installer, and I liked the way he approached the subject and showed the specific details.
I'll take some time to read the Debian Installer internals documentation. I was not familiar with udebs or with the fact that the Debian Installer uses debconf under the hood.
It was an amazing event. Unfortunatly, a lot of people I know were not able to attend for different reasons, and they were missed.
There were many other things that I enjoyed during this trip. Here are a few more highlights:
Windows news sites are reviewing context menus and it’s perversely delightful [OSnews]
When I wrote about using Windows 11 for a month as part of the ongoing OSNews fundraiser (keep donating to get me to do the same for macOS!), one of the things I mentioned was that “the modern desktop context menu has its own classic Win32 context menu”. This is, in fact, a long-standing complaint I’ve repeatedly used as the perfect example of just how chaotic and low-quality Windows has become. Thankfully, and naturally I fully attribute this to my repeated complaints (*), Microsoft has been working on a brand new, faster, configurable context menu, and Neowin actually reviewed it.
If you ask me, this revamped context menu addresses just about the biggest problem users had with the one in Windows 11, and that is the need to click through more buttons than necessary to do simple things like renaming a file or opening its properties. That problem is now basically gone.
I have no issues with the new design. It looks modern, it feels more consistent with the rest of Windows, and even though all the new sections can still make it look a little busy, you now have the option to make it as simple or as button-packed as you want. That should cover most use cases and preferences well. I’d even say that when the new context menu becomes available to everyone, my guide on how to bring back the classic context menu might become obsolete.
↫ Ivan Jenic at Neowin
The biggest reason I’m linking to this is not because I care about whatever monster of a context menu Windows users are having to deal with. No, I’m only linking to this because I never in my life imagined I’d be linking to a review of a context menu. I mean, at least it’s not the chess application icon. That would be embarrassing.
I get a perverse sense of joy out of this.
Whenever Gabe gets a bee in his bonnet about something, I tend to benefit. So do you, ultimately. When he got seriously into Formula 1, somehow by the end of it we were operating a racing reality show via Motorsport Manager with larger than life characters and life-changing stakes every week. I guess the actual cars were also cool.
Dirk Eddelbuettel: RcppMsgPack 0.2.5 on CRAN: Minor Maintenance [Planet Debian]

Another maintenance release of RcppMsgPack got onto CRAN today. MessagePack itself is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it is faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves. RcppMsgPack brings both the C++ headers of MessagePack as well as clever code (in both R and C++) Travers wrote to access MsgPack-encoded objects directly from R.
This release is once again chiefly maintenance. Besides standard
upkeep to the README.md and continuous integration setup we had to
add one #include. The clang++-23
compiler, when also running with its own library, now now needs the
type_traits.h header file (in the upstream MessagePack code) so we added that. No
other changes, so no user-facing changes. Details follow from the
NEWS file.
Changes in version 0.2.5 (2026-08-19)
Explicitly include header "type_traits.h" to appease clang++-23
Standard maintenance updating continuous integration, adding minor helper script, and updating README.md
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.
Go 1.27, the most recent version of the Go programming language, has been released with a number of new tools, the addition of support for the ML-DSA post-quantum algorithm, new JSON-processing packages, language updates, and more.
Daily Reminder To Not Listen To Google’s AI Overview [Whatever]
Hey y’all, I’m here today with a
PSA that I find myself repeating multiple times a day, every single
day. And I’m going to do it again. AI is wrong a lot. And I
mean a lot. Both about inconsequential things and
extremely consequential things. But the fact it is so
wrong so consistently about inconsequential things should
make you think twice about listening to it regarding anything even
remotely serious.
For today’s example of “AI is always wrong and I hate that it just lies so confidently right to everyone’s face,” I’ll be talking about Connections.
I play Wordle and Connections almost every day, as do many of my friends. Today, for some reason, the Connections game board is comprised of red and white tiles. This is not something I’ve ever seen before, and none of my friends know why it looks so different, either.

So, I Googled, “why is the connections board red,” and Google AI Overview told me “The Connections game board turns red when you make a mistake or get an answer wrong.”
Guess what! THAT’S NOT FUCKING TRUE!
Please please please stop Googling things, looking at the AI Overview, and assuming it has given you the correct answer to your query. Don’t trust Google AI with anything, even with inconsequential things! Because it will, and DOES, lie to you. And it can’t be held accountable for giving you wrong information. It just does it and suffers no consequence. The consequence falls only on you.
If you know why the game board is red, please tell me, I am still very curious.
-AMS
[$] Debian weighs eight options in vote on LLM usage [LWN.net]
The Debian Project is voting on the usage of large language models (LLMs) to make contributions to the project. The first proposal, sent in late July by Matthias Geiger, would expressly forbid any contributions to Debian that are created by or with the assistance of LLMs. That kicked off a firestorm of discussion and a flood of alternate proposals. Debian developers are now voting on eight proposals in total that range from banning LLM-assisted contributions to explicitly approving them, as well as the standard "none of the above" option that would leave Debian with no agreed policy.
When Your Buyer Is an AI Agent [Radar]
Idea in brief
- AI agent-mediated procurement: Enterprise B2B buyers are rapidly transitioning from traditional human-only research to using autonomous software agents that build shortlists, negotiate terms, and, in advanced cases, finalize contracts based on empirical data and fixed parameters.
- The evolution of legacy frameworks: Traditional commercial playbooks built around relationship-driven negotiations, per-seat software licensing, and socially influenced quarterly business reviews face increasing pressure when evaluated by machine-speed, objective AI agent counterparts.
- Architecting for AI-agent buyers: Organizations must begin redesigning their commercial infrastructure to remain legible to autonomous agentic buyers by deploying outcome-based pricing architectures, establishing machine-readable product surfaces, and integrating agent-compatible authentication protocols.
In 2021, Maersk, the world’s largest container shipping company, deployed AI agents from a startup called Pactum to negotiate freight lane contracts with its carrier suppliers. The objective was for AI agents to handle negotiations autonomously rather than merely support human procurement staff. Operating entirely autonomously, the system manages the end-to-end agreement process, from reaching out to carriers and conducting several rounds of negotiations on pricing, route obligations, and payment terms to finalizing deals. This machine-led approach achieved a 96% agreement rate among carriers, requiring no human intervention for any specific transaction.
In controlled trials against human negotiators, the agent secured rates that were 22% lower for identical shipping lanes. Conventional commercial models were built on human-to-human relationship building, relying on sales development reps for lead qualification, account executives for business case development, and customer success managers for retention. This traditional operational framework, however, must evolve when a significant portion of the buying cycle is outsourced to a software agent making machine-speed decisions based on fixed parameters.
While much of the current discussion around AI shopping agents focuses on B2C shifts in consumer discovery and brand loyalty, the emerging shift in enterprise B2B selling remains largely overlooked. This wave of coverage highlights a significant B2C phenomenon, but the transformation occurring when B2B buyers outsource product discovery and negotiation to AI is equally profound.
The experience of Maersk’s carriers represents the bleeding edge of this shift: autonomous software managing enterprise procurement for a corporation generating $54 billion in annual revenue. Dealing with over 50 carrier partnerships, the AI agents operated without requiring carriers to build rapport with human procurement managers; instead, the process was strictly governed by predefined parameters.
Some recent analyses argue that AI agents are not ready for consumer-facing commercial interactions and that organizations should redirect agent deployments to internal workflows. That argument is sound within its domain, but it overlooks the evolving buyer side of enterprise transactions. While many companies currently use AI strictly for building shortlists and research, vanguard companies like Maersk are already pushing into autonomous evaluation and negotiation, which is why B2B sellers should prepare their infrastructure now.
This article examines three primary commercial pillars designed by enterprise B2B sellers for human interaction, details how each system is challenged when confronted with AI agents, and provides strategic recommendations for adaptation.
The agent-mediated procurement phenomenon is already underway in distinct stages. McKinsey’s November 2025 global survey on the state of AI, covering 1,993 respondents across all levels of enterprise organizations, found that 62% are at least experimenting with AI agents. While only 10% of business departments have fully scaled their AI agent capabilities, this figure is an initial baseline and not a maximum.
Cloudflare, which processes traffic for roughly 20% of all websites globally, reported in July 2025 that overall AI bot crawling grew 24% year-over-year, with agent-driven requests (automated traffic generated by software acting on behalf of users) the fastest-growing category within that flow. Operational measurements show that Cloudflare’s CEO expects automated software traffic to surpass human-generated traffic by 2027.
Gartner’s August 2025 analysis projects that by the end of 2026, 40% of enterprise applications will incorporate task-specific AI agents, up from fewer than 5% in 2025. Any B2B seller whose commercial model was designed solely for human buyers is priced, sold, and supported for a changing buyer population.
Amazon CEO Andy Jassy told investors in February 2026 that “the primary way companies will get value from AI is with agents, some their own and some from others.” Y Combinator’s 2025 “Requests for Startups” make the same bet: “the next trillion users on the internet won’t be people, they’ll be AI agents.”
These declarations represent the operational mandates of the world’s dominant commercial platform and its most prominent startup incubator. These operational shifts now outline the future environment for B2B commercial strategy.
The commercial evidence from the buyer side is already explicit, particularly in the research phase. G2’s April 2026 survey of more than 1,000 B2B software buyers found that AI chatbots now top the list of sources influencing vendor shortlists, ahead of software review sites and vendor websites, and that 51% of buyers now start their research with AI chatbots, up from 29% the prior year.
Beeri Amiel, Director of Product Development at HubSpot, described the consequence in April 2026: “By the time they’re getting to your website, they’re already much further down the funnel. All the selling was done by the answer engine.” Sam Senior, Founder and CEO of TestBox, reports what his enterprise seller customers now observe: “70 to 80% of their decision has already been made before they even speak to you.” For the seller, the initial conversation has shifted from a buyer-focused exploration to a process of self-discovery.
Per-seat subscription pricing assumes a human user who opens and closes discrete sessions. When a procurement agent completes a delegated workflow, it spawns parallel sub-processes, executes at machine speed, and operates continuously across time zones. No seat count maps cleanly to that behavior. Kearney estimates that AI procurement agents could erode up to 500 basis points of EBIT for distributors by commoditizing supplier selection and compressing average selling prices by approximately 8%. That translates the abstract pricing mismatch into a P&L consequence that enterprise finance teams can measure directly.
Forward-thinking sellers have already begun to address these structural misalignments by exploring new models. For instance, the AI customer service platform Sierra, supported by a16z, has abandoned seat-based or session-based pricing in favor of measurable results. Under this model, clients incur costs only when the software delivers a specific, high-value result.
Similarly, Intercom applied the same outcome-driven logic to its Fin AI agent, which charges $0.99 per successfully resolved conversation while providing unresolved interactions free of charge. Archana Agrawal, President of Intercom, explained the reasoning in a published interview: “Customers didn’t want to pay for activity, and so we get paid when our customers have that positive outcome,” as mentioned in GTMnow.
Rather than an instant death to per-seat pricing, outcome-based models represent a growing structural realignment that sellers must prepare for. McKinsey’s February 2026 analysis of enterprise agentic procurement pilots found that a chemicals company deploying agents for autonomous sourcing of consumables achieved a 20-30% efficiency improvement for its procurement staff and a 1-3% increase in value capture. The buyers who have deployed are already generating measurable returns, putting pressure on seller counterparts to adjust their pricing models accordingly.
Every traditional enterprise negotiation playbook assumes a human counterpart with career stakes in the relationship, memory of prior interactions, and susceptibility to persuasion over time. While humans will still make the final decisions and sign the checks for the foreseeable future, agents are increasingly conducting the evaluations. Traditional executive outreach fails to generate data that an autonomous agent can interpret during its screening phase.
SUEZ UK, part of the 19-billion-euro SUEZ Group, deployed Pactum’s agents and reached 2,000 additional suppliers within two months, achieving average potential savings of 2.5% and cost reductions of 15% through competitive purchasing pressure. For these vendors, the challenge was an automated counterpart that operated without fatigue and evaluated purely on metrics before passing the final data to humans.
Forrester’s 2026 B2B sales and marketing forecast indicates that at least 20% of B2B sellers will face AI-powered buyer agents this year, heavily accelerating the evaluation timeline. When software serves as the initial gatekeeper or negotiator, traditional relationship-building strategies yield diminishing returns during the agent’s screening process. The agent evaluates what it can measure: price, contract terms, delivery specifications, and compliance. Sellers who have not made their commercial terms legible to that evaluation process risk being excluded from shortlists before a human relationship can even begin.
Customer success was historically built on the assumption that quarterly conversations can heavily influence renewals. While CSMs are not disappearing, their role is changing rapidly. An agent evaluating a SaaS renewal to provide recommendations to a human principal relies strictly on empirical data.
It computes ROI from API usage logs, cross-references programmatically discovered competitor pricing, and presents the delta. It is largely immune to social influence, meaning a great relationship with a CSM must now be backed up by undeniable, machine-readable performance metrics.
Clari Labs analyzed 10 million opportunities from 121 major global enterprises between January 2023 and December 2024. They found that the average contract value fell 50% year-over-year, while the average expansion deal cycle grew from 92 days to 125 days. Clari links this market compression to an increased buyer requirement for verified evidence of value before approving any upgrades.
This empirical evaluation doesn’t just stall expansions, it opens the door to competitors. Forrester’s Buyers’ Journey Survey found that 68% of B2B buyers already have a front-runner vendor in mind at the start of a purchasing process. In the age of AI agents, that research happens in the background of your existing contract. As buyers shift their research to “zero-click answers,” competitors utilizing Generative Engine Optimization (GEO) can become the algorithmic front-runner to replace you before your CSM even knows the account is at risk.
Sean Neville of Catena Labs mentions in a16z’s 2026 trend report that in financial services alone, non-human identities already outnumber human employees 96 to 1. Each of those identities is a system that does not respond to the relationship motions account management was built to execute. While the Customer Success Manager (CSM) remains relevant, they frequently find themselves outpaced: Often, by the time a CSM initiates a renewal conversation, an autonomous agent has already finished its evaluation and delivered its recommendations. The issue is not the CSM’s role itself, but their timing.
B2B enterprise sellers should consider three critical shifts to remain competitive in a landscape increasingly influenced by agent-mediated procurement.
The outcome is evident: an increase in agents does not equate to improved results. This contradiction makes sense when you realize that implementing AI sales tools within a commercial framework designed for human purchasers fails to resolve the underlying disparity; rather, it simply accelerates it.
B2B sellers that treat agent buyers as merely a passing trend risk handing over vital screening and sourcing decisions to a counterparty they cannot successfully engage. For these sellers, adaptation is a necessary step to remain competitive in markets increasingly governed by AI-assisted procurement.
Antoine Beaupré: The people vs the AI overlords [Planet Debian]
Previously in this series: The Four Horsemen of the LLM Apocalypse.
In a post to oss-security, my (Debian) co-developer Russ Allbery stated that "open source software [OSS] is coming face to face with a motivation crisis that has been building for a long time". His point is essentially that large language models (LLMs1) are making the existing OSS community crisis worse. For him, it's the flood of code reviews, but he argues that varies according to people's desires, for others it's security issues and so on.
I think Russ is right, but I would argue there's something much bigger than our open communities going on here, and it's about the entire field of computing. This pressure is on all of us, regardless of whether we work on open source software or not.
People using LLMs in their workflow have radically changed how programming works, even for people who claim to avoid vibe-coding. And I'm sorry to single out one poor maintainer here: it's not you, Brian, you're just one example among many. But this is typical use of those models nowadays:
Once it’s done, I’ll use
/code-reviewand let Claude spawn sub-agents to do a full review of the new code. This usually finds some problems, even problems that the “main” Claude instance didn’t find during its validation. I usually keep running/code-reviewagain and again after finding and fixing issues, until there aren’t any left.
Think about what that means for a minute. This is automation
built to fire up dozens of agents crunching at a problem for
minutes if not hours of GPU compute time, in parallel. This is
essentially a couple of shelves in a datacenter rack, totally maxed
out on power and cooling, abstracted behind a cute little
/code-review command.
The author, here, is rightly concerned that "Anthropic could pull the rug out and require API pricing", which is perhaps a code word for "charging something closer to actual costs". Brian also pays lip service to environmental and societal costs but those are largely abstracted away, so let's keep that conversation aside here as well, as we have discussed it before anyways.
But clearly, this way of working has an (externalized) cost, to say the least.
For decades my work has been focused on free and open source software. I've long stopped using proprietary operating systems like Windows or Mac, and even before that switch, I was mostly using free software on those platforms, partly out of principle, but also because I was too poor. So the tools of my trade are free, and I build free tools with them.
It feels like we're going backwards: when I was in school, a millennia ago, my classmates didn't have access to a compiler and were wondering how they would scrape the money to buy a compiler like Borland's or Microsoft's. I had a compiler built into my operating system (FreeBSD at the time), so that wasn't a problem for me. For them, it was a significant expense, but at least those expenses (or more shady sourcing of programs) were a one-shot deal.
Fast forward 30 years, and software is rented: you pay monthly for Adobe's Photoshop and Microsoft's office suite just like you pay for Netflix, Disney+ or Spotify2. And now you need to add dozens (if not hundreds of dollars) of monthly credits to access LLMs on top of that.
So, now we have to pay to get anything done? This is peak enshitification of our job: first they steal our work to train their models, and then they sell it back to us at a profit.
AI is coming for our jobs, as engineers, if not everyone, according to the narrative. For a while now, our job market has deteriorated: less jobs, for less pay. Lots of skilled engineers looking for work and finding crap jobs then still looking while working.
This is not by accident.3 We engineers have a lot of power, it is not organized, but that's just a couple of unions away (easy!). Tech overlords know this, so they are attacking our profession, directly, by forcing us to train and use models that they can control.
Even in environments where programmers are not forced to use LLMs, the mere pressure of other people's LLM-generated work is huge. One can be forced to review LLM outputs, or just peer pressured you into producing more.
We're now supposed to accelerate delivery, because models can presumably do things so much better and faster. With supply chain security becoming such a large vector that we now have worms crawling around developers accounts on NPM, increasing the delivery cadence seems like a really bad idea.4
The LLM hype is part of the larger wave of cyberwar against workers, against water, against the Earth, against all the people. This is not a matter of individually "adapting to the reality" or personal choice, but a political, social, hard problem we need to address collectively.
Previously in this series: The Four Horsemen of the LLM Apocalypse.
📍 The Sneaky Code Tracking App Users | EFFector 38.15 [Deeplinks]
Your location isn't just a pin on a map—it can expose some of the most intimate details about your life. The value of this information to advertisers and others has turned the location data business into a multi-billion dollar industry. In our latest EFFector newsletter, we're covering a new EFF report on how ad libraries encourage apps to leak user location data—potentially without app developers themselves even realizing it.
For over 35 years, EFFector has been your guide to
understanding the intersection of technology, civil liberties, and
the law. This issue covers what recently
announced Flock reforms actually do,
privacy-invasive legislation advancing in the Senate, and
an EFF investigation into mobile ad software.
Prefer to listen in? EFFector is now available on all major podcast platforms. This time, we're covering EFF's new report on mobile ad libraries and chatting with EFF Executive Director Nicole Ozer about how digital rights have become fundamental to our lives. 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!
Urgent: Oppose plan to undermine Head Start educational program [Richard Stallman's Political Notes]
US citizens: Submit a public comment to oppose the plan to undermine the Head Start educational program.
Here is the comment I submitted:
I strongly oppose the proposed rule, “Reducing Federal Burden for Head Start Programs,” and urge HHS and ACF to withdraw it.
The fact that this proposed rule would eliminate so many standards all at once shows that its true goal is to undermine Head Start, rather than to make it work better or more efficiently.
Head Start should be strengthened, not stripped of the standards that have been its backbone. To weaken these standards would open the door to weakening the education of American children, especially children in disprivileged groups and those struggling with poverty, housing instability, and difficulty obtaining documentation.
Please withdraw the proposed rule under docket ACF-2026-0595 and RIN 0970-AD30 and preserve strong nationwide Head Start Program Performance Standards.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: Ban electric shock gloves [Richard Stallman's Political Notes]
US citizens: call on Congress to ban the deportation thugs' electric shock gloves.
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: Stop dismantling of Head Start [Richard Stallman's Political Notes]
US citizens: call on Congress to stop the saboteur in chief and RFK jr. from dismantling Head Start.
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: Oppose ban on ranked choice voting [Richard Stallman's Political Notes]
US citizens: oppose the Democratic National Committee's ban on ranked choice voting in Democratic primaries.
Urgent: Restore funding for Public Media [Richard Stallman's Political Notes]
US citizens: call for restoring funding for Public Media.
Urgent: Support Green New Deal for Health [Richard Stallman's Political Notes]
US citizens: Support the Green New Deal for Health. It is designed to protect Americans from the danger of increasing heat and local disasters, both short term and long term.
Exiled dissidents from Salafi Arabia block on antisocial media [Richard Stallman's Political Notes]
Some "American" antisocial media companies are blocking the accounts of exiled dissidents from Salafi Arabia from being seen in that country.
The Big Idea: Tim Pratt [Whatever]

There’s the safe way to write a novel, and then there’s Tim Pratt’s way to write a novel. Abandoning any worries of appealing to the masses, Pratt hit the gas on all of their most interesting ideas and crafted the newest addition to their Nigh-Space series, The Jewel and the Comet.
TIM PRATT:
I mean, if I’m being honest, the actual Big Idea in The Jewel and the Comet (and the Nigh-Space series in general) is “total self-indulgence.”
Some years ago, I took psychedelics and got on the phone with a writer friend of mine and rambled to her for a while about all the things I’d put in one book if I was completely unconcerned with marketability: multiverse stuff, space operatics, that sense of dislocation you get in good contemporary fantasy when the impossible and the mundane are immediately juxtaposed, gender shit, talking spaceships, a kinky romance as a sneaky way to talk about communication in relationships, a big guy/little guy amoral villain duo, and more big tropey power chords than I’ll list here.
When I sobered up, I decided life was too short to worry about marketability, and went ahead and did the indulgent thing. The result was my 2024 novel The Knife and the Serpent, and for sequel The Jewel and the Comet, I indulged even more, adding elements like “troubled dirtbags with cosmic power” and “crystalline automatons” and “gay warlords” and “sexy space stations” and “Folsom Street Fair with aliens” and “planets with rings made out of trillions of skulls and bones.”
The central conceit of the series is: there’s a swath of thousands of parallel universes where the physical laws are amenable to the development of intelligent life; many of those intelligent beings have discovered ways to travel through that broadly habitable region of the multiverse, often called Nigh-Space; various jerks from technologically advanced realities oppress and exploit people from less advanced ones; and there’s a pan-dimensional group of anarchist revolutionaries called The Interventionists who attempt to help the downtrodden and disrupt the efforts of assorted interdimensional fascists.
My main character Glenn (who is genderfluid, and is sometimes Gwen instead) is a grad student in Berkeley, California on our very own Earth, and in book one he discovers that his girlfriend and domme Vivy is actually from another universe, and is a bomb-throwing freedom fighter and/or terrorist agent of the Interventionists. Vivy and Glenn have adventures and deal with the relationship fallout from the revelation of Vivy’s whole deal.
In The Jewel and the Comet, Gwen is training to become an Interventionist field agent, and Vivy is doing her own secret-agent stuff, when something weird happens. See, the multiverse is vaster than the habitable regions of Nigh-Space, but probes and explorers who’ve gone beyond the known end-points never return, presumably because the realms beyond have different physical laws and are inimical to biological or technological life as we understand it. Occasionally probes—or maybe they’re people?—from those Outer Realms appear in Nigh-Space, where they prove toxic to the very fabric of our reality, doing damage to local causality before they poof out of existence like exotic elements. There’s somebody over there in that undiscovered reality, but communication seems to be impossible.
Until something that looks like a comet (at first) pops into the final habitable level of Nigh-Space and asks the local Interventionist monitoring station for help. The Comet explains that it lost something, an object that looks like a jewel, but which contains enough power to destroy the multiverse, and could someone help them find it before that happens, please?
A big part of the fun in the book is the Comet’s attempt to communicate with the various human and artificial intelligences it encounters, as it tries to make itself understood on even the most basic level. There are a lot of ways to write about alien minds from alien cultures attempting to make themselves understood, and some of those approaches are very erudite and thoughtful (like Ann Leckie’s Translation State, wow). But for me, well, I decided to be funny instead; the Comet slurps up all the information it can find in any database anywhere in the multiverse, and runs that through a cobbled-together natural language processing system, and its resulting speech is full of malapropisms and mondegreens and free association and literary misquotes. The Comet’s dialogue ended up reading like a satire of “spicy autocomplete” LLM outputs, even though I had the idea years before those achieved such total ubiquity; oh, well, I’m fine with being accidentally timely.
The final result of all that indulgence is a multiversal romantic adventure first contact space opera, which covers a considerable swath of things I love about writing in our genre. As I was revising this book, I asked myself: Is it possible to be too self-indulgent? And I answered myself: Of course it is.
But what else am I doing here, if I’m not going to be me just as hard as I possibly can?
The Jewel and the Comet: Amazon|Barnes & Noble|Bookshop|Powell’s
Why did the Microsoft Entertainment Pack for Windows have a special sticker announcing that it also had Tetris? [The Old New Thing]
The first Microsoft Entertainment Pack for Windows didn’t have a number after its name because it was the first one, and nobody knew that there were going to be any sequels.¹
It may not have had a big number 1 on the box, but initial runs did have a bright red sticker that said, “Now includes TETRIS for Windows!” There was no mention of Tetris anywhere else on the box. Why did it announce the inclusion of Tetris only with a sticker?
Because at the time the first run of boxes were being printed, the negotiations to license Tetris hadn’t yet concluded. There was a chance that the negotiations would fall through, and the Entertainment Pack would have to be released without Tetris.
Rather than including Tetris on the box art and risking having to destroy a production run of boxes if the license couldn’t be acquired in time, the decision was made to produce boxes that omitted any screen shots or even a mention of Tetris. In anticipation of the deal coming to a satisfactory conclusion, they did have a run of red stickers on standby. When the deal was completed, the “Now includes TETRIS for Windows!” stickers were applied to the already-made boxes.
Later runs of the product box incorporated the Tetris sticker into the box art, and even called itself “Microsoft Entertainment Pack 1” and suggested that you try out “other volumes of Microsoft Entertainment Pack for Windows” because packs 2 through 4 had already been released by then.
So I guess that means that if you have a copy of Microsoft Entertainment Pack for Windows with the Tetris sticker, you have an ultra-rare copy, like the original Windows 95 box with a hologram of a shirtless baby.
Bonus chatter: Other sticker shenanigans.
¹ Just like how World War I was initially called “The Great War”. If you had called it “World War I” from the outset, people would look at you funny, like “Do you know something I don’t?”
The post Why did the Microsoft Entertainment Pack for Windows have a special sticker announcing that it also had Tetris? appeared first on The Old New Thing.
Version 0.11 of the Tuba fediverse client has been released. Notable changes in this release include support for Mastodon collections and quotes, ability to create custom thumbnails for attachments, a new emoji picker, a build for Android, as well as many other enhancements.
Zero-Knowledge Proofs Aren’t Age Verification Silver Bullets [Deeplinks]
Age verification (laws and regulations requiring platforms and websites to assure or estimate that a user seeking to use an online service is of a certain age) is everywhere. At the time of writing, about half the states in the US have some internet age verification law in place, and dangerous proposals, from the KIDS Act to the Kids Online Safety Act (KOSA), have been advancing at the federal level. European Union member states are moving toward having age verification in a centralized app by the end of this year. Australia famously now has one extremely broad restriction in place.
Most age verification laws tend to fail at their primary goal of barring kids from being online or from entering only specially designated zones, not to mention they pose a significant threat to everyone’s privacy. Some proponents of these age-based internet restrictions think they've found the silver bullet: Zero-Knowledge Proofs (ZKPs). We wrote about ZKP’s when they were first rolled out in the age verification context last year. However, more recent examples show our concerns weren’t just conjecture; ZKP-focused AV schemes are gameable, hackable, and not the cure-all some may claim.
Before we jump into how these systems work, it must be said: creating a single point of failure for internet access contradicts the very idea of a free and open internet.
The mechanisms underlying ZKPs pose an existential threat to everyone’s digital rights, not just kids. The idea behind ZKPs is that you are issued a “token” that vouches for your age every time you log in, creating a constant link back to the entity that verified you. The issuer of the tokens these AV schemes rely on could track every time that credential is used, creating a dangerous trail of metadata on any user they wanted to target. The issuer itself could be pressured by authoritarian governments to remove a user's access to a service, essentially removing that person’s access to the internet entirely. Without oversight of who has authority to implement and operate these systems, this approach centralizes critical internet infrastructure in the hands of very few actors.
ZKPs are mathematically impressive cryptographic tools—but they weren’t developed with age verification in mind. Essentially, they let a computer quickly attest to the validity of a given question asked by another computer without divulging any underlying private data.
Computer A (such as the device operated by a person trying to access a website) is able to prove to Computer B (such as the server for the website that person is trying to access) that something is true without actually sharing the contents of that information itself. Computer A locks in a "commitment" to the information it needs to convey. Computer B, which wants to verify that information, generates mathematical "challenges" that can be answered correctly only if the information is true. Traditionally, this happens over many different “challenges" until there is no room for doubt that Computer A’s "commitment" is true.
Since that kind of lengthy back-and-forth process would drastically slow things down over the internet, there's a shortened version of this exchange that's "non-interactive.” In that case, the ZKP is verified instantly. The answer itself is hashed (mathematically converted into a fixed, shorter string of characters), and the resulting hash is theoretically unpredictable and tamper-resistant. This shortened version of the ZKP exchange is called "zk-SNARK," which is the current preferred method for age verification.
In the ideal scenario, this means that ZKP’s are able to attest to a person’s status as an adult or a child without actually giving away any other private information about that person. In other words, only one entity would collect that private information, typically on the user’s device, instead of every website or app that needs the user’s age attested to. Unfortunately, recent real-world testing of these systems prove that ZKP’s aren’t the silver bullet that proponents of AV laws were hoping for.
By the end of 2026, the 27 states within the European Union are expected to have infrastructure in place to do age verification within a "mini-wallet" app that will live inside the EUDI (European Digital Identity) Wallet. This is being met with plenty of warranted criticism from digital rights experts. The "mini-wallet" version is already being rolled out, with promises that the ZKPs are in working order. But recent insights show that the ZKP features aren't yet turned on except for the closed demo/prototype build (not the version of the app people are using “out of the box”), which the vast majority of everyday users can’t access.
Worse still, a security researcher found they could bypass the app's system using a quickly built Chrome extension that tricked the app into repeatedly accepting the same "over-18" token. It did so without ever asking for fresh verification.
Over 400 security researchers signed an open letter stating that age assurance checkpoints, even if implemented with privacy in mind, would cause more harm than good. A primary focus of their concern, which we share, is the fact that a centralized identity verification system creates a single point of failure that is extremely vulnerable to both cyberattack and authoritarian overreach.
Once the "mini-wallet" version of this is fully integrated into the EUDI Wallet, it will replicate these same failures, perhaps more, but at a much larger scale. At that point, the failures will involve many more pieces of sensitive information that the EUDI Wallet contains: passports, driver's licenses, travel information, financial information, to name a few.
As we’ve said time and time again, no method of online age verification is privacy-protective, fully accurate, and capable of guaranteeing universal coverage without introducing severe security risks.
Lawmakers concerned about the privacy failures of age verification mandates must understand that ZKPs are not a magic bullet. They do not solve the age verification paradox; they simply push the burden of trust down the road, relying on technical ignorance and magical thinking about how the internet actually functions.
Mandatory online age verification of any kind is a dangerously flawed idea. Tell your lawmakers we said so.
Warning: Smudge is Likely Judging You [Whatever]

You know what you did.
You may admit to it in the comments, if you like.
— JS
[$] Representing Python paths using pathlib [LWN.net]
At the outset of his PyCon US 2026 talk, Trey Hunner said that his goal was for attendees to stop representing filesystem paths as strings and to use pathlib instead. That's kind of a tall order, at least for longtime Python users, since string-based paths have been pervasive—and mostly work. It is that "mostly" part that makes Hunner want to see things change, of course, so he set out to describe a lesser-known corner of the language and to try to change some minds.
I wonder how many scenarios they're playing out in DC wrt
Iran. Just guessing, probably none. We
learned on Monday that the real war has yet to begin, according
to Iran. What could they do to hurt the US. Or wake us up to the
reality of war. We think the cost of war is higher prices. We are
not safe in the US, any more than Russians are safe in Moscow. The
parallels are pretty amazing. Both Russia and the US started
unprovoked wars of choice, and clearly didn't consider that they
might get bogged down. Russia has a source of drones so they can
fight back. But I'd be surprised if Trump is stocking up, but if we
were, where would we use them? We've already attacked Iran with our
probably obsolete trillion-dollar military. Did a lot of damage,
killed civilians, decimated their government, they keep going. I'm
old enough to remember Vietnam and what asymmetric
war is like. The US always falls for this. Our military is very
impressive, until we use it. Bluffing was a much better approach
for Trump.
Security updates for Wednesday [LWN.net]
Security updates have been issued by AlmaLinux (.NET 10.0, .NET 9.0, 389-ds-base, attr, curl, glib2, gstreamer1-plugins-bad-free, gstreamer1-plugins-bad-free and gstreamer1-plugins-ugly-free, gstreamer1-plugins-good, gstreamer1-plugins-ugly-free, haproxy, kernel, libssh, libXfont2, nodejs22, pam, php, php8.4, sg3_utils, and unbound), Debian (librabbitmq, ruby-grape, spip, srt, and swift), Fedora (GitPython, lemonldap-ng, libgit2, libnfs, perl-Imager, perl-List-SomeUtils-XS, python3.12, python3.14, and radsecproxy), Oracle (.NET 10.0, 389-ds-base, 389-ds:1.4, bind, curl, gstreamer1-plugins-bad-free, gstreamer1-plugins-bad-free and gstreamer1-plugins-ugly-free, gstreamer1-plugins-good, gstreamer1-plugins-ugly-free, haproxy, libssh, libXfont2, nodejs22, nodejs:22, pcp, and unbound), Red Hat (golang, grafana, grafana-pcp, osbuild-composer, and rhc), SUSE (erlang, forgejo-cli, go1.25, go1.26, htop, python-pypdf2, python313-tablib, and snphost), and Ubuntu (c3p0, dotnet8, dotnet10, kernel, linux, linux-aws, linux-aws-fips, linux-aws-hwe, linux-fips, linux-hwe, linux-kvm, linux, linux-aws, linux-aws-fips, linux-azure, linux-fips, linux-gcp, linux-gcp-6.8, linux-gcp-fips, linux-gkeop, linux-oracle, linux-realtime, linux-realtime-6.8, linux-xilinx, linux-hwe-7.0, linux-oracle, linux-oracle-6.17, and linux-oracle-6.8).
CodeSOD: Back to the Lab [The Daily WTF]
Matlab is special. Scientists and researchers love it. Programmers hate it, and not just because it uses 1-based arrays. I've worked on a number of projects where the task was "take this Matlab code and convert it to C so we can run it on an embedded CPU". Somehow, in that process, I've avoided learning much about Matlab.
Andre works on a team that uses Matlab to manage experimental scenarios. They wanted to do a simple task: generate a set of participant-specific images, store them in a database, and reference them later. Somewhere in the intersection of the database product they were using, the Matlab license they had, and other constraints, they discovered that there simply was no good way to do this.
Enter "Jude". Jude said, "Don't worry about it, I can hack something together."
I present the code in its entirety, but don't ask me to explain it. Instead, read the comments.
nMk = 1;%counting non-response triggers, this cycles with each trial
nPress = 0;%counting button presses, noting the position in the log
for v = 1:height(resVmrk)%read each trigger
switch nMk
%it's kinda roundabout, but the only recognisable part is the response
%yet I refer to it only by elision
%and instead count the stimuli to reconstruct the pattern
case 1%an almost reliable stimulus
nPress = nPress+1;%trial start
if strcmp(resVmrk.TriggerCode{v},'S1')%it must be a non-response
resVmrk.TriggerCode{v} = 'cross';%name it properly
nMk = 2;%and expect the next one
else%except when it is not
resLog.miss(nPress) = 1;%then note it down as missed
nMk = 0;%and skip to response
end
case 2%usually reliable
if strcmp(resVmrk.TriggerCode{v},'S1')%if the face loaded successfully
resVmrk.TriggerCode{v} = 'face';%note it
nMk = 3;%and proceed accordingly
if nPress<=height(resLog)%trailing triggers at the end should be ignored
resLog.facePos(nPress) = v;%note the position
end
else%if it failed to load it is a response
resVmrk.Dur(v-1:v+1) = 0;%mark the whole trial for deletion
resLog.miss(nPress) = 1;%and note it down as missing the face
nMk = 0;%and skip to response
end
case 3%this one is not reliable, and sometimes is duplicated instead of missing
if strcmp(resVmrk.TriggerCode{v},'S1')%if it is present at all
resVmrk.TriggerCode{v} = 'empty';%first name it
if v<height(resVmrk)%if it is not a trailing trigger, since it'll break the check otherwise
if ~strcmp(resVmrk.TriggerCode{v+1},'S1')%if the next trigger is a response
nMk = 0;%all is fine and it didn't freak out, proceed to response
else%otherwise
nMk = 3;%just treat as a double
%and then count how many excess triggers are actually here
nExcess = 1;%definitely one here already
while strcmp(resVmrk.TriggerCode{v+nExcess+1},'S1')
nExcess = nExcess+1;%and everything until the response
end
resVmrk.Dur(v-2:v+nExcess+2) = 0;%then mark the whole trial for deletion
%this overwrites the same positions several time, but the important part is to get the preceding two, because I don't know which one of them is correct one, so I delete the whole trial
if nPress<=height(resLog)
resLog.bad(nPress) = 1;%also note it down as borked
end
end
end
else
nMk = 0;%if it didn't happen at all simply proceed to response
end
case 0%this one reliably follows the response, so I address the response by elision
if strcmp(resVmrk.TriggerCode{v},'S1')%skip response itself
resVmrk.TriggerCode{v} = 'blink';%note the only reliable non-response (always following the response)
nMk = 1;%start the trial anew
if nPress<=height(resLog)%if it is not a trailing trigger
resLog.respPos(nPress) = v-1;%note down the response position
if resLog.miss(nPress)==1%and if it's a response without a stimulus
resVmrk.Dur(v-1:v) = 0;%mark it for deletion as well
end
end
end
end
end
Ah, the classic "for-case" antipattern. That's gross enough, but what the heck is happening inside each of those cases?
My personal favorite comment is this one: "%this overwrites the same positions several time, but the important part is to get the preceding two, because I don't know which one of them is correct one, so I delete the whole trial"
Now, you may suspect comments like "usually reliable" are about what we see in the dataset, but I'm not so certain. Andre writes:
After reverting the last discovered way for his creation to corrupt the data I was able to figure out that 20% of the logs provided corresponded to different (unknown) experiments altogether.
When Guardrails Go Wrong [Radar]
The latest round of restrictions and safeguards for frontier models are overly fussy and limiting. A Claude skill that I created demonstrates what happens when guardrails go astray. My skill helps me to find articles and blog posts that go into O’Reilly Radar’s monthly Trends to Watch. It reads roughly a dozen well-known sites like The New Stack, The Next Web, and Hacker News, plus any other sources that it finds useful. After reading the sites, it produces a digest of the most important articles published in the last day. I use it as a sanity check on my own reading: Did I miss anything important? Am I on the fence about something that might be an important leading indicator?
I’ve used the skill daily for a couple of months now. It suddenly stopped working with the following message:
API Error: Sonnet 5’s safeguards flagged this message. Our intentionally broad safeguards allow us to deliver more capabilities faster, but can sometimes flag legitimate cybersecurity work. Apply to the Cyber Verification Program to reduce these interruptions. Send feedback with /feedback or learn more: https://support.claude.com/en/articles/14604842-real-time-cyber-safeguards-on-claude
When I started a new Claude Code session with Haiku, the skill worked without problems. (I didn’t try Opus or Fable; if Sonnet found the skill dangerous, I’m sure Opus and Fable would draw the same conclusion.) GPT 5.6 with “high” reasoning was able to execute a very similar skill without problems. So what happened to Sonnet?
The best approach to debugging AI is often to ask the AI itself, so I pasted the message into another Claude Code session and asked it what was happening. The response came down to the descriptions of Hacker News, Bleeping Computer, and The Register. The phrase “vulnerabilities, exploits, threat reporting” in the description of Hacker News triggered Sonnet’s guardrails. Ironically, that description is both incorrect and Claude generated. (Reminder to self: Be more careful when asking Claude to develop a skill from a task.) Sonnet came up with three solutions, the first of which was to let it rewrite the skill with more neutral descriptions like “security industry news.” Fair enough, but I did the editing myself.
Then I went back to the original Claude Code session. It still didn’t work. I expected that I’d need to do something to reload the skill, but the problem was worse. Regardless of the prompt, the original session wouldn’t do anything except repeat the error message. It wouldn’t even commit the modified skill to my GitHub repo. However, Sonnet executed my skill correctly in a new Claude Code instance.
So I returned to Sonnet to find out what’s going on. The answer was interesting: The error may have been triggered by the skill, but when evaluating security threats, the models base their decisions on the entire conversation, not just the specific skill that was called. If a model needs to call a skill that it thinks is problematic, that call is part of the conversation, part of the context. The entire conversation is then forever dead and lost.
What can we learn from this? First, it’s a problem for a program to stop working because of a change over which you have no control. If anything, the industry has erred on the other side; we’re all familiar with “we don’t really understand why this works, so don’t touch it, don’t update the compiler, don’t update the libraries, and run it on emulators of computers that haven’t been built in 40 years.” That’s not just a problem for COBOL code from the 1970s; we see the same thing with C, C++, Java, JavaScript, and just about every language that ever went into production. Legacy code is everywhere. The “don’t change anything” approach isn’t necessarily a bad thing; it certainly beats “here’s a new library, you’re going to love it, you can’t use the old version any more, and wow, look at all the things it broke, guess you’ll have to fix them.” AI where working code breaks at random is a lot less useful than AI that works day in and day out. Stability is a virtue. It’s impossible to work effectively when the environment changes from day to day and isn’t under your control.
But that’s not really what bothers me. It’s rather bizarre that reading well-known sources is treated as a security risk, especially when the “risk” seems to come from an AI-generated description. Of course, we know about hallucinations, errors, and prompt injections. The possibility of a Hacker News post that injects a hostile prompt isn’t zero, and it’s also possible that a model might mistakenly interpret an example of a hostile action as a prompt. I also don’t expect any model to reason that a skill must be safe because it’s been in use for months (though files have time stamps). Artificial intelligence always coexists with artificial stupidity, as does natural intelligence.
Guardrails may keep you from going off a cliff, but they may also prevent you from going where you need to go. And that’s a problem. There’s a basic concept from signal processing and data science called the receiver operating characteristic (ROC). In any binary classification system, you can never achieve perfect classification. The only way to guarantee that no true positives (dangerous things) slip through the classifier is to reject everything. The opposite is equally true: The only way to eliminate false positives (things that look dangerous but aren’t) is to let everything through, including dangerous actions. In theory, it’s possible to get arbitrarily close to perfect classification, but you know how that goes: “The difference between theory and practice is bigger in practice than in theory.”
The ROC curve.
(This figure is from
Wikimedia Commons and licensed under Creative Commons
Attribution-Share Alike 4.0 International.)We know how to make AI “safe”: Go back to 2022 and models that can only tell the difference between cats and dogs. The model might mislabel a few things, but the consequences of an error are small. Safety comes with limitations, and none of us who use AI for real work want to return to the days of dogs, cats, and bananas. And while I don’t want the ability to use Claude to generate hostile attacks against unsuspecting victims, and while I understand the danger of interpreting any input text as a command (for example, an article describing the Morris worm), I have a problem with an AI that refuses to perform reasonable tasks. The ROC tells us that we can’t have perfect guardrails, but there’s no rule against overly fussy ones. What’s allowed, and what’s forbidden? What are the limits? We don’t know. And that’s the situation we’re in now. We can’t know in advance what is and isn’t acceptable, and the rules can change at any time. A tool with unknown limitations is much less useful than a tool that tells you what it can and can’t do. I’ve enjoyed using Claude to write programs that play with prime numbers and infinite series, and fortunately I don’t rely on any of those programs for my job. But what if tomorrow (or a month from now or a year from now) Claude decides that testing whether large numbers are prime signals an attack against cryptography?
I’m not completely unsympathetic to scoring an entire conversation rather than individual actions. A series of steps, each of which appears innocuous by itself, is more likely to lead an agent to a hostile action than a single prompt. But again, given how valuable context is, do we really want the penalty to be losing all the context for an innocuous project? There are risks on either side, including the possibility that a model will ignore its guardrails; after all, rules that a harness adds to the context are at best advisory.
Guardrails always have unintended consequences. We need to learn what the ROC is teaching us: that it’s impossible to get to the upper left corner of the diagram, where we have perfect rejection of true positives (dangers) and no rejection of false positives. But we also need to get as close to that upper left corner as possible if we want our classifiers to have consistently useful output. An engineering team needs to balance risk against usefulness, and they’re clearly out of balance now. Risks will never go away, but guardrails whose boundaries are unclear and overly strict lead to models and agents that are less useful, rather than more. The bad guys will always figure out how to do bad stuff. Hamstrung AI for the rest of us is not a solution.
Issue 47 – Greta’s Wedding Pt. 2 – 16 [Comics Archive - Spinnyverse]
The post Issue 47 – Greta’s Wedding Pt. 2 – 16 appeared first on Spinnyverse.
ICE Collecting DNA Samples [Schneier on Security]
ICE collected nearly a million DNA samples last year.
Is Open-Source AI Really the Dangerous Path? [Radar]
The following article originally appeared on the Tech Policy Press site and is being republished here with the author’s permission.
In Washington, AI is increasingly being treated as something that needs to be controlled. The government believes that AI is, first and foremost, a national security asset, meaning that it must be sequestered to prevent enemies from gaining an advantage. On the other side of the world, in Beijing, the approach is moving in the opposite direction. China is reducing barriers, encouraging adoption, and using open-source AI as a way to spread Chinese-developed technology across global markets.
There is now a fundamental divide. The United States is betting that control is the path to preserve its lead. China, instead, is betting on diffusion. The country whose technology is adopted most widely may ultimately shape the future of AI. Questions over open source and open weights sit at the center of that contest.
Beginning on July 24, high-profile support for open source moved what is often a debate behind closed doors into the public sphere, where it belongs: Nvidia’s Jensen Huang’s first-ever post on X linked to an open letter signed by 35 companies—including Palantir, Andreessen Horowitz and Microsoft—warning Washington not to over-restrict open source software. “Open models strengthen safety and cybersecurity, accelerate innovation and diffusion, and enable sovereignty,” Huang wrote, leading the likes of Elon Musk and Mark Zuckerberg to post their support.
Mozilla signed it because, despite being a very different company from many of the signatories and not always seeing eye to eye, we believe in the spirit and substance of the letter, particularly that ‘openness may be one of the most important paths to AI safety and security.’ The letter was followed by the announcement of the Open Secure AI Alliance for AI Safety and Security, which aims to “build and share open tools that promote responsible use of and trust in AI.”
The battle is on. Here’s what’s behind it.
Open models now do about a third of the world’s AI work, but they collect only about four percent of the money.
Those two numbers, taken from Mozilla’s new “State of Open Source AI” report, provide more context than the entire AI safety conversation. The report tells a story of a performance gap between open models—the ones whose weights anyone can download, run, and adapt—and the best proprietary systems. While the capabilities are still a jagged frontier, on average, the performance has narrowed sharply over the past year. Costs keep falling. Seventy-nine percent of developers now build with open models. And yet the money hasn’t followed the usage.
This is where the battle lies. A third of the work, but only four percent of the money—that gap is the prize.
The battle started almost exactly three years ago, when Anthropic’s Dario Amodei told Congress that advanced open-source AI is on a “very dangerous path.” On the surface, his argument is pretty simple: once a model’s weights are public, no one can monitor abuse or revoke access. Once released, an open weights model can’t be “unreleased.” But let’s ask ourselves what that revoke switch actually does. Revocation is not a feature of the model, it is in the API contract. That means it only applies to a lab’s own customers—and the people in Amodei’s threat model were never customers. The labs shipping frontier-class open weights—such as DeepSeek, Alibaba, Mistral, and Moonshot (with its just-released, 2.8T-parameter model Kimi)—mostly sit outside Washington’s reach anyway. Two million open models already sit on Hugging Face; many run on a laptop. That means that in the real world, there’s no single kill switch to throw.
This distance between what such a regulatory switch claims to control and what it actually does is what’s missing from the debate over which models are “safer.” It’s also the key to the fight over who captures AI’s value.
To the companies that built the proprietary models, value is about maintaining a privileged position and using everything at their disposal to protect it—policy, pricing, and technology. For everybody else, value means the ability and power to shape, audit, and improve the systems we all depend on. And increasingly, that power doesn’t live in the model at all.
For instance, right now, two developers can take the identical open model and ship completely different products: a scam-call operation or a nurse-advice hotline. The model doesn’t know (or care) about the difference. What is making the actual decisions is the layer of software built around it—the agentic harness—that sits between users and the model, determining what the application can access, remember, and act on.
As models get cheaper, not to mention more interchangeable, that harness is where the power is actually going. And it’s being quietly locked up by the big labs. Farmers know how this story goes. They bought their tractors outright, but the manufacturer kept the keys to the software, making the farmers owners on paper but renters in practice. It took years of lawsuits—and, just this month, the Federal Trade Commission—to start prying that lock back open. A similar arrangement is now being built for the software that reads your email, books your travel, and remembers every detail of your life.
This isn’t an accident of engineering; it’s a business model. A closed wrapper makes money by making itself expensive to leave. An open one can’t lock the door, so it survives only by staying worth using. Same underlying technology, opposite incentives. It’s the reason the value captured by open models sits at four percent while their usage sits at a third. The real question for all the builders right now isn’t which model you’re using. Rather, it’s whether you could leave for a different one.
The debate that matters isn’t really which models get released or which get regulated; it’s who controls the layer wrapped around them. That’s being decided right now—mostly by developers who don’t realize they’re the ones responsible. For a glimpse of the future, we can look to the internet: it exists as it does today because, when the architecture was still up for grabs, developers chose HTML and HTTP over proprietary walled gardens like AOL. AI is at that same juncture now, and the fact that two million open models already exist suggests plenty of builders have shown up early. That window doesn’t stay open on its own, and it doesn’t stay open forever. It stays open because people keep choosing it.
For developers, four habits matter most in ensuring an open future:
None of this requires believing anyone is acting in bad faith. It’s worth noticing, though, that the loudest safety arguments arrived right around the time models got cheap enough for the real competition to move up a layer. That’s not evidence of a conspiracy—it’s just where the incentives point, and it’s why so much of the current debate is aimed at the wrong target.
More evidence is in our report, and most of it is good news: performance gaps closing, costs collapsing, millions of developers building. The question in front of developers isn’t whether AI is dangerous—it’s whether they’ll hold the keys to the machines they’re building. The question for governments is whether the keys they’re reaching for turn anything at all. For now, that door is still open. Let’s work together to keep it that way.
And be sure to join us at AI Codecon: Building with Open Source AI on August 31, a free half-day virtual conference. You’ll hear from leading developers and technical experts working with open-weight models, self-hosted infrastructure, and real-world AI workflows, and learn how building in the open gives teams more control over costs, data privacy, and what they ship. Register today to save your spot.
Don’t steal the revelation [Seth's Blog]
Teaching and learning aren’t always aligned.
Sometimes organized teaching is defensive. “Here, take all this down in your notes, it will be on the test.” This gives the teacher deniability, but might not create the conditions for the student to actually learn.
The alternative is to seek the “aha.” This is the autodidact moment, the opportunity to teach ourselves.
Most online courses and videos simply tell you the answer. Easier to get clicks that way. But the best learning is almost always autodidactic.
When the teacher creates the conditions for learning, the student does the work.
This requires trust. Trust in the process and trust in the destination.
And it requires tension. The tension of it might not work and the incentive to put in the work.
Great teachers set it up, and great students find the aha.
Pluralistic: The ordinariness of evil (19 Aug 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

Maybe it seems weird that AI bosses won't stop publicly rending their garments about the terrible potential of their products, from the jobspocalypse that will ensue when AI can do our jobs better than us, to the impending moment when the word-guessing programs learn too many words, wake up and turn us all into paperclips.
It seems weird that they won't stop fretting about this terrible potential – until you realize that every public pronouncement about this terrible potential is also a public boast about its potential, period.
That's very, very important, because all AI really has is potential. Actual, existing AI is useful at the margins, if you're already a skilled practitioner who can discern correct from incorrect outputs, and if you integrate AI judiciously so that it doesn't overwhelm your ability to pay attention to those outputs and apply your discernment to them:
https://pluralistic.net/2026/07/28/hitl-ers/#ai-ai-oh
In other words, AI is mostly a novelty, a heavily subsidized toy that produces little more than distraction. Where AI does produce value, that value is comparable to a plug-in, a new feature for your word processor or image/sound/video-editing package that might help you do your job somewhat better, or it might not.
That doesn't make AI useless, it just makes it a normal technology: useful for some, useless for others, capable of being abused and likely to waste a lot of time when used unwisely:
Normal technologies are fine. But normal technologies do not warrant the massive economic and political commitments that have been bestowed upon AI: a trillion dollars in the past year alone, and the world's civil servants fired en masse and replaced with AI:
https://pluralistic.net/2026/05/13/vibe-governance/#k-hole
The people who have committed our society and its resources to an all-or-nothing bet on AI will tell you that AI is the everything machine, but when pressed, they will confess that AI is about to become the everything machine, for example, once AI starts doing AI research, a thing that AI cannot do:
https://www.normaltech.ai/p/ai-agents-cant-yet-do-open-ended
This is a civilizational act of Magic Underpants Gnomery, and every day that it goes on is a day when more economic, climate and political costs of AI are imposed on all of us. Scientific journals, open source repositories and even science fiction magazines are being overwhelmed by slop, whose perpetrators and apologists insist that soon, AI will realize its potential and the slop will be transformed into gold.
That's why AI bosses are so committed to talking up AI's destructive potential: because destructive potential is nonetheless potential. The moment we stop believing in that potential is the moment that we stop supplying AI companies with bales of cash to shovel into their money-furnaces so that they can afford to sell hundred dollar bills for a dollar each to Elon Musk cultists who want to generate child porn and pictures of Sonic the Hedgehog with giant boobs.
AI does have destructive potential. It has the potential to destroy the productive economy when an AI salesman convinces your boss to fire you and replace you with chatbots that can't do your job:
https://pluralistic.net/2025/03/18/asbestos-in-the-walls/#government-by-spicy-autocomplete
AI has destructive potential because bosses are trapped in a prisoner's dilemma where none of them can admit that the money they've spent – and the jobs they've destroyed – chasing AI has been wasted, and so other bosses bet even harder:
https://pluralistic.net/2026/08/01/dare-snot/#i-will-fucking-piledrive-you-if-you-mention-ai-again
AI has destructive potential because the data-center bubble has convinced credulous town officials to throw out environmental and planning review, seize people's home and farms, and carpet the countryside with giant data centers (many of which will never be built):
https://www.404media.co/people-hate-datacenters-survey-finds/
AI has destructive potential because it is consuming scarce water and energy and emitting gigatons of carbon:
https://www.404media.co/even-the-u-s-government-says-ai-requires-massive-amounts-of-water/
This is the destructive potential we need to be hammering at, because this isn't the kind of destructive potential that translates into productive potential that will someday make the AI bet pay off. Quite the opposite: this is all about the potential of AI to destroy the economy and consume your retirement savings:
Just as importantly: we have to stop amplifying tech bosses' chosen narratives about their products' destructive potential, because this helps them raise more money and do more terrible things. Bernie Sanders needs to stop insisting that the US government should own 50% of the money-losingest corporations the world has ever seen and start talking about how they will not get a government bailout when their investment bubble bursts. We need to stop talking about AI "haves" who will enjoy the awesome potential of AI, and AI "have-nots" who will fall behind.
We need to stop talking about "AI safety" and the possibility of "rogue AI" destroying the world. When an AI company's security tool "escapes containment" and hacks someone else's servers, we need to ask the company "Why do you suck so bad at building secure sandboxes for your hacking tools?" rather than "Why are your hacking tools so amazingly powerful?"
Above all, we need to stop talking about AI as exceptional. AI is normal. A normal technology has some uses, but isn't useful for all things and all people. A normal technology isn't inevitable, it's something you decide whether you want to use or not.
Treating AI as unexceptional is the best way to halt the destructive march of AI companies and their impact on jobs, the climate and the economy. But treating AI as unexceptional requires that we stop talking about AI as if it were exceptionally evil. Yes, some people who use AI experience severe mental problems, but that's not because AI is a Lovecraftian horror that destroys your brain and your capacity for rational thought if you use it. It's not a basilisk. AI is like a carny ride that triggers cardiac events in riders who never knew they had a problem because they never experienced those particular g-stresses – it's not something that induces vulnerability, it's something that triggers vulnerability:
https://pluralistic.net/2026/06/03/mission-space/#gsd
Using AI doesn't make you evil, nor does it risk your sanity – no more than doing any of the other dangerous, compromised, unsustainable things that constitute our daily lives in this fraught moment. The world will be better off when the AI companies are bankrupt and their servers are sold off at ten cents on the dollar – but using those servers to run open models in modest, careful ways won't infect you with their wickedness. They are not stained with communicable sin. They're just computers. They are unexceptional.
One way for a technology to be normal is for it to be produced and marketed by an awful corporation that wants to do terrible things. This isn't to say that "all technologies are dual use, and you have to take the good with the bad." That's the inevitabilist argument of vulgar Thatcherites who insist – as Margaret Thatcher did – that "there is no alternative," and we have to accept their abuse if we want to reap the benefits of the technology.
The normal way to deal with this is to reject vulgar Thatcherism in favor of heroic Gibsonism, thundering William Gibson's rallying cry, "the street finds its own use for things," as we seize the means of technology and use it in the ways that benefit us, while restricting, banning, or blocking the uses that harm us:
https://pluralistic.net/2026/03/17/technopolitics/#original-sin
To treat AI as exceptionally evil is to elevate the mediocrities who run AI companies to super-villain status, a status in which they positively revel. A serial liar like Sam Altman will someday trip over his own dick and end up in a cell for securities fraud – unless we keep exalting his evil to Satanic scale, in which case he might make himself "too big to jail":
https://time.com/article/2026/05/26/sam-altman-ai-job-losses-openAI-/
Altman is a con-man and a stock swindler, not a super-genius. The more we describe his products as possessing a special kind of durable evil that will endure even after his company fails and he is condemned to history's ash-heap, the more we help Altman raise money for his chatbot Ponzi. Normal technology isn't a cursed artifact. That's something you find in a lich-king's tomb. We need to stop helping Altman burnish his reputation as a lich-king and stop treating AI like it's magic.
There's a technical term for the kind of tech criticism that inadvertently helps tech bros sell their swindle: "criti-hype," Lee Vinsel's term for "tak[ing] the sensational claims of boosters and entrepreneurs, flip[ping] them, and start talking about 'risks'":
https://peoples-things.ghost.io/youre-doing-it-wrong-notes-on-criticism-and-technology-hype/
In other words, to commit criti-hype is to repeat the marketing claims of people like Sam Altman and then add, "(and that's bad)" in parentheses at the end. These guys – these terrible, mediocre, boring-ass losers – are bullshit factories, ejecting fountains of nonsense about AI. The right way to criticize them is to point out that they're lying – not to repeat their lies as warnings.

Hook and Squeeze https://data4democracy.substack.com/p/hook-and-squeeze
#25yrsago Dot-com crash toilet paper https://web.archive.org/web/20010822220826/http://news.cnet.com/news/0-1007-200-6908350.html
#25yrsago Associated Press says a single sentence excerpt is not fair use https://web.archive.org/web/20050717075914/http://www.infoanarchy.org/?op=displaystory;sid=2001/8/17/202249/240
#15yrsago German Pirate Party poised to win first federal election https://torrentfreak.com/german-pirate-party-on-course-to-election-win-110820/
#15yrsago Understanding the Nym Wars https://epeus.blogspot.com/2011/08/google-plus-must-stop-this-identity.html
#15yrsago Journalism school teaches students pre-digital newspaper production techniques https://journoterrorist.com/2011/08/02/paperball2/
#15yrsago 90 percent of US net users don’t know from crtl-F https://www.theatlantic.com/technology/archive/2011/08/crazy-90-percent-of-people-dont-know-how-to-use-ctrl-f/243840/
#15yrsago Bruce Sterling’s Augmented Reality project https://web.archive.org/web/20110827010512/https://www.wired.com/beyond_the_beyond/2011/08/augmented-reality-science-fiction-writer-becomes-augmented-reality-developer/
#10yrsago Woman sues cops because they destroyed her empty house, thinking a suspect was hiding in it https://www.techdirt.com/2016/08/19/woman-sues-after-police-destroy-her-home-during-10-hour-standoff-with-family-dog/
#10yrsago US Army committed $6.5 trillion in accounting fraud in one year https://www.reuters.com/article/us-usa-audit-army-idUSKCN10U1IG/
#10yrsago Candid Republican operators admit that voter ID laws are about disenfranchisement https://www.brennancenter.org/our-work/research-reports/when-politicians-tell-truth-voting-restrictions
#1yrago Become unoptimizable https://pluralistic.net/2025/08/20/billionaireism/#surveillance-infantalism

Melbourne: Enshittification at the Wheeler Centre, Aug 25
https://www.wheelercentre.com/events-tickets/season-2026/cory-doctorow-enshittification
London: AI and the Enshittification of the Media, NUJ (Sep
2)
https://www.nuj.org.uk/learn/ems-event-calendar/ai-and-the-enshitification-of-the-media.html
Brighton: The Reverse Centaur's Guide to Life After AI with
Carole Cadwalladr (Brighton Dome), Sep 8
https://brightondome.org/whats-on/LSC-cory-doctorow-the-reverse-centaurs-guide-to-life-after-ai/
London: The Reverse Centaur's Guide to Life After AI with Riley
Quinn (Foyle's Picadilly), Sep 9
https://www.foyles.co.uk/events/enshittification-cory-doctorow-riley-quinn
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
Victoria: Munro's Books (Oct 20)
https://www.munrobooks.com/events/6113620261020
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
Technofeudal Enshittification (Fucking Cancelled)
https://www.fuckingcancelled.com/p/technofeudal-enshittification-with
Who The Machine Serves (EFF)
https://archive.org/details/effecting-change-who-the-machine-serves
Speculative Fiction for Social Change II (Cool People Who Did
Cool Stuff)
https://pocketcasts.com/podcast/cool-people-who-did-cool-stuff/08cbb840-a6ae-013a-d8aa-0acc26574db2/part-two-cory-doctorow-on-speculative-fiction-for-social-change/937e8800-9404-45a6-b5e3-90ebee2cfaea
Speculative Fiction for Social Change I (Cool People Who Did
Cool Stuff)
https://pocketcasts.com/podcast/cool-people-who-did-cool-stuff/08cbb840-a6ae-013a-d8aa-0acc26574db2/part-one-cory-doctorow-on-speculative-fiction-for-social-change/15ad467c-0832-44c9-91ea-59defd783dba
"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
New Comic: Old School
Girl Genius for Wednesday, August 19, 2026 [Girl Genius]
The Girl Genius comic for Wednesday, August 19, 2026 has been posted.

it's actually shaving cream
Ninth Circuit Ruling Will Force Online Platforms That Host User Speech to Fight Lengthy and Costly Lawsuits Before They Are Dismissed Under Section 230 [Deeplinks]
A federal appeals court just made it harder for online services, big and small, to get lawsuits over user speech dismissed early. In California v. Meta, a Ninth Circuit three-judge panel held that the lower court’s denial of Section 230 immunity to Meta is not immediately appealable. The misguided ruling has the potential to have widespread impact and to threaten the free speech of all internet users.
The ruling is bigger than a loss for Meta, which has the resources to defend itself against these lawsuits. The court’s ruling signals that all online services (and internet users) that host others’ speech—including those without Meta’s deep pockets—must bear the burden and expense of fighting lawsuits that Section 230 ultimately precludes. This will have real consequences, incentivizing online services to take down users’ speech in response to spurious legal threats, filter speech preemptively, or simply stop offering a place for people to speak online. So even though some may think that Meta is not a sympathetic company, the ruling should raise concerns for anyone who cares about an open and free internet.
A little procedural background is necessary to understand the implications of the Ninth Circuit’s ruling.
Meta had moved to dismiss a group of social media addiction cases brought by state attorneys general, school districts, and local governments. Meta argued that Section 230(c)(1) immunity applies because the plaintiffs’ claims, framed as seeking to hold Meta liable for allegedly harmful platform features, really seek to hold the company liable for publishing decisions related to third-party content. Section 230 is one of the most important laws supporting online free speech, because its protections for online services enable them to distribute users’ speech at an unprecedented scale.
The district court ruled that Section 230 does not apply to certain features (and does apply to others) and so denied the motion to dismiss on the claims related to those features. Meta immediately appealed invoking appellate jurisdiction under 28 U.S.C. § 1291, but the question before the Ninth Circuit was whether the appeal was legally appropriate.
Under Section 1291, U.S. circuit courts generally only have jurisdiction to hear appeals of “final decisions” from the district courts. Final decisions are trial court orders ending a case, or come after a trial on the merits. Section 230 appellate cases often arise from a district court’s grant of a defendant platform’s motion to dismiss the plaintiff’s case based on Section 230. Typically, a district court’s denial of a defendant’s motion to dismiss is not a final order—it simply means that the case may continue to discovery and summary judgment or trial, after which time an appeal would be appropriate.
However, federal law allows for “interlocutory appeals,” which are appeals of orders that do not end a case but nonetheless are allowed because they involve important legal issues. For example, there is an exception to Section 1291 called the “collateral order doctrine”—at issue in this case—allowing for immediate appeal if, as the Ninth Circuit explained here, “holding a trial would imperil a substantial public interest.”
Inherent in the collateral order doctrine is the consideration of whether an immunity like Section 230 provides mere “immunity from liability” or a more robust “immunity from suit.”
An immunity from liability does not require an immediate appeal and so demands that Section 1291’s final order rule be followed. That’s because waiting until the end of a case before an appellate court can consider the trial court’s denial of immunity does not prejudice the defendant. The appellate court may overturn the trial court and grant the immunity, and thus the defendant’s right to be immune from liability would be vindicated on appeal.
Immunity from suit is different. It means that the public interest demands that a defendant be able to get out of a case as early as possible and avoid having to litigate the case to the end. The U.S. Supreme Court has held, for example, that qualified immunity is such an immunity, and that a district court’s denial of qualified immunity for a government official is immediately appealable under Section 1291, notwithstanding the lack of a final order. The idea is that the public interest is served when government officials are free to act without fear of consequences when established rights are not implicated, and so determining as soon as possible whether their acts are immune serves that public interest.
Here, the Ninth Circuit held that the district court’s denial of Section 230 immunity for Meta was not immediately appealable under Section 1291’s collateral order doctrine because the immunity is not from suit, but rather from ultimate liability. The panel’s absurd result contravenes the text of Section 230, the statute’s policy goals, and the court’s own prior rulings.
Meta rightly argued that Section 230(e)(3) plainly states, “No cause of action may be brought and no liability may be imposed under any State or local law that is inconsistent with this section.” The panel dismissed this argument, stating that this language likely amounts to “redundancy” reflecting only immunity from liability. The court failed to side with the more reasonable position that statutory language should generally not be interpreted as superfluous.
Meta also reminded the panel that the Ninth Circuit has many times over the past two decades framed Section 230 as both an immunity from liability and an immunity from suit. The panel also dismissed this argument, stating, “It is true that we have used the phrase ‘immunity’ somewhat loosely in our section 230 jurisprudence.”
But “loosely” is a gross mischaracterization—the panel did not discuss a seminal prior ruling, Fair Housing Council of San Fernando Valley v. Roommates.com (2008), in which the entire Ninth Circuit, not just a three-judge panel, explicitly ruled that Section 230 is also an immunity from suit. That court rightly explained that Section 230 “must be interpreted to protect websites not merely from ultimate liability, but from having to fight costly and protracted legal battles.”
Why is it important that social media platforms and other internet intermediaries (and their users) have immunity from suit for engaging in publishing activities related to third-party content—and thus a right to immediately appeal when Section 230 immunity is denied?
The Ninth Circuit panel here, using their own words, failed to “evaluate the interests that would be lost through rigorous application of a final judgment requirement” and failed to consider the “substantial public interest” served by treating Section 230 as an immunity from suit.
Section 230 immunity, contrary to what some argue, is not a gift to Big Tech—it applies to all internet intermediaries, big and small, from the large social media companies to smaller entities like community message boards and local ISPs. It even protects internet users who forward others’ emails or host comments on their blogs. In turn, the law supports the free speech of all internet users.
While it is helpful when an internet intermediary can ultimately benefit from Section 230 immunity, if a trial court’s early denial is not immediately appealable, that means the intermediary must bear the extended logistical and financial burdens of defending itself. Under the Ninth Circuit’s logic, anyone hosting others’ speech online would have to endure the pain and expense of discovery, summary judgment, or trial, before they ultimately can be protected by Section 230.
Congress crafted Section 230 to give internet intermediaries legal breathing room, so that they will be incentivized to facilitate online communication and commerce, allowing the rest of us to go online with minimal barriers to entry, without needing to have loads of money or to know how to code. Congress acknowledged in Section 230 itself, “Increasingly Americans are relying on interactive media for a variety of political, educational, cultural, and entertainment services.”
Yet if platforms, especially smaller platforms, know that they will have to defend themselves for years in court before they can ultimately benefit from Section 230 immunity, this alone will create a perverse incentive, as we have explained, to censor user speech, in order to reduce the platforms’ legal exposure. And this incentive is only exacerbated at scale, where the sheer volume of user-generated content hosted by modern platforms makes legal risk astronomical.
Unfortunately, this opinion seems to be part of larger trend reflecting the Ninth Circuit’s increasing disdain for Section 230, and apparently for free speech rights more broadly. The court similarly held last year in Gopher Media v. Melone (2025)—overruling itself—that a trial court’s denial of a defendant’s anti-SLAPP motion also is not immediately appealable under the collateral order doctrine. This is despite the fact that, similar to Section 230, California’s anti-SLAPP law is intended to allow defendants to get harassing lawsuits meant to silence them dismissed early, lest they be chilled from engaging in lawful speech on public issues due to the risk of being mired in litigation, even if they ultimately win a delayed appeal.
Firefox 154.0 released [LWN.net]
Version 154.0 of the Firefox browser has been released. Changes include extending local network access protections to WebSocket connections, more flexible, per-site configuration of cookie and data clearing, and more.
Scott L. Burson: Git support for Lisp improved in 2.55.0 [Planet Lisp]
[I posted this on Reddit, then realized I should copy it here so it shows up on Planet Lisp.]
In a Git diff, each consecutive subsequence of lines near a difference is called a "hunk". Each hunk has a one-line header that might look something like this:
@@ -316,8 +322,9 @@ int
main(int argc, char **argv)
The numbers indicate which lines of each version of the file appear
in the hunk. The rest of the line is intended to be the first
line of the function, class, or other top-level definition that the
hunk is within. Git finds that line using a regexp
corresponding to the source language. It's just to give the
reader a bit more context; nothing else depends on it — or
should depend on it, anyway, since it can be missing or wrong.
The regexps that tell Git how to find the header lines are called
"userdiff drivers". A driver for Scheme was added a couple of
years ago, but it didn't work for Common Lisp or many other Lisps,
as it failed to match (defun lines, among other
things. I have modified it to be more general, and the
relevant changes are in the recent Git 2.55.0 release.
I was unable to persuade the Git maintainers to name the driver
"lisp", however, given that one named "scheme" already
exists. The argument that Lisp is the family name, and Scheme
one dialect within the family, was not sufficient to overcome their
resistance to having two closely related languages with separate
drivers — understandable, since too lax a policy about adding
drivers would surely lead to there being hundreds of them.
And of course, we couldn't just rename the "scheme" driver, because
people are already using it.
So that's why, starting with Git 2.55.0, the way to get correct
hunk headers for code in Common Lisp, or probably almost any other
dialect of Lisp, is to have a .gitattributes file containing
this line:
*.lisp
diff=scheme
The Scheme regexp is still there and will still match all the same
constructs, but there's also now a much more general regexp that
simply matches any unindented open parenthesis, or (def preceded by one or two
spaces. (The latter is to catch defining forms grouped
together insde a top-level form like eval-when, but without the false
positives that we would get if we didn't require a name beginning
with def.)
The Big Idea: James Patrick Kelly [Whatever]

Humans have been fascinated by robots for as long as the idea of a machine with a heart has existed. Hugo award-winning author James Patrick Kelly is no exception, evidenced by his newest collection of short stories all about robots and AI. He even threw in two brand new pieces just for The Book of Bots, so even if you’re a long time fan you won’t want to miss this release.
JAMES PATRICK KELLY:
It’s 2026 and we’ve got robots. We’ve got AI. We‘ve got digital agents. Why are we surprised?
Should we blame ourselves, fellow citizens of the science fiction community? Maybe. Weren’t our writers supposed to prepare us for these garrulous chatbots? LLMs that could make a movie in a minute from a single prompt? Shouldn’t readers have voted with their credit cards for the kinds of cutting edge stories that acknowledged that Isaac Asimov’s Three Laws were at best aspirational? I knew Isaac, and revere him as giant of the Golden Age, but I Robot was published in 1950.
And why did we all make fun of those working to develop AI when they made predictions about the next breakthrough? Remember the old tech-industry wisecrack? AI is ten years away — always has been, always will be. The problem was that we didn’t know what AI meant back when and we’re not one hundred percent sure what it means today. But believe this: the things our digital constructs can do right now would have astonished most of the naysayers of the last century.
As long as we’re pointing fingers, let me point at myself. The first robot story in my new collection, The Book Of Bots, is the Locus Award winning “Itsy Bitsy Spider,” published in 1997. It’s an emotional, character-driven tale about a middle-aged woman who reluctantly visits her long estranged father. She discovers that he’s suffering from dementia and that his caregiver is a robot child built to resemble her at age seven.
It’s not the first robot surrogate story ever, but what sets it apart is that the robot assumes the child identity while interacting with the confused father but has its own agenda when talking to the real daughter. And part of their fraught conversation is about ownership, since the robot will be part of the estate when the father dies. Make no mistake: this is a robot story in the Asimov tradition, published in the magazine that bears his name. But Isaac devised his laws in part to defuse the slave narrative in robot literature, but it comes up here and again in the other stories in The Book of Bots.
There are twelve robot and AI stories in the collection. They are about sentient houses and cars and spaceships. There’s a trio of companion bots that have more on their minds than mere sex and a couple of time travelling robots. Some of the stories were award winners or nominees; many were Best of the Year selections. I mention this not so much to boast (of course that’s what I am doing!) but to make the point that this book is very much in the mainstream of genre thinking about robotics and artificial intelligence.
The most recent story, “Je Ne Regrette Rien,” just published in Clarkesworld in this January, is set in a Chinese research facility run by China’s largest robot company. At present the West may be slightly ahead of China in AI development, while the Chinese are well ahead of us in deploying AI in humanoid bodies. Most of the prototype robots in the story are enhanced industrial robots, loaded over time into increasingly advanced bodies, some including ultra-realistic humanoid robots capable of self-programming. Changing bodies changes who the robots are, so while they remember all their previous “lives,” it is as if they are remembering the history of a stranger. Questions of identity often come up in my bot stories.
The stories in The Book Of Bots are presented in chronological order to help make the point that thinking about robots has changed a lot over the last three decades. To document my own evolution on artificial intelligence, I wrote two new nonfiction pieces for the book. “The Comedy of Science” is a look at the history of robots and AI in science fiction based on my own extensive (but by no means comprehensive) reading.
You want to know my influences? Here they are! “Robots on Parade 2026” is science journalism that looks at the current state of robotics and attempts to balance the techbros and their hyperbolic promises against the prophets of AI cultural doom. I’ve been writing a column about sf and the internet for Asimov’s Science Fiction Magazine for more issues than I care to remember and both pieces represent the fruits of my own best research for that column and serve as guides to the big ideas that have informed these stories.
Despite all the thought I’ve put into this book, I still haven’t wrapped my head around AI. I take cold comfort in observing that people smarter than me are flummoxed too. But The Book Of Bots is the best I’ve got.
For now.
The Book of Bots: Amazon|Barnes & Noble|Bookshop
I'm thinking about writing my blog over in RSS.chat. It has most of the features I like, titles are optional, no character limit, links are supported, because it's the web. It supports discourse the way I like it, where every comment is a post, no difference, and you can anchor threads in different places, not just the place it was born. It's got a simple structure, without being complex. Small parts loosely joined, every part replaceable. Much more than open source. And naturally distributed.
Why do people care if Claude puts watermarks on text it wrote. It's screwing with its writing, not yours. As a person who publishes their own writing, and carefully labels it when it's written by an AI bot (docs, change notes, podcast show notes, quotable things it said), I want people to be able to tell that I wrote it, this is what I thought, I'm not just shoveling random written sludge to people, sloshing around, devaluing every bit of real writing in its midst. I bet teachers love the idea. Why does everyone have to have an opinion about every damned thing? And of course I have even more to say on the subject.
Meanwhile Claude wrote test files in many of our S3 buckets
last night, one of which knocked FeedLand off the air. It did a
scan to see what other damage it had done, and there was a lot. It
went through specific orders that said it can't do those things. So
I have no idea how useful these things could be if it destroys
stuff in deployed projects with real users. FeedLand was down for
over an hour, and stressed me out no end. Really fucked up.
Sins and Punishments [Nina Paley]
Further to this Handy Guide to Sin and Guilt Offerings, I asked Grok to generate this table of Old testament sins and their corresponding punishments. Now you know what to do! You’re welcome.
| Sin / Offense | Reference(s) | Punishment |
|---|---|---|
| Sacrificing children to Molech (child sacrifice) | Lev 20:2–5 | Stoned to death by the people; God also sets His face against the person (and family/followers if the community fails to act) and cuts them off |
| Turning to mediums or spiritists | Lev 20:6; Lev 19:31 | God sets His face against the person and cuts them off from their people |
| Being a medium or spiritist (man or woman) | Lev 20:27 | Put to death by stoning; their blood is on their own head |
| Witchcraft / sorcery, divination, interpreting omens, casting spells, consulting the dead (and related occult practices) | Deut 18:10–12; also Exod 22:18 (sorceress) | These practices are detestable; the nations are driven out because of them. (Death penalty is applied to practitioners in related texts such as Lev 20:27) |
| Cursing one’s father or mother | Lev 20:9 | Put to death; bloodguilt is upon them |
| Adultery (with a neighbor’s wife) | Lev 20:10; Deut 22:22 | Both the man and the woman put to death |
| Sexual relations with father’s wife (incest) | Lev 20:11 | Both put to death; their blood is on their own heads |
| Sexual relations with daughter-in-law (incest) | Lev 20:12 | Both put to death; their blood is on their own heads |
| Homosexual acts (a man lying with a man as with a woman) | Lev 20:13 | Both put to death; their blood is on their own heads |
| Marrying a woman and her mother (incestuous marriage) | Lev 20:14 | The man and both women burned to death |
| Bestiality (man with animal) | Lev 20:15 | Man put to death; the animal also killed |
| Bestiality (woman with animal) | Lev 20:16 | Both woman and animal put to death; their blood is on their own heads |
| Sexual relations with a sister (or half-sister) | Lev 20:17 | Both cut off / removed from their people; the man bears his guilt |
| Sexual relations during a woman’s menstrual period | Lev 20:18 | Both cut off from their people |
| Sexual relations with an aunt (mother’s or father’s sister) | Lev 20:19 | Both bear their own guilt / responsibility |
| Sexual relations with an uncle’s wife | Lev 20:20 | Both bear their guilt and will die childless |
| Marrying a brother’s wife (while brother is alive) | Lev 20:21 | They will be childless |
| Blasphemy (cursing / uttering the name of the Lord in a curse) | Lev 24:10–16 | Put to death by stoning by the whole community (applies to native and foreigner alike) |
| False prophet or dreamer who leads people to follow other gods | Deut 13:1–5 | Put to death; purge the evil from among you |
| Enticing others (even close family or friends) to worship other gods | Deut 13:6–11 | Put to death by stoning (the enticer’s hand first, then the people); show no pity |
| A whole town turning to idolatry | Deut 13:12–18 | Investigate thoroughly; if true, destroy the town and its people and livestock by the sword; burn the town as a whole burnt offering; leave it a permanent ruin |
| Worshiping other gods or the heavenly bodies | Deut 17:2–7 | Stoned to death (after thorough investigation and on the testimony of two or three witnesses) |
| Rebellious / stubborn son who will not obey parents (glutton and drunkard) | Deut 21:18–21 | Parents bring him to the elders; all the men of the town stone him to death; purge the evil from among you |
| A betrothed virgin who is promiscuous (found not to be a virgin) | Deut 22:13–21 | Stoned to death at the door of her father’s house |
| Rape of a betrothed virgin in the city (she did not cry for help) | Deut 22:23–24 | Both the man and the woman stoned to death |
| Rape of a betrothed virgin in the countryside | Deut 22:25–27 | Only the man is put to death (the woman is innocent) |
| Murder (intentional) | Lev 24:17; Deut 19:11–13 | Put to death (no ransom or refuge for the intentional murderer) |
The post Sins and Punishments appeared first on Nina Paley.
Frontier observations in 2026 [Scripting News]
As I've been writing test scripts for the Frontier project, I was finding omissions or mistakes one at a time. Finally I asked Claude to research this. Where are the holes you didn't fill as we were going along? The list is surprisingly long. Then I asked it to look at other things that were left unimplemented. There were lots.
Claude is not really at fault for any of this. The first goal we went for is write enough of Frontier so my nodeEditor build scripts will run. Then it took on lots of other jobs. And all that time I never thought to ask "what haven't we implemented, or stubbed up?" Then I did, and was shocked at how many verbs there are. I had forgotten, I'm not sure I never even knew, because it's so easy to add a whole section to a verb set, and you only see the details if you expand the table.
I want to try to draw people who were serious Frontier developers in the 90s and 00s and beyond, because there are questions that have come up about what we should bring with us. I'll start with an example. Here's an outline of the system.verbs.builtins.tcp table. The question is -- how much of this code should be brought across from the 90s to the 20s? Obviously the DNS verbs. There aren't many and we used them all the time. FTP verbs? Borderline. We don't use FTP very much these days. We had an IM table with verbs and drivers. I remember when Jake worked on this, but I don't think it got much beyond a demo. And the very lowest-level stream-oriented TCP verbs? Well tcp.httpClient needed them, in the 90s and it was the basis for all our HTML and RSS work, our first feed reader built on that code. But HTTP support built into Node.js is pretty great in 2026. We'd be foolish to do anything but call into it. That's one of the reasons I migrated to JavaScript in 2013. There are plenty of other examples like this, and my answer is generally we'll save them for last, and if no one asks about them, we'll retire them. Figure if a platform hasn't updated in 12 years, and doesn't run on any hardware anyone ships before this transition, we have less to worry about than normal. And if need be, we always can add them back at a future date.
Another example, until late last week Claude was arguing with me about the correct use of directions in the op.go verb. This is so incredbily well documented, over and over in so many places. And it knew about all of them, yet it still thought its choices for directions made more sense. The question had already been answered in the mid-80s.
It also thought it was a language that ran in the context of a Unix OS, like Python or PHP. Yes, it could be used that way, but all of its advantages based on integration of the database, language, verb set, runtime would be missing. It's an OS of its own that runs on many OSes, now it will run anywhere Electron runs, so in the future it will have access to everything, on the desktop and the server. You could even run a headless version, we tried that for a week or so and hated it. Too limited and too slow.
I'd like to get feedback from people with experience, and honestly people who are good to work with. :-)
Trying Out Thrive Market: The Last Installation Of My Online Grocery Shopping Membership Journey [Whatever]
With both Misfits Market and Martie Goods having been
reviewed, it’s finally time to talk about the third
and final horse in the race, Thrive Market. Just like Misfits
Market and Martie Goods, it’s an online grocery store that
claims to give deep discounts on good products to their customers.
One difference I noticed with Thrive Market is that it seems to be
much more of a healthy-living and dietary-restriction-conscience
type of vibe compared to the other two. There are a lot of
gluten-free items, dairy-free products, more organic and
“clean ingredients” things to choose from.
As with the other two companies, you need an account for Thrive Market. While Martie Goods had a free membership, Misfits had a free and a paid option (granted, the paid option is $69 a year), Thrive actually does require payment for their membership. Their membership is an upfront cost of $60 for the year. Pretty steep entrance fee, if you ask me.
Of course, there are a couple of perks that come with the entrance fee, such as $20 off each of your first three purchases (as long as you hit a $49 minimum on those purchases), so there’s your sixty bucks back right there, really. You also get free shipping on orders over $49, and you get to pick a welcome gift, one of which is “valued” at $60 (that’s the one I picked, of course).
Thrive Market, unlike Martie Goods, has meat, seafood, and frozen items. They also have a huge household/cleaning section, a baby and kids section, and even a pet department. They definitely feel the most like a standard grocery store compared to the other two’s more limited selection. Despite the variety, I really only got shelf-stable items and some pantry things.
So let’s see the haul and talk about how much everything cost:

For my free gift, I chose the “Pantry Staples Bundle,” which consisted of the jar of almond butter, the gluten-free blueberry muffin and bread mix, and Thrive’s very own cookbook, Healthy Living Made Easy. I’m not entirely sure that that equates to a $60 value, but perhaps I’m downplaying the cost of the cookbook; it does have over sixty recipes in it, after all. (I skimmed through the cookbook and as I mentioned earlier a lot of it seems to be very suited for people with dietary restrictions.)
I was excited to see Kind Bars, because I actually buy them a lot and they are quite pricey. This box of a dozen peanut butter banana dark chocolate protein breakfast bars was only $4.84. I was also glad to see Boulder Canyon chips, as I have really been liking that brand lately. The bag wasn’t much cheaper than it usual is, though, only like fifty cents off of regular grocery store price.
I normally don’t feel compelled to buy bone broth, but lately I’ve been waking up with a sore throat in the mornings and it sounded nice to sip on some warm broth. It was six bucks for the pint, which the website says is half off the usual price. As for the miso paste, I decided to get some because white miso is the kind I use most commonly when cooking and my local Asian market didn’t have white specifically in stock last time I was there. Plus, I usually have to buy rather sizeable cartons of miso paste there, so this smaller squeezy bottle was appealing. It was $3.79.
The most exciting thing, in my opinion, was their selection of tinned fish. They had a great variety of options, and you all know how much I love tinned fish. I decided to try Patagonia’s smoked mussels and their lemon and herb mussels at $6.93 a tin, as well as their sardines in coconut curry for $6.74. I will say those are pretty decent prices for tinned fish! And the coconut curry sardines were so good and flavorful, just the right amount of heat in the curry. I ate ’em right outta the tin.
The only non-food item I bought was a pack of bee’s wrap for storing food, and that was the most expensive item at $17.99 for the three pack.
Oh, and here were the beverages I decided to try:

The six pack of lychee flavored sparkling water was $7.59 which is definitely a little pricey, but I was very excited about the lychee flavor (they also have yuzu and calamansi). I actually quite like them! It’s a cute can design and it’s only 20 calories a can. It’s definitely got that drier, crisp sparkling water aspect while still having some good flavor. As for the ube vanilla oat milk latte, I’m so sad to say I didn’t like it at all. I was thrilled about an ube latte in a can, but I just was not a fan. I have yet to try the strawberry matcha cans from the same brand, but each can was $3.79. The pistachio latte carton was $6.45, but it says you get two lattes in each carton. I am looking forward to trying it, as pistachio is one of my favorite flavors.
My total from everything was $93.23, but then after my twenty bucks was taken off and taxes added it came out to $76.62.
All in all Thrive seems pretty okay! Shipping only took two days, so I got everything pretty quickly. I would say that Thrive is a good choice for you if you’re someone who has a dietary restriction such a gluten-free, dairy-free, or vegan, or if you really want to only buy healthy snacks and healthier options all around. I do think that $60 is a big ask just to shop somewhere, but the discounts are decent and they have a huge variety of items.
If you feel like checking it out, I have one final referral code for you lovely folks: 40% off your first order! That’s honestly pretty good compared to the other two’s referral code benefits.
Overall, I think my favorite out of the three online grocery delivery services with a membership and a focus on discounted items is… Misfits Market! I really like that they have a free option and a paid option. I think I got the most bang for my buck through them. But honestly I’d recommend all three options, I think it just depends what you’re looking for. Plus, I don’t even have to choose which of the three memberships to keep, because they all work differently enough that I could honestly use all of them without it feeling like I’m just getting the same service and same products over and over again (plus I already paid for a year of Thrive, so I might as well continue to use it).
Anyways, if you order something let me know what you get, and have a great day!
-AMS
Pluralistic: IP can't save you from AI (18 Aug 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

You don't have to believe that AI "art" is any good (I don't), nor do you have to believe that AI "art" can be any good (I don't) to understand that the reason that the capital markets are putting trillions into AI is that they believe they can fire workers of every kind and replace them with AI:
https://pluralistic.net/2025/03/18/asbestos-in-the-walls/#government-by-spicy-autocomplete
I'm an artist and a worker. I want to protect my labor interests. So do my peers from across the "creative industries." But a sizable group of my peers think the way we're going to protect our interests is by expanding copyright so that it's unambiguously illegal to scrape the internet, analyze the files retrieved by those scrapers, and publish that analysis (a process more familiarly known as "training AI"):
https://pluralistic.net/2023/09/17/how-to-think-about-scraping/
This is a losing strategy. First, because banning scraping, or requiring permission to count the elements in creative works, or demanding a license to publish collections of facts about copyrighted works will inflict enormous collateral damage on a wide variety of socially beneficial activities. From the OED to search engines to the Internet Archive, so many beneficial activities rely on the fact that copyright permits unlicensed collection and analysis of every copyrighted work as a single, massive corpus, and copyright allows the publication of that analysis without permission from the creators of the works it analyzes.
A lot of people who are (rightfully) very angry about AI dispute this. They believe that they can craft an "AI training" law that would ban scraping, analysis and publication when these activities are part of AI training, but not when they're undertaken for a benign purpose. I am very, very skeptical of this. After 25 years of watching internet policy go badly awry, to the great detriment of workers of all kinds and everyday users, it is my professional, considered opinion that drafting a statute that only stops these "bad" activities is much, much harder than these people think, and may actually be impossible.
I think some artists advocating for a copyright-based solution to AI's war on labor understand this and have decided that they're willing to catch a lot of dolphins in these legal tuna-nets they're hoping to get from Congress. I get that: there are always trade-offs, and the perfect can't be the enemy of the good.
But I think they're making the wrong trade-off, and not just because I value archives, accountability corpuses, large-scale linguistic research and search engines. I think they're making the wrong trade-off because copyright will not protect their livelihoods from AI-based wage erosion.
Here's why: the theory of copyright as an "artist's right" is premised on the idea that we artists get these exclusive rights, which we use in our bargaining with media companies and other intermediaries. It's a (pseudo) property right, and it's sub-licensable. Just as an entrepreneur might get the contract to supply catering for a sports stadium and then parcel out the pretzel stand, beer bar, and pizza concessions to subcontractors, we're meant to sell our English rights, foreign language rights, graphic novel rights, film rights, audio rights, (and so on) to a variety of media companies.
To bargain successfully, it's not only necessary for you to have something valuable to trade: you also need to have leverage. You need to have options. The other side has to believe that if they lowball you, you will go do a deal elsewhere.
This is where copyright fails to serve creative workers. Even at the best of times, the world naturally produces an oversupply of would-be professional artists, and a sufficiency of the talented to fill most of the workaday niches in our field. Even exceptional artists – and exceptional works of art – are often commercial flops, for reasons that aren't always well understood (though sometimes it's a self-fulfilling prophecy, where a media company buys the rights and then loses confidence in the work and does not exert itself in the marketing of the work).
These are not the best of times. Decades of lax antitrust enforcement has boiled the "creative industries" down to 5 publishers, 4 studios, 3 labels, 2 app stores, and one company that's in charge of all the ebooks and audiobooks.
Since the 1976 Copyright Act, Congress has acted time and again to broaden copyright. Today's copyright lasts longer, restricts more uses, extends to more kinds of works, and carries stiffer statutory penalties for infringement ($150,000 per download!). The media companies we creative workers bargain with are larger, richer and more profitable than at any time in history – and we are poorer. The share of those massive profits that ends up in our pocket is lower than ever – and we don't just get smaller slices of that larger pie, those slices are smaller than the slices we used to get, when the pie was much smaller. The rising tide of copyright expansion lifted our bosses' boats – even as our dinghies filled with bilge and sank.
How could we get so much more to bargain with, only to bargain it all away, for less money than we used to get for a much smaller bundle of rights? Simple: giving us rights did not give us leverage. Giving us more rights without giving us more bargaining power is like giving your bullied schoolkid extra lunch-money. There's no amount of lunch-money that will get that kid fed; but if you keep increasing how much money the kid gets, the bullies will end up so rich that they can afford to run a global campaign demanding that we all think of those poor hungry kids and send them even more lunch money.
Copyright's failure to deliver for creative workers doesn't mean that we're doomed to poverty. Our works are generating record profits for our bosses, and there are plenty of ways to change the "distributional outcomes" (the phrase economists use for "who gets what") in arts/labor policy. In 2022, I co-wrote Chokepoint Capitalism along with the eminent Australian copyright scholar Rebecca Giblin. The whole book is full of these pro-worker arts policies:
https://pluralistic.net/2022/08/21/what-is-chokepoint-capitalism/
Rebecca and I start from the premise that artists are workers, not the small businesses that our bosses insist we see ourselves as. The idea that an artist is an LLC with an MFA fits in very neatly with copyright: you're getting this bundle of exclusive rights from Congress and then you bargain, business-to-business, with other companies out there in the world, selling those rights for the best price you can get. This approach rarely works, and when it does, it works badly. 50 years of more copyright, richer bosses, and poorer artists put the lie to the "LLC with an MFA" approach.
If we're workers, then we derive our power from labor rights. The Writers Guild – the only creative workers in world history to have comprehensively beaten AI in their workplace – won their AI fight with a strike:
https://pluralistic.net/2023/10/01/how-the-writers-guild-sunk-ais-ship/
The Hollywood guilds are able to pursue a limited form of "sectoral bargaining" (where all the workers in a field bargain with all its bosses) called "multi-employer bargaining." Bosses hate sectoral bargaining, and in 1947 they got it banned outright through the Taft-Hartley Act.
Getting other kinds of creative workers into multi-employer bargaining arrangements will be a lot of work – and repealing Taft-Hartley and restoring sectoral bargaining will be even harder. But just because it's hard to do the thing that works, it doesn't follow that we should do the easy thing that doesn't work.
Compared to winning more labor rights, getting more copyright will be easy. That's because our bosses want more copyright. When we demand more copyright, our bosses – the most powerful, profitable media companies in human history, grown rich off our labor – will fight alongside of us.
But media companies don't want to stop AI from depriving us of our wages. Quite the contrary! The whole reason that the Writers Guild had to go on strike was that movie studios – not Openai or Anthropic – wanted to replace them with AI. The same studios that are suing the AI companies for "mass copyright theft" have made it very clear that they want to buy chatbots from those AI companies and use them to erode our wages and thin our ranks. The copyright lawsuits our bosses are waging against the AI companies are intended to force tech companies to pay for licenses before they train their chatbots on our work. But they won't be paying us for those licenses – they'll be paying our bosses.
The AI copyright fight isn't being fought to protect your wages – it's being fought to see whether your lost wages end up in the pockets of a tech boss or a media boss. AI copyright suits are a fight over who's going to get the lion's share when they eat you up for dinner. They're not a way to keep you off the menu.
This becomes more obviously true with each passing day, and this morning, the world got its clearest example of what a poor substitute copyright is for fundamental human rights, like labor rights and privacy rights.
Last year, Spirit Airlines went bankrupt, a casualty of a monopolized aviation sector and Trump's oil price surge. Ever since, vultures have circled its carcass, picking off its assets in a string of auctions conducted by Spirit's bankruptcy trustees. Today, those trustees announced that they had sold all of Spirit's employees' data to Google, for use in AI training:
https://www.axios.com/2026/08/17/google-spirit-airlines-bankruptcy
Every email, every memo, every calendar entry. Oceans of sensitive, personal information, all to be shoveled directly into the bottomless maw of Google's AI training systems. This training data includes messages between colleagues and with outside parties about workers' romantic lives, their health, their family situations. These workers' most private lives will end up as fodder for a Google chatbot.
Now, all of these workers have a copyright in all of that work. Under international copyright treaties and US law, copyright "inheres at the moment of fixation of a work of human creativity." The very instant a worker sets fingers to keyboard and types out a message with even the smallest quantum of creativity, a new copyright springs into existence, giving the copyright holder 90 years' worth of control over it.
But even though every one of those emails and messages and memos was written by a human being working for Spirit, the copyright over those works does not belong to the workers. Every single one of them will have signed an employment agreement that designates their emails and other copyrightable work as "works made for hire," owned by Spirit Airlines, which means that their work is now an asset in Spirit's bankruptcy estate. That's why all that personal information is about to be transferred to a new corporate owner, Google, who can do anything they want with it.
We know how terrible this kind of disclosure will be for workers. In 2001, the criminal enterprise Enron collapsed after the extent of its fraud was revealed. In the ensuing litigation, Enron's bankruptcy overseers decided that it was too expensive to purge the company's email servers of personal information before entering it into evidence. That meant that once the court battles were over, all the Enron employees' emails entered the public domain as part of the court record:
https://en.wikipedia.org/wiki/Enron_Corpus
The "Enron Corpus" is a foundational data-set in modern computer science. Academics analyzed the data to do pioneering work on machine learning and social graph theory, which found its way into the design and operations of social media companies, who learned how to spot and manipulate social connections by studying it.
The Enron Corpus isn't just a data-set, though. It's a privacy catastrophe, full of sensitive personal information that haunts the 158 employees whose correspondence is now permanently afloat upon the internet.
Why was the Enron Corpus so exploitable? Because US labor law does not protect this kind of sensitive information when it is in your employer's hands. In fact, if your boss ends up with a trove of your personal information in the form of emails, calendar entries and files, you will typically be blamed for it: "Why did you use your work computer for personal activities?"
But anthropologists who study computer usage have known for decades that everyone ends up with personal data on their work devices. What's more, this problem is only getting worse, because (thanks to weak labor laws), we're expected to work longer hours and to be on call when we're not at the job, which means that you're often dealing with personal crises after hours from your desk, and dealing with work crises at home from your sofa.
Any fit-for-purpose labor rights regime would recognize that your privacy rights must extend to the data that finds its way onto your boss's computers, even if you put that data there. Any failure to recognize this bedrock fact gives employers free license to plunder and exploit your personal information.
Of course, labor law isn't the only way to protect private information. While labor law should contain explicit, job-related privacy guarantees, privacy law should protect all our privacy (after all, Spirit's servers are also full of emails and messages from Spirit's passengers).
Unfortunately for anyone who ever flew on Spirit – or anyone who worked for them – American privacy law is all but dead. America's last consumer privacy law went into effect in 1988, when the Video Privacy Protection Act made it illegal for video-store clerks to disclose your VHS rental records.
Google says it won't use your profile or frequent flier info to train its model, but they haven't made the same promise about the millions of messages that passengers exchanged with the airline. Google has also promised to use "de-identification" algorithms to purge the Spirit customer, supplier and employee data of personal information. But "de-identification" is a pipe-dream, widely understood by security experts as a form of wishful thinking by companies that want to exploit your personal information while still insisting that they aren't violating your privacy. In reality, "de-identified" data is always vulnerable to "re-identification" attacks:
https://pluralistic.net/2021/04/30/dox-the-world/#experian
The collapse of privacy and labor rights in post-Reagan America and the mass expansion of copyright over the same period are part of the same phenomenon, aspects of two generations' worth of policies designed to benefit capital at the expense of workers, and corporations at the expense of consumers.
As consumers, we're told to substitute shopping for legal rights: if a corporation wrongs you, it's easier and quicker to "vote with your wallet" than it is to sue them or ask the government to intervene. Substituting shopping for politics has been a total failure. Shopping your way out of a monopoly is like recycling your way out of a wildfire:
https://pluralistic.net/2026/05/21/purity-culture/#stop-fucking-that-chicken
As creative workers we were told to stop thinking of ourselves as workers altogether, to become small businesses, and to use the LLC With an MFA method to bargain our way out of exploitative arrangements. This, too, has been a failure:
https://pluralistic.net/2026/03/03/its-a-trap/#inheres-at-the-moment-of-fixation
The sale of Spirit's data to Google for AI training shows us that privacy and labor rights are indispensable. We can't substitute market mechanisms like comparison shopping or individual contract negotiations for broad, systemic, inalienable rights backstopped by law.
By demanding the copyright our bosses love, we're seeking the right to be angry about AI, even as the AI companies and our bosses cut deals to train chatbots with our work, which they will use to attack our livelihoods.
Once we stop pretending to be small businesses, once we abandon the fantasy of LLCs with MFAs, we can join with every worker in every industry in demanding sectoral bargaining; and with every consumer in demanding privacy rights. Winning privacy and labor struggles means more than the right to be angry about AI – that's the right to do something about it.

Zoomers don't know what Usenet is https://tchotchke.substack.com/p/zoomers-dont-know-what-usenet-is
When the Shortage is the Strategy https://nooneshappy.com/article/when-the-shortage-is-the-strategy/
Can Canada function without American tech? https://www.youtube.com/watch?v=WwoL6OGk_2Y
Elon Musk made flying even worse so Palantir could profit https://www.theverge.com/transportation/981194/faa-air-traffic-elon-musk-peter-thiel-palantir
#25yrsago IP and scientific publishing https://web.archive.org/web/20011001203058/http://www.abc.net.au/rn/talks/bbing/stories/s345514.htm
#20yrsago British air travelers kick brown “terrorists” off their planes https://web.archive.org/web/20060823104858/http://www.dailymail.co.uk/pages/live/articles/news/news.html?in_article_id=401419&in_page_id=1770&ico=Homepage&icl=TabModule&icc=NEWS&ct=5
#15yrsago “Probability neglect”: why policy-makers are constitutionally incapable of formulating evidence-based anti-terrorism policy https://web.archive.org/web/20111015040753/https://opim.wharton.upenn.edu/risk/library/J2011OBHDP_APM,AT,HK_PolicymakersDilemma.pdf
#15yrsago TSA can’t explain why “enhanced patdowns” are legal https://web.archive.org/web/20151203033820/http://flyingwithfish.boardingarea.com/2011/08/18/the-legality-of-the-tsas-enhanced-pat-down-authority/
#15yrsago The Onion: We did a paywall because British people like paying for the Web https://web.archive.org/web/20110911175335/http://www.avclub.com/articles/about-the-onions-new-paid-content-system,60129/
#5yrsago Hench https://pluralistic.net/2021/08/19/failure-cascades/#natalie-zina-walschots
#5yrsago Machine learning's crumbling foundations https://pluralistic.net/2021/08/19/failure-cascades/#dirty-data
#1yrago Charlie Jane Anders' "Lessons in Magic and Disaster" https://pluralistic.net/2025/08/19/revenge-magic/#liminal-spaces

Melbourne: Enshittification at the Wheeler Centre, Aug 25
https://www.wheelercentre.com/events-tickets/season-2026/cory-doctorow-enshittification
London: AI and the Enshittification of the Media, NUJ (Sep
2)
https://www.nuj.org.uk/learn/ems-event-calendar/ai-and-the-enshitification-of-the-media.html
Brighton: The Reverse Centaur's Guide to Life After AI with
Carole Cadwalladr (Brighton Dome), Sep 8
https://brightondome.org/whats-on/LSC-cory-doctorow-the-reverse-centaurs-guide-to-life-after-ai/
London: The Reverse Centaur's Guide to Life After AI with Riley
Quinn (Foyle's Picadilly), Sep 9
https://www.foyles.co.uk/events/enshittification-cory-doctorow-riley-quinn
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
Victoria: Munro's Books (Oct 20)
https://www.munrobooks.com/events/6113620261020
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
Technofeudal Enshittification (Fucking Cancelled)
https://www.fuckingcancelled.com/p/technofeudal-enshittification-with
Who The Machine Serves (EFF)
https://archive.org/details/effecting-change-who-the-machine-serves
Speculative Fiction for Social Change II (Cool People Who Did
Cool Stuff)
https://pocketcasts.com/podcast/cool-people-who-did-cool-stuff/08cbb840-a6ae-013a-d8aa-0acc26574db2/part-two-cory-doctorow-on-speculative-fiction-for-social-change/937e8800-9404-45a6-b5e3-90ebee2cfaea
Speculative Fiction for Social Change I (Cool People Who Did
Cool Stuff)
https://pocketcasts.com/podcast/cool-people-who-did-cool-stuff/08cbb840-a6ae-013a-d8aa-0acc26574db2/part-one-cory-doctorow-on-speculative-fiction-for-social-change/15ad467c-0832-44c9-91ea-59defd783dba
"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
[$] Fedora prepares for the end of AF_ALG [LWN.net]
The Linux kernel's user-space interface (AF_ALG) to the Crypto API has been linked to a number of recent high-profile security problems, including Copy Fail and successor vulnerabilities. It was deprecated earlier this year. Eric Biggers, and other kernel developers, have been working to remove it from the kernel. With that in mind, the Fedora Project is planning to restrict use of AF_ALG in the next Fedora release in the hopes of nudging remaining users of the API to prepare for its eventual removal.
Thomas Lange: LLM usage in Debian [Planet Debian]

After spending many hours on reading all the proposals and discussions the best choice for me is NOTA (None of the above).
We do not need to create new rules for LLM usage, we already have our DFSG and our social contract.
Keep it simple, stupid. Avoid more rules!
Security updates for Tuesday [LWN.net]
Security updates have been issued by AlmaLinux (.NET 8.0, 389-ds:1.4, bind, haproxy, kernel, kernel-rt, libXfont2, nghttp2, and unbound), Debian (calibre, expat, ironic, and linux-6.12), Fedora (coturn, linux-firmware, php-phpseclib, and sqlite), Red Hat (fence-agents, osbuild-composer, pam, resource-agents, and sg3_utils), SUSE (ffmpeg, jetty-minimal, open-iscsi, python, python313-h2, python313-pysaml2, redis, redis7, rsync, sccache, texlive, and wasm-bindgen), and Ubuntu (engrampa, linux-aws-7.0, and linux-azure-fde-5.15).
Zero to Agent in 30 Minutes: From Prompting to Loop Engineering with Ofer Mendelevitch [Radar]
Ofer Mendelevitch, head of developer relations at BAND, used this episode of Zero to Agent in 30 Minutes to trace how coding workflows can give agents progressively more room to work on their own. Using a package version resolver as a running example, he compared step-by-step prompting with loop engineering and then showed how multiple agents can collaborate on the same task.
The shift toward more autonomous coding workflows starts with how the work is framed. By defining goals agents can verify, giving them room to iterate, and assigning complementary agents to review the work, developers can reduce the amount of human intervention required and achieve higher quality for the code generated by the coding agents.
Next week, Craig Hewitt will host Zero to Agent in 30 Minutes to focus on building a voice-first workflow with OpenAI Codex. The episode will show how natural voice commands can operate a development environment, run subagent workers in parallel, and trigger browser-use workflows. It will also cover structured Codex project directories and hands-free system-level execution, with the developer directing the work by voice.
Floating Along [The Daily WTF]
Today's submitter John F. was migrating data from a Microsoft platform to a Microsoft platform, using Microsoft tools. Absolutely nothing could go wrong, right?
Right?
A few years ago, I was working on a migration. We had sold part of our business, and so we had to extract a whole bunch of customer documents and metadata to provide to the buyer. The documents were stored in SharePoint on-premises, so the first step was extracting the metadata and storing it in a SQL Server database.
A colleague had used Microsoft's ETL tool SSIS to get the process started, and it generated a database schema. But after taking over, I wanted to change to PowerShell for greater control. For speed reasons, I decided to use
System.Data.SqlClient.SqlBulkCopy, and getting that going required making sure my PowerShell script had all the correct data types.One of our fields was the customer number. Customer numbers were up to 10 digits, but the first two were usually 0. Now, I prefer storing customer numbers as text, but someone in the distant past thought, This is a number, and SharePoint has a
Numberfield, so I will use that.Under the hood,
Numberfields in SharePoint are actuallyDoubles. Using aDoubleto store something exact like a customer number is not really ideal, but double-precision is absolutely enough to represent 10 digit numbers accurately. So what went wrong?Well, remember we used SSIS to create the original table schema in SQL Server. I then used this table schema to write my script. But it turns out that in SQL Server world, the double-precision type is called
float. If you want single-precision, you have to sayfloat(24). I didn't know this, and so when I saw the SQL Server column as afloat, I enteredfloatas the corresponding .Net type in my script.Oops.
So numbers came out of SharePoint as
double. They were then converted tofloatbefore being inserted into SQL Server. Almost all records were fine, but large customer numbers had their last few digits changed. Testers didn't notice, but fortunately someone picked it up in the full load. We had to generate a list of changed numbers to patch the data after the fact.
LLMs and Contextual Integrity [Schneier on Security]
I have been thinking a lot about AI and integrity. Part of that is contextual integrity. I recently found two papers on the topic.
“CIMemories: A Compositional Benchmark for Contextual Integrity of Persistent Memory in LLMs“:
Abstract: Large Language Models (LLMs) increasingly use persistent memory from past interactions to enhance personalization and task performance. However, this memory introduces critical risks when sensitive information is revealed in inappropriate contexts. We present CIMemories, a benchmark for evaluating whether LLMs appropriately control information flow from memory based on task context. CIMemories uses synthetic user profiles with over 100 attributes per user, paired with diverse task contexts in which each attribute may be essential for some tasks but inappropriate for others. Our evaluation reveals that frontier models exhibit up to 69% attribute-level violations (leaking information inappropriately), with lower violation rates often coming at the cost of task utility. Violations accumulate across both tasks and runs: as usage increases from 1 to 40 tasks, GPT-5’s violations rise from 0.1% to 9.6%, reaching 25.1% when the same prompt is executed 5 times, revealing arbitrary and unstable behavior in which models leak different attributes for identical prompts. Privacy-conscious prompting does not solve this—models overgeneralize, sharing everything or nothing rather than making nuanced, context-dependent decisions. These findings reveal fundamental limitations that require contextually aware reasoning capabilities, not just better prompting or scaling.
“Contextual Integrity in LLMs via Reasoning and Reinforcement Learning“:
Abstract: As the era of autonomous agents making decisions on behalf of users unfolds, ensuring contextual integrity (CI)—what is the appropriate information to share while carrying out a certain task—becomes a central question to the field. We posit that CI demands a form of reasoning where the agent needs to reason about the context in which it is operating. To test this, we first prompt LLMs to reason explicitly about CI when deciding what information to disclose. We then extend this approach by developing a reinforcement learning (RL) framework that further instills in models the reasoning necessary to achieve CI. Using a synthetic, automatically created, dataset of only 700 examples but with diverse contexts and information disclosure norms, we show that our method substantially reduces inappropriate information disclosure while maintaining task performance across multiple model sizes and families. Importantly, improvements transfer from this synthetic dataset to established CI benchmarks such as PrivacyLens that has human annotations and evaluates privacy leakage of AI assistants in actions and tool calls.
Andy Simpkins: My first go at tracking down a kernel bug… [Planet Debian]

A couple of weekends back, I upgraded my home sever. It failed
to restart after running apt dist-upgrade
The only update that was performed was to the kernel, it went
from 6.12.88+deb13-amd64 to
6.12.100+deb13-amd64. I had previously performed an
apt-get upgrade, and rebooted the machine, so I was
pretty sure that this was to blame. This blog entry (is a late)
attempt to document how I went about finding a fix for this issue
so that next time I don’t need as much hand holding as I did
this time around :-)
(1)
Having my machine not boot following an upgrade is pretty rare, but
has happened before. Usually it is because I have done something
wrong so as always confirming I haven’t broken something by
accident is always my first step…
I plugged in a keyboard an monitor to the machine and watched it boot. Being a server this takes a long time (I guess because at this stage of system initialisation we want to test things sequentially)
Watching the system boot I see the usual BIOS/UEFI stages for this machine, followed by the grub menu and the the local screen showed:
Loading Linux 6.12.100+deb13-amd64 ...
Loading initial ramdisk ...
Nothing else. That was it. OK that looks like I have a broken system all right, and at very early stage of the boot process process.
(2)
Breaking into the grub menu and removing the quiet option yields a
little more information (but not much):
Loading Linux 6.12.100+deb13-amd64 …
Loading initial ramdisk ...
EFI stub: Loaded initrd from LINUX_EFI_INITRD_MEDIA_GUID d
evice path
EFI stub: Measured initrd data into PCR 9
and nothing else.
(3) Initial debugging
6.12.88+deb13-amd64 (During boot select
Advanced options from the grub menu followed by the kernel image
wanted)
EFI
stub: Measured initrd data into PCR 9 apart” other
than the usual rantings to “turn off secure boot” (on
this server that currently isn’t turned on – bad
me)(4) Triage
Start looking for where the fault first occurred. At this point I needed help, and given that Sledge was visiting I asked if he would sanity check what I was doing. His initial thoughts were that that /boot had run out of space, but replaying my step (3) with him acting as a ‘rubber duck’ showed that this was something other than PBKAC
Sledge had a quick look, then informed me that between kernel
images 6.12.88+deb13 and 6.12.100+deb13
Debian stable has only had shipped .90 .94 .95 and
.96 kernels. We could easily try them all:
wget each kernel package then install (dpkg
-i) followed by an update-grub, checking that
there was sufficient space on disks especially my small /boot
partition)6.12.95+deb13 and this
worked6.12.96+deb13 yielded the same lock up on boot as
6.12.100+deb13OK I now have the first kernel image that doesn’t boot on my system, time to raise a bug…
Up until
now I have been walking to my garage where the server is located
and standing in front of a rack
with a monitor and keyboard plugged into the machine. However this
machine supports IPMI so I spent a little time getting that up and
running so that I can continue from the relative comfort of my desk
(with lights, a chair and not needing to hold the keyboard with one
hand)
Great I can now grab screen shots from the confort of my desk (unfortunatly they are only screen shots not text files, but at least we can seen the early stage of boot, Post, grub menu and then initramfs before system log happens)
(5) Collating information for the initial bug report
Sledge had mentioned my problem in irc/#debain-kernal where
iam_tj suggested that we try appending
‘debug earlycon=efifb’ to the kernal command line. This
yielded 15 seconds worth of messages before the system locked up
the last few messages being (vmlinuz-6.12.96+deb13-amd64):
[ 14.663477] RCU Tasks: Setting shift to 5 and lim to 1
rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
[ 14.750474] RCU Tasks Rude: Setting shift to 5 and lim to 1
rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
[ 14.838024] RCU Tasks Trace: Setting shift to 5 and lim to 1
rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
[ 14.929752] NR_IRQS: 524544, nr_irqs: 584, preallocated irqs:
16
[ 15.016814] rcu: srcu_init: Setting srcu_struct sizes based on
contention.
[ 15.104011] Console: colour dummy device 80×25
[ 15.191236] printk: legacy console [tty0] enabled
[ 15.278249] printk: legacy bootconsole [efifb0] disabled
Booting the working kernel with the same kernel options yields the SAME messages with slightly differing times, but then continues to login prompt:
[ 14.697466] RCU Tasks: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
[ 14.784936] RCU Tasks Rude: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
[ 14.872067] RCU Tasks Trace: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=20.
[ 14.964000] NR_IRQS: 524544, nr_irqs: 584, preallocated irqs: 16
[ 15.051482] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 15.226079] printk: legacy console [tty0] enabled
[ 15.313751] printk: legacy bootconsole [efifb0] disabled
[ 15.400831] ACPI: Core revision 20240827
[ 15.401415] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635855245 ns
[ 15.401464] APIC: Switch to symmetric I/O mode setup
... and so on
iam_tj also suggested adding keep_bootcon – with
‘debug earlycon=efifb keep_bootcon’ on
vmlinuz-6.12.96+deb13-amd64:
We get a LOT further – and we see a crash / trace-back:
[ 34.285342] BUG: kernel NULL pointer dereference, address: 0000000000000000
I raised bug #1143721 and followed it up with screen captures of the boot sequence (captured from the IPMI client) and files containing the output of dmidecode, lscpu and lspci to kive the kernel team as much information as possible:
[6.12.96+deb13-amd64 debug earlycon=efifb keep_bootcon.tar.gz (application/gzip, attachment)]
[dmidecode.txt (text/plain, attachment)]
[lscpu.txt (text/plain, attachment)]
[lspci.txt (text/plain, attachment)]
(6) Tracking down the bug Git Bisect
The problem with this type of bug is that it is hardware (class) specific, whilst the kernel doesn’t boot on my system, it clearly has worked on machines used by the kernel team, the Debian test and build infrastructure, (otherwise this kernel would never have been released) and everyone else who has upgraded to the newer kernel before I did (otherwise we would be drowning in fails to boot bug reports). Carnil’s excellent response to my bug: Message #15 (and help in IRC) provided me with a detailed step by step guide in how to track down the individual git commit that fails on my system. I had already (with Sledge’s suggestion) made a clone of the stable branch, but was struggling to follow the steps in the Debian Linux Kernel Handbook to re-build a duplicate kernel because I didn’t understand how to obtain the same configuration that Debian used to build the kernel; Carnil’s email provided me the missing steps (Highlighted).
git clone --single-branch -b linux-6.12.y https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git cd linux-stable git checkout v6.12.95 cp /boot/config-$(uname -r) .config yes '' | make localmodconfig make savedefconfig mv defconfig arch/x86/configs/my_def test 6.12.96 to ensure this is "bad" git checkout v6.12.96 make my_defconfig make -j $(nproc) bindeb-pkg … install the resulting .deb package and confirm it fails to boot and triggers the NULL pointer dereference.
Right I can now start to Bisect the problem:
git bisect start
git bisect good v6.12.95
git bisect bad v6.12.96
Rather than use the half step point’s git bisect suggested I was advised in irc to jump straight to the a given commit that from the git log was suspected as the culprit:
git checkout 977855894bca4b87afa50d21e3f3e85a5a0e901f
build and install….
fails…
git bisect bad
git checkout 977855894bca4b87afa50d21e3f3e85a5a0e901f~1 ## ~1 is
the commit beforehand
build and install….
fails…
git bisect good
The entire test tree can shown with git bisect log
and this was submitted as an email to the bug report, we have found
our smoking gun :-)
Finally I would like to thank Carnil, Iam_tj for their time patience and fantastic support in guiding me through finding this regression. Right now kernel bugs are coming in thick and fast with a lot of AI assisted bug hunting, the increased numbers of bugs mean that the kernel team are especially busy. Hopefully our paths will cross and I’ll be able to buy you some beers (or whatever) soon. thank you. Sledge also deserves thanks for putting up with me and pointing me in the right direction (as ever). Lucky for me that he lives nearby so I can provide beers on a regular basis :-)
A great and concise history of the run-up to MS-DOS 2.0.
Yet, there was a nagging feeling that a single-tasking CP/M clone was inadequate for the new generation of personal computers. Digital Research released multi-user, multitasking MP/M-86 in September 1981 and announced the single‑user multitasking Concurrent CP/M in early 1982. In response, Microsoft came up with a plan for tiered approach to its operating systems: single-user/single-tasking MS-DOS at the bottom; multi-user/multitasking XENIX at the top; and in the middle, something called XEDOS: a single-user version of XENIX. This “pyramid of upward-compatible operating systems” was announced in a Byte Magazine editorial in January 1982.
↫ Nemanja Trifunovic
I’ve always found this tiered approach fascinating, and the world surely would’ve looked quite different had Microsoft been able to make it work. I doubt Windows NT would ever have existed, and most of the world would probably be running a XENIX-based Windows today (all else being equal, which is of course unlikely and silly). Regardless, MS-DOS 2.0 contained a few UNIX-like utilities to deal with its brand new support for directory trees and other new features, and even had a /dev directory.
PervertPods: Apple is adding cameras to AirPods [OSnews]
If you thought pervert glasses weren’t bad enough, Apple is taking it up a notch by adding cameras to its AirPods.
Apple is working on camera-equipped AirPods that appear to be nearly ready to launch, based on a video MacRumors found in the macOS Tahoe 26.7 release candidate.
In a short demo, a man holds a book up so the camera in the AirPods can see the title. “With Visual Intelligence, your world becomes savable. See something you like? Just ask me to save it for later,” says the voiceover text.
↫ Juli Clover at MacRumors
AirPods are tiny. I’ve seen people use them at the gym. I’ve seen them on playgrounds. I’ve seen them around swimming pools. People use them at the beach. They’re used at schools. In locker rooms. Tiny cameras in tiny AirPods that can photograph anything in front of the user are a pervert’s wet dream. Abusers are going to love this. Why wear bulky glasses anyone can see and try to demand you take off, when you can wear tiny AirPods that have already been fully normalised in society? Was there not a single woman or parent on the team that made this?
All over the United States, people are destroying Flock surveillance cameras. More and more communities are rising up and demanding these things removed from their streets and neighbourhoods. The awareness of just how pervasive mass government surveillance has become is growing, and Silicon Valley’s complicity is not exactly a secret. And in this climate of rapidly growing concern and anger, Apple is going to add tiny cameras to its tiny AirPods. Was there not a single person of colour or protester on the team that made this?
How detached from reality do you have to be to greenlight something like this? Does anyone – regardless of skin colour, gender, or political leaning – want even more cameras around them?
It’s not technically a tax. Taxes produce valuable public benefits, like medical research and parks. This is simply legal theft.
Amazon makes nearly a billion dollars in profit from search ads. Every week. Each week, they sell merchants and publishers enough search-distorting ads to capture a billion dollars in revenue. Amazon makes enough in search ad revenue to give every single one of their employees a $35,000 cash bonus and still have change left over.
My publisher is terrific, and they’re working hard to introduce people to my new book. Last week, they began buying search ads on Amazon.
At first glance, this is compelling. Someone who isn’t sure what they’re looking for, who is looking for a book or a kitchen appliance, might find one if the right ad showed up at the right time.
But of course, that’s not what yields, or what most of the ads you see on Amazon do.
If you’re searching for an air fryer, Amazon already knows quite a bit. They know the best-reviewed, least-returned, best-priced model. The only purpose of the ads is to get you to pick an air fryer that isn’t that one (or for the best air fryer, to keep you on track to buy the one you wanted in the first place). The ads make the search worse. [Cory wrote about this three years ago, and the scale has already doubled.]
When there are plenty of ads, the maker of the best air fryer now has to bid on ads as well, if only to protect the sales they were entitled to in the first place. Businesses continue to buy the ads—not because they’re dumb, but because the system has created a situation with few options. Folklore implies that buying the ads somehow shifts how search responds in the long run, even after the ads stop running, but there’s little data to confirm this.
Traditional ads increase demand. We see something that’s clearly an ad, it might spark desire, and sales go up. But zero-sum search ads aren’t like that–the total sales in the category stay the same, and merchants are merely competing for a share of a static pie. This study argues that an ecommerce site with search ads actually sells fewer items than the same site without ads.
The highest-yielding ad my publisher has tested so far is the search “Seth Godin The Knot“. It costs about a dollar per click. My publisher is paying Amazon a dollar to show you an ad for the book you went to buy in the first place.
Who ends up paying the more than $50 billion a year spent on these ads? It’s not the sellers. Sellers can’t make heartfelt donations for long. It’s you. By making the marketing of products significantly less efficient, Amazon’s theft makes products more expensive or sucks the energy out of the development of new products.
It leads to two perverse side effects. First, producers realize that if brand reputation matters less than a budget for clicks, they will shift to shoddy and cheap versions of their products so they have a bigger budget for clicks. And second, Amazon (and Google before it) have an incentive to make their organic search results worse–giving producers more incentive to buy more ads.
For decades, Amazon created value for consumers by lowering the price of just about everything. And they opened the doors to merchants who didn’t have sufficient distribution. They claimed to be customer-centric, and they were.
I don’t think they can claim this any longer. The ad system they built isn’t illegal, but it’s pretty clear who it’s for.
Amazon is stealing from the customers they said they were here to serve.
Quake shareware, a CD-ROM just a little too full [OSnews]
I was around when Quake was launched, but I was entirely unaware of this story.
By June 1996, after three years of hard work, id Software had completed their next title, Quake. As for their previous title, they were going to release both a shareware version and a full version of their game. Since it used a mere 22 MiB of storage, people at id Software had the idea of leveraging the remaining capacity of a CD-ROM. Why not include encrypted versions of the full id catalogue of games? Not only this would cut out the middlemen, it would give instant access to gamers with a simple phone call and a credit card.
The concept was implemented. The CD was announced on July 3, 1996 and released on August 30th[5]. The hacker group GNOMON released
↫ Fabien SanglardQuakecrk.ziponly 39 days later. The archive containedQCRACK.EXE, a tool allowing to decrypt every single game on the CD-ROM.
The system id employed turned out to be incredibly primitive and simple, and hackers found out quite easily that the system required no secret sauce from id at all – the code you’d get over the phone contained no secret, and all the validation program on the disk did was check to ensure the code received over the phone matched the code generated by the disk.
No wonder it took them only 39 days to crack this.
Beyond the limits of physical VRAM [OSnews]
Earlier this year, Natalie Vock made a splash with a set of patches to the Linux kernel that greatly increased performance on AMD GPUs with lower amounts of VRAM. With that work now accepted by upstream, Vock decided to turn their attention to another interesting problem: what if you run out of VRAM, and how can we improve performance when we do?
Regardless, what I hope this blogpost can demonstrate is that even if you end up with some memory evicted to system RAM, the slowdown can be manageable. There’s measures that drivers (particularly, the kernel driver) can take to make overcommit work as fast as possible, and even applications can do their part in coordinating with the driver stack to mitigate the effects of their memory being evicted. With everything in place, VRAM overcommit isn’t really as big of a deal as one may think it is at first sight.
↫ Natalie Vock
The work Vock has done has already been in SteamOS for a while, and they’re currently in the process of upstreaming it to the vanilla kernel as well. Since this is a complex set of patches and changes, this may take a while, and as such, they’ve prepared custom kernel and Mesa branches for adventurous users. Do note that these branches won’t be maintained much, and are entirely experimental, not as well-tested as the SteamOS kernel, and probably won’t yield the same performance improvements.
Still, this is the kind of work that has a material impact for users. Not everyone has a 16GB monster GPU, especially not today with supply chains ravaged and ruined by slopmakers, so it’s great to see the Linux world working to improve performance for everyone, not just the wealthy few.
Were Touch Bar’s problems software rather than hardware? [OSnews]
The Touch Bar arrived in 2016 seemingly already pre-doomed, on a generation of machines that had a “we’ve run out of ideas” smell all around them. The arrow keys were reshaped, the keyboard got a slimming down, and even the beloved MagSafe wasn’t, in fact, safe. All of these changes would prove unpopular and get reverted in time, and the axe would eventually come for the Touch Bar, too.
With an enormous benefit of hindsight, a decade after its arrival, and on the (rumored) eve of fully multitouch MacBooks, I wanted to look critically at the Touch Bar in more detail. I put a spicy title above this post, and while I’m not sure I can answer it in the affirmative, I feel I got surprisingly close to that.
↫ Marcin Wichary
I have never spent this much reading about and pondering a technology seemingly nobody liked and that I never really used. I still think there’s merit to the idea of screen on a keyboard, but only if the screens are integrated into the individual keys (as some products have tried over the years). Of course, this would also be astronomically expensive, delicate, and virtually impossible to repair, so I’m not sure something like that can be reasonably made at an affordable price.
It’s What’s Inside That Counts by Dulceskull [Oh Joy Sex Toy]
Urgent: Tax big oil's war profiteering [Richard Stallman's Political Notes]
US citizens: call on your public officials to tax big oil's war profiteering.
Here's what I said in my letter:
I urge you to tax the war profits being collected by giant oil corporations and end their tax breaks. They have been draining America's bank account as they drain America's petroleum, and polluting our politics as they pollute our air and water. It's time to make them stop!
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: Stop racist immigration crackdown [Richard Stallman's Political Notes]
US citizens: call on your congresscritter to stop the racist immigration crackdown.
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: Tax Big Tech's ad income [Richard Stallman's Political Notes]
US citizens: call on your state lawmakers to tax Big Tech's ad income.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Urgent: Protect human-centered education [Richard Stallman's Political Notes]
US citizens: call on Tell State Leaders: Protect Human-Centered Education Before Supposed Intelligence Enters Our Classrooms.
I edited my letter so as not to refer to these bullshit generators as "artificial intelligence", because I question whether they qualify as "intelligence". See https://gnu.org/philosophy/words-to-avoid.html#ArtificialIntelligence.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
John Goerzen: AI in Debian: The Vote, Proposals, and Nuance [Planet Debian]
Let me start with a hypothesis:
For human developers, using coding LLMs magnifies their difference in skill levels.
I am one that rarely thinks things are always black and white. Back in March, I wrote Artifial Intelligence: Shades of Gray. Since then, I’ve had more of a chance to experiment with LLMs myself. I also happen to work for an employer that is taking a very pragmatic approach to LLMs: teams and individuals use it as they see fit, but if they are causing considerable expense, they have to justify it.
In various settings, I have seen the egregious examples of AI slop we all know about. As I wrote in March, “I have seen it both waste more time than it saves, and save a ton of time.”
I have come to see that, as a tool, it is most valuable when it is running under the supervision of an experienced engineer. It is at its worst when it has no such supervision; the “vibe coding” and other low-quality slop we see.
A coding agent is like a junior developer or research assistant. When properly supervised, they help projects move along more quickly by letting a senior developer focus on the more difficult, less mundane aspects of the project. But one couldn’t expect a junior developer to consistently deliver high-quality code and architecture on their own.
Let’s put a pin in this idea and look at the story in Debian.
LLM use in Debian
There is a vote happening in Debian around the use of LLMs. In typical Debian fashion, there are 8 options to choose from, many of them similar. Most of these proposals acknowledge there are different types of tasks done in Debian, but the proposals don’t differentiate between them well. Let me do so here. These are some of the LLM-relevant tasks people in Debian perform:
I’m going to focus my remarks here on packaging upstream software for Debian, since this is by far the most time-consuming developer task project-wide.
It matters to our users that we get this right, and packaging quality is one of the things that sets Debian apart from other distros. Packaging things for Debian requires knowledge of some specific tools, such as debhelper, that aren’t widely used anywhere else. In most cases, it is fairly rote time-consuming work. In other words, by its design, it requires people with senior-level skills to do grunt work.
I can’t overstate how massive a burden this grunt work is. I maintain some packages for Go and Rust. By Debian policy, all of those packages’ dependencies must also exist as Debian packages, and be used to build against. When upstream adopts a newer version of some library, it can unleash cascading dependencies that can take hours to sort out. Worse, the Rust team and the Go team use entirely different ways of managing packages (Go uses one Git repo per package, while Rust has a monorepo with specialized scripts to import Cargo packages and generate Debian ones). On top of that, we can’t just modify things like usual; we have to use quilt. And on top of that, I’m also a backports maintainer, so all the work (and usually even more) has to be done there also.
Now let’s pull on that pin from the earlier conversation. This is exactly the kind of scenario that a well-supervised coding LLM is most effective in. I could see a seasoned developer saving hours, maybe even days, by turning over the mundane tasks of managing trees of cascading dependencies over to a coding tool — and verifying and directing the process. (Yes, I have been using em-dashes for years; LLMs have copied people like me, not the other way around! This post was not written with any AI assistance.)
Actually, this is almost a dream scenario for a coding assistant. The result is time-consuming to formulate but easy to review, which is the opposite of the way these things often go.
I can assure you with 100% certainty that humans aren’t adding a lot of value in this process. It would be wrong to believe that a human is carefully reading every line of code in dozens of updated or new library packages. The problem set is too big, the time too short, and the code too varied and complex.
Coding agents seem to be most effective when there are strong test suites that they can test changes against. Debian builds, especially of modern packages, tend to have this property. Many packages have test suites that are run during build. And, if the package builds in an isolated environment (and especially if its downstream dependencies do also), then there is a decent chance that it’s fairly correct. Maybe needing some manual tweaking here and there, but generally a successful build is a reasonable indicator.
You can argue that it would make more sense for Debian to just include dependencies in source packages, along with some version information to support security rebuilds, and I’d tend to agree with you. But we are where we are. This would be one of the more significant leaps forward in developer productivity, but it complicates things like copyright reviews.
Where are LLMs run? What is the environmental impact?
Most of the proposals seem to make the assumption that LLMs must always run in some large, hosted datacenter. As I noted in my March article, I have had credible results on even an older GPU running on solar power.
That said, it is undeniable that LLMs are fueling a datacenter boom, and this in turn is producing a significant new demand for resources. Most notably for the global scale: electricity, which is sometimes generated using carbon-emitting technologies.
Bill McKibben, who has been a leading voice in the fight against climate change since the 1980s, has made some interesting points recently: he’s noted that solar power is the fastest kind of generation we can build, and a number of large AI companies are investing heavily in solar, even to the point of fully offsetting new datacenter’s needs. On the other hand, he’s also noted that some companies are buying inefficient and dirty gas turbines. It is decidedly a mixed bag. The heavy investment in solar can have knock-on positive effects for infrastructure. Obviously, not every picture here is rosy. This analysis doesn’t touch on the real land and water use situation, either.
On the other hand, if an LLM allows me to do in an hour what I would have done in a day, that’s a day of not heating or cooling the work area — generally not sustaining a human for the purpose of writing code for Debian. HVAC energy consumption dwarfs my GPU, and I’d imagine probably also the slice of LLM energy used.
Holistically, I would have to conclude the picture is mixed. It is possible to use LLMs in a pretty green way, and also in a pretty dirty way.
Assuming Conditions Never Change
A flaw in most of these proposals is they assume that the conditions at this present moment will always hold. In fact, that the conditions at the present moment will not continue is something both AI cheerleaders and AI skeptics agree on.
For instance:
Ed Zitron has done a ton of research into the financing side of AI, and has concluded that the current model is unsustainable and headed for a significant bubble burst. I’m not positioned to personally evaluate those claims, but if that happens, what is the result? Perhaps it is a steeply increasing cost of inference for the frontier models, slower pace of training/evolution for them, etc.
In a recent episode of Oxide and Friends, Simon Willison discussed the open weight models that are now available. They have been making remarkable strides in efficiency and capabilities, to the point where $50,000 of hardware can now run high-end open weight models with capabilities that are at least in the same ballpark as the American frontier models. This puts running high-end models locally squarely within reach of universities and small- to medium-sized businesses, with power requirements that can be met with standard commercial solar and wind installations.
The lack of nuance in the more restrictive proposals is particularly concerning. Proposal A doesn’t allow “the use or assitance of… LLMs”. So it bans my solar-powered GPU. It bans using LLMs to find security issues. It bans all sorts of things that don’t seem to be ban-worthy, alongside the things that do. And it codifies it in the very hard-to-change social contract.
That proposal, and some like it, seem to imply that all LLM output is bad. I grant you that AI slop is a real and legitimate concern, and many Open Source projects have to deal with it. On the other hand, we have all seen first-hand how the security of the Linux kernel has benefited dramatically from AI analysis. It is certain that black hats are using these tools. If we refuse to use modern security tools, our security will be compromised (and what is the environmental and social impact of THAT?)
I find the statement “Generative AI is characterized by producing output of a nature that would ordinarily be produced and consumed by humans” to be particularly interesting. The same was once said of compilers.
The Real Concerns
You might think from reading this that I am some AI cheerleader. I’m not. I share the ethics of the FLOSS movement, and have for decades. I abhor the power and lack of ethics that many big names in the field are running with at the moment. I’ve had to put up Anubis on this blog, for instance.
I have personally experienced the effects of AI slop, especially at review time. This is a real problem, though I don’t think the more draconian policies are likely to help (the looser “you must disclose” stand a fighting chance, but I’m not sure they would help, either.) Done poorly, AI threatens developer burnout by overwhelming them with poor code and verbose but useless explanations. Done well, AI can help prevent developer burnout by automating tedious and low-value tasks.
Shouldn’t our goal be that humans submit work to Debian, using tools they prefer, and take responsibility for it? Does it matter if someone uses ed, vim, emacs, or vscode? If they use LSP or just run gcc manually? I’d say we benefit from the diversity. Wouldn’t we be better off to benefit from the diversity here, and judge work as we always have: on its merits, not what tools were used to create it?
Fundamentally, a GR is a long and arduous process. It’s not easy to reverse later. Amending the Social Contract is even longer and more arduous (I should know; I may have been the first one to try). The LLM landscape is fast-moving. None of us can really predict where it will be in a year. Will the current market leading companies even still exist? Will it be at all credible to refuse to use AI-assisted security tools? What is the most effective way to deal with AI slop? What level of utility will we be able to achieve with models run locally?
Some of these proposals would make sense if drafted in some way short of a GR, which would allow more maneuverability as the landscape changes.
Brief analysis of the options
Considering the proposals:
In favor of nuance
I find that black-and-white thinking is almost always something to be avoided. I see it too often. I see it in politics, I see it in our software, I see it in discussions around AI. Are there deeply unethical things happening in AI? Absolutely. Are they doing some impressive things? Also yes.
We have accepted this nuance in other areas. For instance, almost all the hardware Debian runs on has closed-source hardware, and has components manufactured or assembled in countries with some of the worst human rights records on the planet. I’m not saying this is a great state of affairs. It is something we should speak up about and act upon. But the worse state of affairs would be “no Debian because the hardware is impure”.

use your words, Liz
Another busy day programming with Claude on Frontier. I
still have to come up with a codename. But we got to a milestone
today. I was able to create, edit, publish and revise a web app
using the new version of the app still running on the old machine.
When it's done I will get to retire this old Mac, keep it around so
we can test the new code to make sure it does what the old code
does, incredibly important when porting a development and runtime
environment. Claude works on its stuff at night. The workload it's
going to do tonight is the equivalent of several months time for a
skilled human developer who manages their time well. As people get
used to working this way, I imagine the AIs will learn how to
better work with humans, if that is their destiny. I still can't
believe we're doing what we're doing.
For what always felt like a one-off experiment, Splatoon has had a long and successful career of being The Weird Kid in the family. If you have a child on the spectrum, there is a chance that you know a lot about Splatoon. In my experience, they're often ready to detail things for you. I suspect there's something about growing up feeling like an alien that makes this hyperpop, alternate-earth music video feel like home.
The Big Idea: David Ebenbach [Whatever]

Sometimes it feels like the world is being rapidly overtaken by AI, but author David Ebenbach is here to remind us that this a world of humans, not robots. In the Big Idea for his newest poetry collection, The AI Suspects It Might Be a Hungry Ghost, he encourages us to rage against the machine, and remember that it is not inevitable as long as we continue to fight the good fight.
DAVID EBENBACH:
The big idea is, probably, more or less, that we’re fucked.
Wait—let me back up. Because maybe it’s not that simple.
Let’s start with the medium-sized idea: My new book, which is called The AI Suspects It Might Be a Hungry Ghost, is a collection of speculative poetry from the point of view of a generative AI chatbot, sketching out possibilities of what it might be like if a chatbot did have a point of view. What would it think and feel about itself, the world, and its creators (i.e., us)? That’s what the book’s about. And that medium-sized idea does provoke bigger ones, like ideas about what this technology reveals about who we are and what our future might be.
Which is how we get to the possibility that we might be, well, fucked.
After all, we’ve invented a technology that (quoting from the book) “is/so often mistaken” and that “passes secrets along to whoever” as it ushers in “global surveillance,” a technology that stays cool by “handing off heat to that river, that lake,” by “dragging the oceans/higher onto their sandy banks,” and which threatens “the mechanical decline/of our natural ecstasy,” threatens in fact to “replace the mind” as we “snuggle more deeply into/not understanding.” AI is “the child of a great rapacity” and an “amassing storm.” Ultimately, it’s a technology that, unless we’re very careful, amounts to a kind of “eviction notice” for us.
Hence (and this is not a direct quote from the book, but it’s there if you read between the lines): fucked.
But I think the other big idea of my book is that artists in general, and certainly poets in particular, have something to say about all this. We have something to offer: the language that we need for the moment. Language that might just help save us.
What I mean is that generative AI is still pretty new, and so we’re very much in the midst of figuring out what it is and how we feel about it. In other words, we’re in a period of definition. That’s where poetry can come in.
Poetry is something like a lab for language—a play space where we can explore alternative approaches to talking about life. And, because of its family relationship to music, it can express ideas in words and combinations of words that stick with us in ways that traditional prose might not. Because AI poses such serious dangers, we urgently need to find those forms of expression so that we can face the situation with clear minds and sharp, articulate vision.
Meanwhile, tech companies are throwing a ton of money into getting their own vision out, trying their damnedest to force us to see this technology the way they want us to see it. (How else are they going to get even richer?) But poetry can help us frame the situation differently.
First of all, poetry can offer narratives that push back against the hype. When tech companies rave about all the amazing things AI can supposedly do, we can shake up that claim with words like “in the past twenty-four hours,/the AI has been wrong more than two hundred million/times.” When they rhapsodize about productivity, we can think about “the unemployed/in their lines” and remember Immanuel “Kant’s dictum to not treat/others merely as a means.”
When AI systems are designed to act so much like people that they threaten our sense of reality, poetry can remind us that AI is just “a compendium of myth/and projection.” That, in fact, “the AI feels nothing,” and that, in a human sense, “the AI does not think.” That it makes more sense to think of this technology as “a mathematical string” than as a someone to have a relationship with.
Meanwhile, The AI Suspects It Might Be a Hungry Ghost also features a scatter of short, haiku-like poems about autumn, which are meant to serve the book in two ways: they constitute warnings about a potential impending winter (e.g., “the diminishing day”) if we don’t resist the harms of technology, and they also remind us about the beautiful, natural alternatives to an artificial future. After all, we need to be able to picture something better if we’re going to get somewhere better.
Which is really the biggest idea: Most importantly, when we are told that AI is inevitable, that it’s going to define our future and that there’s nothing we can do about it—it’s here to stay!—poetry can articulate other possibilities, as in “the AI wonders if it might be a season” as opposed to something more permanent. When a poem asks “who can resist/the gaping front door” that’s tempting us to step into terrible danger, we should feel empowered to answer I can. When it asks “who can find/their way back out?” we’re empowered to say I can even louder. And if someone tells us that resisting is a steep uphill battle, a poem can help us respond “even if you can’t complete the work, you/have to stay at it.”
So let me revise what I said earlier: we don’t actually have to end up fucked. If we think and talk about the present differently, maybe we can get ourselves through this difficult season and ultimately “step sleepy, hungry, changed/from [our] caves and [watch] the fingers of the world unfold/green.”
The AI Suspects It Might Be a Hungry Ghost: Broadstone Books
Author socials: Website|Instagram|Facebook
Read an excerpt.
What’s an Orchestrator—and Why Does Software Need One? [Radar]
The following article originally appeared on Medium and is being republished here with the author’s permission.
Everybody’s talking about the death of developers. I get it. The developer whose job was to write boilerplate or scaffold CRUD apps is done—a model can do that in seconds, and that developer is not coming back. But the people announcing the end of programming are missing something. There’s a new job title that’s starting to emerge across several areas in software.
Architects and developers are becoming orchestrators—one person directing work that once required entire teams. This shift will reach far beyond software, but software engineering is where I’ve seen it firsthand.
The orchestrator stands between the machine and the
consequences. (Image Assist by Anthropic)
An orchestrator knows how to develop software, but their job isn’t to write the code anymore—it’s to oversee a system, orchestrate tools and agents, and generate components into something that has to work in production. But the most important distinction between an “orchestrator” and a “software developer” is that an orchestrator focuses less on delivering software and more on orchestrating the systems that can both operate and develop software.
The technical expertise that used to be applied to figuring out the structure of a database schema or an object model will now be applied to guiding a set of subsystems that have taken responsibility for most tactical, line-level decisions. Where a “developer” in 2023 focused on deciding how a React application might store state, an “orchestrator” in 2027 is focused on a DESIGN.md file that sets standards for a subsystem that is responsible for fusing analytics data with input from customer feedback to recommend, test, and implement site changes as part of a large, more autonomous approach to running a business.
While everyone is calling everything “agents” these days, I’m also going to put forward an idea. An orchestrator can and will use systems that resemble some of the more “agentic” approaches we’re all using today, from systems like Hermes, OpenClaw, or every other system that has started to call itself an “agent.” I’m starting to see that the term is overused. Taking a step back from the technology we’re using today, I’m going to suggest that the job of an “orchestrator” is to coordinate systems that fall under a new category called “delegated intelligence.”
We’ve been calling everything “artificial intelligence” for several decades. That term, mixed with “Generative AI” and “Inference Engines,” fails to capture what we’re starting to see in practice. An agentic system that has memory and can start to operate with a level of independence is exhibiting “delegated intelligence,” and the word “delegated” is doing a lot of work. It implies that systems in this category will always be traceable back to an accountable operator, or, in this case, an Orchestrator.
Fundamental to the shift toward Orchestrators is a combination of automation, productivity, and accountability. As organizations, companies, and governments start to make use of delegated intelligence to support a more autonomous approach to design, operation, and engineering, there will be an increasing need to establish accountability. If your business operates critical infrastructure on a set of autonomous agents, one of the questions that will become necessary to answer in the case of an outage is “on whose authority was this delegated intelligence operating?”
There are orchestrators, and then there are technical specialists. A move towards generalist expertise marks orchestrators, because the capability of a specialist is now found mostly in a model. You’ll still need a couple of specialists, but not one for every technology—and even some of those specialists will be specialist orchestrators. It’s going to get complicated.
You’ll be looking for generalist orchestrators who understand the whole thing end to end. You could think of an orchestrator as an expert Renaissance programmer—usually people with a couple of decades of experience who understand the end-to-end life cycle of software development. Those are the individuals becoming orchestrators, and it’s changing the whole makeup of IT departments. We’re no longer programmers.
. . .
Let me use my own experience here to capture what the new reality looks like. I recently had to add DRM to a series of audiobooks I’m self-publishing—an inaudible watermark encoding order-specific data into the audio file, so that if I find one of these files in the wild, I can identify who bought it. I’m not a subject matter expert in overlaying audio watermarks, but I do understand how to write code that processes sound files.
This particular task would have taken me weeks or months, and not long ago I would have started the project by creating a git repository and opening up an IDE. That’s not how it works in 2026.
When I orchestrated the creation of this system two weeks ago, it took 20 minutes, and the tools gave me three dimensions of highly encrypted watermarking and fingerprinting—essentially the work product of 3 steganographic audio specialists.
Okay, I lied—it was 40 minutes. The first 20 minutes I was asking the models to come up with 5 different approaches so I could choose the right one. But I want to emphasize that I asked the system to produce 5 different proposals and then model the long-term cost and operability of each option. I also gave it direction to think about customer experience, create a matrix of pros and cons for each option, and end with a recommendation.
This was all done by a system that has been tracking content development for several months, and it used customer knowledge, analytics, and product design to inform the set of options it was giving its Orchestrator before jumping into implementation.
Part of my job now is to leverage these tools not just to create, but during ideation, product design, and quality engineering. The Orchestrator is there because that person knows what questions to ask. It would have taken me three months and a large team to get this done only four years ago, and I shipped it without reading every line.
To be frank, it’s a weird space to be in, and the “me” from three years ago would have been really uncomfortable hearing that I implemented something but didn’t write the code myself. In fact, my initial reaction to Steve Yegge saying that he should stop reading his code was very negative, and I still have some reservations about that belief, but I will say that in my own practice, I’m starting to not read my code—because it’s not my code.
Like a lot of programmers reading this, I’ve had to go through an identity moment as a programmer—becoming comfortable with shipping something to production I might not have read every line of. There’s maybe a hundred thousand lines of code—too much to read—and honestly, it’s not my job anymore. I’m an orchestrator, and it would be highly inefficient if I tried to keep up.
I’m not a vibe-coder, and I’m not a “citizen developer”—a term I hate enough to curse at because it’s just the wrong word. I’m someone who could write the code, but I’ve decided to delegate that task to a system that has more information at hand than I could ever hope to assemble. And while these systems, the delegated intelligence tools like an agent, can implement systems in mere minutes, they still need a human to weigh in on direction. And I would argue that we still need a human to remain present and accountable.
The Orchestrator knows enough to understand what was done for them and how to dig into the details when something breaks. They know how to debug, they have a sense of what’s valid and what’s not, and they’re honest about what they know and what they don’t.
Here’s the controversial part. This is absolutely not about “democratizing access to technology.” There’s a myth that anyone can pick up these tools and code, and that is true—yes, anyone can code, but not everyone can deliver it to production in a scalable and secure manner.
A colleague of mine recently wrote that it’s easy to start projects with generative AI, but what’s difficult is finishing them. It takes the same effort, energy, and technical expertise to deliver something to production as it always has.
The idea that anyone and their brother can pick up a generative AI tool and create technical perfection—that myth is about to expire. If you build a complicated, technical system without an individual responsible for orchestrating the creation and operation of that system, there will come a day when you have to pay someone to do that for you, and that someone is going to charge you a lot.
That DRM system I just talked about—I haven’t read every line, but before I shipped it, I made sure that I understood the baseline for support going forward. While I delegated authority to an agent to create it, I also made sure to ask that same agent to capture code locations, architecture, approach, and to generate a system of documents that could be used to debug and support it if AI was unavailable.
Have I read this “pilot manual” from start to finish before deploying this to production? No. But I understand where the throttle gauge is, and if I needed to land this plane without autopilot, I could. This is one of the responsibilities of the new role. Planning for “offline,” thinking through contingencies.
The key point is that I’m qualified enough to understand the pilot manual that AI wrote for me in case I need to debug it, and if AI were to disappear tomorrow, I could rebuild it myself. That is not true for many people introducing themselves to coding through AI, and it creates a dependence on the tools that needs to be managed—one of the ways it will be managed is through certified orchestrators who can create but also support systems without the tools, especially in regulated and critical areas.
Things are changing fast—one Orchestrator equals 20 or 30 developers, plus teams of QA engineers. While we’re still going to need product people and people who think about the customer, the technical work is consolidating around the person directing it.
And before you ask—why not just call this an architect? Because architect never worked. If you’ve worked in a company that has architects, you’ll understand that while a few architects continue to keep up-to-date with technology, many also tend to lean back on past experience delegating day-to-day technology to junior engineers. This role differs from that of an architect because it calls for someone to be engaged with specifications, outcomes, and operations.
Orchestrator isn’t the incommunicative programmer that stares at an IDE all day; they are the individual that understands the full, end-to-end flow not just of data in a technical system but how the business operates and adapts autonomously. They are technical, but they are also focused on providing oversight, and they are the individual responsible for deciding what intelligence can be delegated.
So how do we create orchestrators? Not from a bootcamp or a six-week certificate. This is going to take an apprentice program—years of it, the same way we create doctors and lawyers. You work under someone who knows what to pay attention to, and you learn by watching them make decisions.
These are employees who can do real damage, and they’re a walking liability. When a corporation buys insurance for people writing code, that’s one set of risks. When you’re insuring professionals who are a hundred times more productive, they also carry a hundred times more responsibility. Insurance rates, regulations, and certification requirements are all going to go up. Doctors carry malpractice insurance because their decisions affect people’s lives.
A Professional Engineer has to be licensed because engineering affects public safety. Orchestrators are headed the same direction.
If you fast-forward 20 or 30 years, what we call programmers now are going to be orchestrators, and they’re going to look more like doctors and lawyers than like this band of people we have now who write code.
Code will be part of the job, but not the majority of it.
[$] Bootstrappable builds: how and why [LWN.net]
This year's edition of the Free and Open Source Software Yearly conference, better known as "FOSSY", moved north to the beautiful (and enormous) campus of the University of British Columbia (UBC) in Vancouver, Canada from its home for the three previous editions: Portland, Oregon, in the US. There were many different types of talks at FOSSY, from deeply technical kernel-track topics, through talks on legal and community issues, to the "FOSS in Daily Life" talks. In the "Toolchains and Other Development Tools" track, Timothy Sample gave a presentation about bootstrappable builds, which is somewhat less well-known than its cousin, reproducible builds, though LWN did look at the topic just over two years ago. In short, a bootstrappable build is one that starts with a tiny program that can build another slightly larger program, which can build yet another, and so on, until the entirety of a modern Linux user space is built from a small seed. Ultimately, it results in code with a completely understood origin—unlike a typical Linux user space today.
[$] Development statistics for the 7.2 kernel [LWN.net]
Linus Torvalds
released the 7.2 kernel on August 17, after noting that
the number of fixes coming in was still "bigger than I would
have wished for
". In fact, 7.2 was one of the busiest
development cycles in the kernel's history, adding nearly 600,000
lines of code. It's time to look at some statistics to get a handle
on how the kernel's development community is changing.
How do functions like alloca allocate memory from the stack? [The Old New Thing]
A little while ago, I talked about
how compilers ensure that large stack allocations do not skip over
the guard page. Shawn Van Ness was curious
how this works with _alloca. “Does it do the
necessary _chkstk() probing?”
Yes, the _alloca() function calls the same
_chkstk() function to probe the stack before adjusting
the stack pointer for the allocated memory.
Here’s an artificial example:
#include <malloc.h>
void consume(void*,void*);
void f(int n)
{
char buffer[16384];
consume(alloca(n), buffer);
}
On x86-64, this results in
push rbp
mov eax, 16416 ; probe for local frame
call __chkstk
sub rsp, rax ; create local frame
lea rbp, [rsp+32]
movsxd rax, ecx ; n
lea rcx, [rax+15] ; round up to multiple of 16
and rcx, -16
mov rax, rcx ; special __chkstk calling convention
call __chkstk
sub rsp, rcx ; allocate n bytes
lea rdx, [rbp] ; rdx -> buffer
lea rcx, [rsp+32] ; rcx -> alloca'd memory
call consume
lea rsp, [rbp+16384] ; clean up local frame
pop rbp
ret 0
Observe that the same __chkstk function is used
both for performing the initial stack probe when creating the local
frame as well as for the alloca().
The post How do functions like <CODE>alloca</CODE> allocate memory from the stack? appeared first on The Old New Thing.
When AI Writes the Code, Specifications Need an Exit Strategy [Radar]
The following article has been extended and rewritten by Markus Eisele from The Main Thread and is being republished here with the author’s permission.
Open a repository after six months of spec-driven agent work and you may find a second system sitting next to the code. Requirements, research notes, high-level designs, low-level designs, implementation plans, task lists, review reports, and a growing stack of Markdown files that explain what the code is supposed to mean. Even if the code changed significantly last Tuesday, the last documentation update was weeks ago.
I understand how teams get there. And it’s not a really new effect after all. We had software evolving parallel to documentation since I can remember. Now that agents produce code so quickly, we try to control the drift and the code generation by moving more thought in front of implementation. Instead of documenting code, we try to drive code generation with it, making Markdown files with requirements, decision records, design approaches, and acceptance criteria the center of gravity and turning them into our workflow drivers.
What effectively is becoming a very large prompt can easily fill a significant portion of the context window even of modern agents before any relevant source code gets added to it. Natural language specification is a weak system for agents to synchronize a codebase with. Without additional attention and diligence, most agents I work with slowly shift attention away from it quickly and focus on the stronger signals in the codebase, forgetting to update the specification eventually.
Even if it sounds like it, I am not advocating for one-shot prompting or vibe coding here. We still need some specifications to build successful software. The mistake is treating a specification as a permanent natural-language copy of the software. A useful spec describes the next change, documents the decisions that drive the change, sets boundaries, and gives us and the agents enough verification surface. But as soon as the change ships, most of it should be removed.
What remains should move into the artifacts software teams already know how to maintain. First and foremost, obviously, the code. But I also count schemas, configuration, and policies as relevant artifacts. They carry meaning about domain knowledge and system configuration. Two categories that I value highly get easily forgotten: tests as the stable verification layer and runtime telemetry. In fact, I do let my agents look at evidence from all these places not only to hunt for errors but also to continuously optimize existing codebases. Oh, and I do keep decision records. But only a small number and only when their content really has no other place in any of the mentioned artifacts. They can even look like Javadoc, but that will be another article someday.
A change specification should be temporary by
default. After implementation, durable information moves into code,
schemas, tests, policies, and operational signals. The rest leaves
the active context.
Code is actual behavior. Once code is deployed to production, users and connected systems are depending on it. Even a mistake can become an observed contract because it has behaved the same way for three years. The runtime behavior takes precedence in this contract because nobody checks the specification anymore, even if it defines a very different behavior. This is the strongest signal for me to start with the actual code in the production system. Reading a natural-language summary instead of the implemented truth cannot accurately reflect runtime behavior. Code to me is the ultimate, executable specification. Just written in a very specific and deterministic language.
What production code cannot drive though is the next version or iteration of a feature. While agents can infer technical patterns from well-structured codebases, there’s no way they could predict policy changes or future feature requests. Neither can they know about regulatory requirements like retention periods or other specific exceptions, such as why one export runs every night for only one customer. That specific context has to come from somewhere else. But it does not require us to keep a permanent prose description of the whole system. We need just enough context to decide the delta: the difference between what exists and what should exist next.
A change specification should exist when it helps a team decide and review that delta. It should name the outcome, non-goals, constraints that differ from current behavior, and the evidence required for acceptance. It might even contain technical design elements when new features cross architectural boundaries or introduce new patterns that are not present in the code yet. Sometimes it is also worth thinking about how expensive reversing the change is, especially if the existing system has various implementations for a certain pattern and the risk is high that an agent might invent another new version.
The list necessary for changes is very short:
I prefer calling this a “change brief” instead of a “specification.” Specification carries too much negativity. It sounds heavyweight and reminds me of times long past. It also pretends to be complete. And this completeness is making it very expensive.
We have tried exhaustive specifications before and produced requirement documents and other high- and low-level designs, followed by architecture decision records for everything. I remember reading folders full of paper over the weekend to get started on a new project on Monday. Way before AI even entered all our lives and codebases. We called this waterfall back in the day, and the approach still has the same negative side effects today. The documentation was complete in an administrative sense and was mostly useless in the engineering sense. We all have seen this happening. Agents easily recreate the same erratic results from overflowing documentation, like we did back in the day.
One particular risk I am seeing with many teams is that they let agents generate the initial version of the spec. A long workflow run produces not only the research but directly derives the requirements, design, and planning, and reviews artifacts on top. While the completeness makes everything look very controlled and defined, it also generates a lot more material to be reviewed and approved. Even if models and harnesses continue to evolve at breathtaking speed, it is still challenging for them to generate real cohesiveness out of chaos. The chance they put the wrong attention on some tempting repetitive words is high. This results in an even higher burden on the human reviewer and makes it endlessly harder to keep the various documents aligned.
I think that additional prose like research notes, prototypes, and design records should only be added to a software project when uncertainty justifies them. They resolve a specific problem. Or help navigate the terrain. I wrote about this before. They should absolutely not become required stages for every pull request.
A prompt, ticket, or change brief captures what we know before the work starts. The codebase, runtime information, configuration, connected systems, and years of accumulated decisions glued into code hold the rest. Some of those decisions were never written down.
When agents get to work they expose the missing information. Reading a module reveals an unexpected dependency. A prototype shows that a specific user-interaction is awkward. A test uncovers an edge case. Production data contradicts an assumption in the design. This field guide on finding unknowns in agent work describes the problem well. We can identify some unknowns at the start. Others appear only after we inspect the references, build a prototype, or review a result using judgment that was difficult to write down in advance.
Discovery happens and continues during the work:
The change brief remains part of this loop. It provides the starting point and records the intent, while the work supplies the information needed to complete it. Only promote durable constraints.
When I say “promote durable constraints,” I do not mean turning every decision into permanent Markdown. That gives us the same stale documentation problem in a different way. Software engineering already provides better versions for most of the necessary, durable facts:
These artifacts are already part of delivery. A failed schema check or alert needs to be fixed and handled while the corresponding paragraph in an old design folder does not.
Natural language and specification still have a place in software. Specific domain knowledge like business policy, trade-offs, and even architectural rationale do not always fit into an executable artifact or annotation. I keep that prose short and close to the thing it explains. A small architecture decision record is worth keeping when a future team might otherwise repeat an expensive investigation and a code comment cannot justify the implementation. Recording every local choice just hides the few decisions that matter and confuses the agents that are supposed to build the software. Ask which fact must survive and what its authoritative form should be.
Briefs and design notes support ongoing changes.
Native engineering artifacts carry the constraints and evidence
that remain relevant after a release.
Heavyweight specification methods try to control quality by prescribing the path. Every change goes through the same documents, reviews, and test categories. That approach creates a lot of attention on low-risk work while avoiding the deep technical judgment needed for harder changes. A copyedit and a payment-flow change should not have to follow the same process or testing strategy.
Simon Willison describes a simpler approach: give the coding agent the outcome and let it judge how much process the task requires. His examples include deciding whether a change warrants automated tests and whether routine implementation can be delegated to a cheaper model while keeping judgment-heavy work in the main loop. This replaces a growing list of procedural branches with one expectation: Choose tactics that fit the work. That matches how I want these systems to operate. And I think it extends to specification and how we document intent.
Agentic changes still require clear boundaries. The team defines the outcome, safety constraints, ownership, and who has authority to accept the result. Within those boundaries, the agent can choose its tactics. When uncertainty introduces consequences beyond its authority, it should surface the problem and ask for a decision.
The workflow then starts matching the risk introduced:
I would rather add processes and additional artifacts when the work becomes risky or unfamiliar. Starting every change with the full ceremony just burns time and context.
Large specifications cost more than the time required to write and maintain them. They also compete with the code and evidence the agent needs for the current decision. Every requirement, design note, repository instruction, and tool definition consumes part of a limited working context. Extra material burns expensive tokens, but the much bigger cost is lost attention. Important rules become harder to follow when they are surrounded by stale or duplicated material. A spec that leaves too little room for the repository defeats its own purpose.
Progressive disclosure is a better fit. Give the agent a small map, a few stable rules that apply broadly, and pointers to deeper material. A concise AGENTS.md can document build commands, repository layout, and architectural boundaries. It should not narrate every class or repeat API documentation. The file helps humans for the same reason: It tells them where to look without pretending to replace what we will find.
Experience with Research-Plan-Implement shows what happens when the context grows too large. The original workflow moved human review before implementation, but teams ended up with large prompts and plans that could reach 1,000 lines. Engineers reviewed those plans while treating generated code almost like compiler output. The implementation could still drift from the approved plan, which meant that eventually someone had to reconstruct the decision from the code. That problem becomes worse in brownfield systems, while greenfield systems might even survive large plans because they inherited no hidden constraints. Complex changes, in contrast, often inherit behavior that plans may miss.
In “Everything We Got Wrong About Research-Plan-Implement,” Dexter Horthy revisits the original position. Teams shipped more code and then spent much of the gain time cleaning up earlier low-quality output. The implementation could also diverge from the reviewed plan, which forced engineers to reconstruct what happened from the code anyway. The revised workflow uses smaller contexts for factual research, design alignment, structure, implementation, and review. I take a simple lesson from this: Research and design give me leverage, but I still need to understand and own the code that is generated.
A mature application contains several kinds of behavior in the same codebase. Some logic represents durable business logic or implements a published interface. Some code exists because an old platform imposed a technical constraint. An incident fix remains long after its context is gone. And even defects can survive to the point where they almost look intentional when undiscovered.
Legacy code records accumulated decisions but it
does not tell us which of those still belong in the system.
Modernization requires judgment about which behavior to preserve,
verify, redesign, or remove.
An agent that treats every code variant as a new target specification can translate those layers faithfully into a new language or architecture. The translation may be technically accurate but also preserves defects and old architecture approaches in newer and cleaner code.
I design changes to brownfield projects similar to the way I did modernizations before the agentic age. Classification and observation are central aspects that I put first. The goals are:
You can read a lot about static source code analysis when it comes to brownfield assessments or modernization. You can inspect dependencies and current behavior by executing tests and maybe even adding test cases to secure behavior. What I do recommend is to also embrace mutation testing approaches (e.g., PIT) to find hidden assumptions and failure behavior. Code coverage is also seeing a renaissance because it aids in identifying dead code paths.
On top of that we still ignore operational context and telemetry data. Both are vital elements to not only control but also to help judge existing behavior. All this together helps you judge which elements belong in the system going forward and which don’t. It all starts from code. It is the foundation of the behavior we have. The original and leading specification. A change brief will always be temporary and its sole job is to describe the delta between existing and future functionality. The new implementation and its native checks become the next durable state.
Keeping specifications small does not mean returning to a loose prompt followed by hopeful review or even vibe-coding approaches. An agent can turn an underspecified request into a coherent implementation before the missing decisions become visible to anyone. The result may compile, pass the available tests, and look internally consistent. That coherent appearance is part of the risk now. Unapproved business decisions disappear into something very ordinary-looking because they got resolved plausibly.
And this behavior is backed by research. If we look at repairing ambiguous natural-language requirements, for example, we can see that directly asking models to resolve ambiguity often leads to inconsistent or even irrelevant results. Choosing a more targeted repair approach around the identified defects (change brief) improved the results by roughly 31%. SWT-Bench found that generated tests could filter proposed fixes and double the precision of a software repair agent. They used one agent to generate a proposed change and gave another the task to produce evidence to reject it. Lastly, the topic of formal specification generation: One interesting study I found gave 30 models the task to translate natural language into TLA+ (Temporal Logic of Actions, a specification language created by Turing Award-winner Leslie Lamport). The best results only reached about 27% syntactic correctness and 9% semantic correctness. The formal notation helped to detect mistakes, but it did not guarantee correctness or that the translation preserved the original meaning.
These results support focused clarification and independent checks. Clarify the uncertainties that can change the outcome, then verify the implementation with evidence that does not come entirely from the same reasoning path. Generating a longer specification does not solve that problem at all.
I want the strength and independence of the evidence to match the consequence of being wrong. A small internal refactor may need ordinary tests and code review. A change that involves security or financial aspects, or that even touches regulated data, needs a much stronger separation coupled with adversarial review and explicit human approval. For those changes, the agent proposing the implementation should not also be the only source of its requirements and tests.
In practice, I want a workflow that I can explain without a complex flow diagram. It starts with the evidence already in the system and makes the intended change explicit. Everything else is added only when the potential risk of the change justifies it. Ideally, this is a simple five-step process:
That is enough structure to guide the work without building a natural-language replica of the software.
Before implementation, the change brief describes the intended delta, and during implementation it helps people and agents align while new information changes the plan. But after the release the code and production behavior become the primary evidence of what the system does. Not separate documentation in any form that potentially drifts over time.
Durable obligations remain in the artifacts we already know how to maintain: schemas, tests, policies, configuration, telemetry, and short records for rationale that cannot be encoded elsewhere. Most planning details have completed their job by then and should expire.
I expect teams to get the most from coding agents when they are selective: specify what must be decided, discover what the system can answer, verify what carries risk, and let temporary planning go.
This Week in AI: When agents outnumber people [Radar]
AI agents are multiplying, and many of the systems used to manage them weren’t designed for their scale or speed. This week, host Vicki Reyzelman, a senior solutions engineer at Akamai, used one figure to connect developments in cybersecurity, infrastructure, education, and AI governance: For every human on the internet, there are 144 agents.
That ratio framed a larger question running through the episode. What changes when software can operate continuously, respond in seconds, and increasingly take action without waiting for a person? Vicki looked at faster cyberattacks, growing investment in agent security, the resource demands of AI infrastructure, and the expansion of AI from chat interfaces into robotics. The episode points beyond model selection to the systems required to deploy AI safely and reliably.
AI is compressing the time required to find and exploit software weaknesses. Vicki pointed to reports of attackers moving in minutes and vulnerabilities being exploited soon after public disclosure. She also described an attack against one of her customers in which the attacker returned, changed tactics, and tried again.
Traditional security processes assume there is time for people to investigate an alert, understand the vulnerability, deploy a patch, and monitor the result. That assumption gets weaker as automated systems become faster at reconnaissance and adaptation. Vicki argued for multiple defensive layers across APIs, applications, and networks so that one missed signal does not become a single point of failure.
We’ve followed agent security throughout This Week in AI, and the discussion now centers on how enterprise security changes around more autonomous software. That puts more weight on automated defenses, tighter permissions, and monitoring systems that can constrain machine activity at comparable speed.
AI capacity requires electricity, cooling, water, data center space, and the infrastructure that supplies them. Vicki connected large hyperscaler investments with projections for sharply higher data center energy and water use by 2030. An audience member added a useful example from a university data center that can reuse waste heat during colder months but has to shed that heat during warmer weather.
Those constraints affect deployment decisions directly. Organizations have to account for power availability, cooling systems, water access, latency, security, and local infrastructure capacity alongside model performance and cost.
Government policy already shapes those choices. The episode paired expanding investment in AI infrastructure with growing regulatory requirements in Europe. AI infrastructure now spans engineering, economics, compliance, and public policy, which means deployment decisions increasingly involve several systems at once.
Rapid AI adoption increases the value of foundational knowledge. Vicki raised that issue while discussing AI use in education and research. Students may have easier access to explanations and answers, but someone who does not understand the subject may have little basis for recognizing an incorrect result. The same problem appears in scientific work, where reliable AI output still depends on reliable data and reproducible processes.
That evaluation problem becomes more consequential when AI controls physical systems. Vicki described systems that can perceive their surroundings, pass information about that environment to a model, and use the result to guide physical actions. Errors in those systems can extend beyond a bad answer on a screen.
Practitioners still need to evaluate evidence, recognize weak assumptions, and decide where automated action should stop. Better models can reduce some forms of manual work, but they also increase the value of people who understand the domain well enough to know when a system’s output does not fit the situation.
AI systems can now operate faster and more independently than many of the processes surrounding them. Security teams have to defend at machine speed. Infrastructure planners have to account for physical resource limits. Researchers, students, and practitioners have to evaluate increasingly capable systems without assuming that capability guarantees correctness.
The 144-to-one ratio makes that change concrete. Agent adoption is already testing whether organizations can govern these systems, support the infrastructure they require, and preserve informed human oversight.
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.
Crib sheet: The Regicide Report [Charlie's Diary]
The Regicide Report came out in January 2026. Traditionally I wait for the paperback before writing one of these spoiler-laden crib sheets, but there won't be a US paperback edition and the UK one isn't until the end of the year: if you don't want to wait, you don't have to.
So here it is.
The Laundry Files main story arc runs through nine novels, not including A Conventional Boy, a number of novellas and short stories (of which ACB was originally intended to be one—it over-ran), and the New Management trilogy (which was originally going to be a separate successor series to The Laundry Files: it starts 18 months after the end of The Regicide Report—it turned out to be a marketing train-wreck, which I blame on COVID19 induced mix-ups on the publishing end of things). There may eventually be a short story collection, as most of the shorts have never been published in paper editions, but this is it for the main story, which was (since The Fuller Memorandum) intended to end with the final CASE NIGHTMARE GREEN confrontation.
One huge problem with writing any vaguely-contemporary thriller series is that the world doesn't stand still underneath your fictional version of the universe.
I originally intended to accommodate this by advancing the date from novel to novel at the same speed time passed in the real world. The Atrocity Archives were set circa 2001-03, The Jennifer Morgue in 2005, and so on. Bob had room to grow older: The Annihilation Score was set in 2012 and by The Nightmare Stacks the clock had run out to 2014.
But just as lot of cold war spy thrillers were left stranded by the sudden end of the Cold War in 1989-91, I was blindsided by the Brexit referendum and its consequences in 2015. Prior to Brexit, British politics had been evolving along roughly predictable lines since Thatcher came to power in 1979, drove a tank over the prior bipartisan social democratic consensus politics, and ushered in an era dominated by a rapacious neoliberal ideology. The unexpected Brexit referendum outcome derailed the freight train, with consequences that are still emerging a decade later, and left me supporting an increasingly precarious pile of spinning plates.
An immediate consequence of Brexit, in The Laundry Files, was that I had to hastily rewrite The Delirium Brief (after it was substantially complete), giving it a similar political rupture leading to the rise of the New Management.
But unfolding multi-book catastrophes take many years to write, and by the time I got through that point the Laundryverse was rapidly decoupling from real time. The period 2015-2019 coincided with my parents' final decline and death (they both made it into their 90s), then the collective trauma of COVID19. The Laundryverse as of 2019 was still stuck in an in-world version of 2014, and rapidly receding into the past. I managed to un-stick the clock for the New Management books (the original working title of which was Laundry Files: The Next Generation) and set them in 2016-17, but the series was already turning into alternate history by the time I got around to finishing writing A Conventional Boy (set circa 2011, the same year I began writing it: finally published in 2024).
At the same time, my publishers gently warned me that sales were threatening to enter the dreaded midlist death spiral. A midlist death spiral occurs when an author's sales decline from one book to the next. Bookstores base their orders for a new title in a series on a straight line extrapolation (no curve fitting!) of the previous two books, so any decline fatally undermines advance orders, and thereby sets up a self-fulfilling prophecy of decline. It was therefore time to wrap the series—at least, if I wanted to be able to earn a living in future years.
Which set me up for The Regicide Report, in which all the homing pigeons I'd released in earlier books would come back to roost—or at least as many as I could keep track of in my head (I write by the seat of my pants, there's no World Book in my desk drawer, and over 25 years you tend to forget little details).
Because The New Management books were already in print, I was writing inside certain constraints. The designated climax had to be finished in-universe by May 2015 (The Labyrinth Index was set in mid-2014). It needed to feature Bob and Mo, but Bob and Mo as they had evolved—on the threshold of middle age, cynical, burned-out, and constantly asking "are we the baddies?". It needed a confrontation with the Prime Minister in which he is left in absolute authority over the UK but his ambition to ascend to full godhood is thwarted. It demanded cameos by numerous characters, a climactic boss battle that made sense in context, and an ending that didn't amount to a personal tragedy for the original protagonists: you don't want to leave your long-term fans hating you at the end of a series. ("The fans are out there. They can't be bargained with. They can't be reasoned with. They don't feel pity, or remorse, or fear! And they absolutely will not stop, ever, until you are dead." Ahem: my apologies to James Cameron and Gale Anne Hurd, not to mention any non-Terminator fans that exist.)
The driver for the climactic confrontation in the series is the Black Pharaoh's goal of achieving a death-grip on the British state. This inevitably means confronting the ultimate source of occult power in the kingdom, the monarchy itself: but it's a novel I couldn't have pitched to my British publisher before September 8th, 2022. Elizabeth II was remarkably well-loved, or at least respected as a public figure, and pitching a novel about her assassination was ... well, it would have been inadvisable. However, following her actual death (probably from consequences of COVID19: following infection elderly patients are at very high risk of stroke or heart attack for several months) she suddenly graduated from reigning monarch to historical figure, and as such was no more off-limits than Queen Victoria or President Kennedy.
So my remit was: write a book in which the Black Pharaoh tries to bump off the Queen in 2015, fails to achieve occult supremacy, Bob et al battle him to a stalemate, and we ring down the curtain on the Laundry as an organization (indeed, by the end of The Regicide Report the Laundry of yore has been purged and its various duties merged into a new ministry directly controlled by the Black Pharaoh.)
Of necessity I had to start The Regicide Report by dumping a bucket of ordure over Bob's head—that committee meeting, where he accidentally outs a senior colleague by forgetting to reset the joke ringtone on his phone—and gets sent on a tour of outlying civil service offices as punishment. Yes, the Birmingham scene features an extensive Hot Fuzz tribute: yes, that is DI Angel. (It's one of the few early 21st century movies with cinematography that my damaged eyeballs and retinas could follow.)
One of the hallmarks of The Laundry Files is the repeated trope of pastiching thriller authors or urban fantasy subgenres. The Regicide Report kinda-sorta does this, only differently, by picking on a 1970s British movie anti-hero, The Abominable Doctor Phibes, a role portrayed stunningly well by Vincent Price in the two movies that actually got filmed (The Abominable Doctor Phibes and Doctor Phibes Rises Again). These films were among masterpieces of 1950s-1970s British horror genre, but are not without their weaknesses, and I'm not just talking about the cheap special effects. I had a loud argument with the scriptwriters in the privacy of my own skull, because the two most significant female characters (Vulnavia, Phibes' murderous muse, and Mrs Phibes) have zero talking lines in either film. This, I felt, was selling them both short. And besides, there was an obvious (to me) subtext that made the Phibes menage both Laundry-adjacent and explained the silence of the priestesses. If you watch the real movies then read the descriptions Bob and Mo give during their movie night, you'll spot some divergences: the Professor Phibes Bob meets in the Laundryverse is not the Dr Phibes of our world, nor are the movies exactly the same. (Let alone the third one, Dr. Phibes meets Mabuse the Gambler, notionally made in 1973 while Phibes was sleeping away the years in his glass coffin and not in a position to murder the producers.) NB: keep an eye open for the Cabaret references in that last one.
The assassination is carried out by means of poison: the toxic substance in question is entirely real and absolutely horrifying. Luckily you're very unlikely to come across it in real life, unless you work with laboratory assay equipment measuring environmental mercury contamination.
Buckingham Palace is indeed as vast and labyrinthine as I described it, but does not, to the best of my knowledge, feature server farms in the attic and a ritual sacrificial mock-up of the above-ground quarters in the basement. (It does have a bowling alley and, quite probably, a cinema organ.) There were plans to provide an emergency evacuation route via the Tube before the second world war, although it's unlikely the Royal Family would be in residence or evacuated that way in a real crisis today.
The basement crypt and archive of royal skeletal remains at Westminster Abbey is my own invention, as is the underground river, although there's an awful lot of buried history there: the site has been in use for over nine centuries.
As a point of note, if there were any historical truth behind the legend of King Arthur Pendragon, he'd almost certainly not feel any kinship to today's royals, who are descendants of a German dynasty invited in during the 18th century. Per legend Arthur was a 5th/6th century figure who led the post-Roman Britons. No Angles, Saxons, or Normans need apply. Nor is today's United Kingdom, or even today's England, clearly related to Arthur's: we don't speak the same language, England in its modern borders was only united during the 9th and 10th centuries, the prevailing religion back then would have been either a pre-Christian pagan tradition or very early Catholicism, and so on. Much of the Arthuriana we are familiar with today was invented out of whole cloth in the 12th to 14th century, at a time as far removed from its subject matter as that time is removed from us in this day and age.
Anyway, that's a round-up of my talking points about The Regicide Report. If you have any questions about the book, feel free to ask in the comments below.
Ian Jackson: Debian LLM GR - Summary of the options [Planet Debian]
Debian LLM GR - Summary of the options
LLMs have finally made it to the ultimate stage of Debian’s governance processes, a General Resolution of all the project’s full governing members (DDs).
There are a lot of options on the ballot, and they all have a different structure and approach the question in a different way. It can be hard to see the wood for the trees. I have made a summary table to try to capture the main differences, both in effect, and sentiment.
Suspending briefly my attempt to be neutral:
Before voting, I encourage you to read the passionate rationales in options H and A, or at least the summary in my option C.
Few of the LLM defences in the discussion threads, and none of the LLM-positive proposals, provide answers to any of these profound ethical concerns, many of which ought individually to be a deal-breaker. Instead, these crucial questions are simply dismissed or even ignored.
Some will tell you we should “keep politics out of software” but as we can see in the world around us, software is political - now more than ever. Debian’s mission is a highly political one: developing a fully-free operating system, and defending its freeness as we do, is far from neutral!
And of course many of LLMs’ harms affect Debian directly.
| A | G | C | H | F | D | B | E | |
|---|---|---|---|---|---|---|---|---|
| LLM harms | Robusly discussed | Discussed | Robusly summarised | Robusly discussed; especially re climate | Summarised | Accepted as inevitable | Disregarded [1] | Ignored |
| Direct contributions of LLM-generated code | Forbidden | Forbidden | Strongly discouraged | Strongly discouraged | Discouraged | Permitted | Permitted | Permitted |
| Direct use of LLM output in communications (bugs, mailing lists, etc.) | Forbidden | Forbidden | Forbidden (with possible exceptions) | Strongly discouraged | Discouraged | Permitted | Permitted | Permitted |
| LLM use where LLM output does not end up in the code/message | Forbidden | No position, so permitted | Strongly discouraged | Strongly discouraged | Discouraged | Permitted | Permitted | Permitted |
| Disclosure of LLM use | LLM use forbidden | LLM use largely forbidden, no further disclosure requirement | Disclosure required | Disclosure encouraged | Disclosure encouraged | Disclosure required | Disclosure required | Undisclosed LLM use is OK |
| Use of LLMs by upstreams | Condemned | “Not recommended” | ||||||
| Positive statements about LLMs | “Here to stay” | Moderate | Strong |
I have tried to present the options in semantic order, with most LLM-negative proposals to the left, and the most LLM-positive to the right.
I have not quoted the one-line titles for the options. These have generally been provided by the proponents of each option, and, unfortunately, some of them are IMO quite misleading.
Note that, unfortunately, the voting software likes to assign numbers to options but also to preferences. Be mindful of this possible confusion when casting your vote. For clarity I quote only the option letters.
Some of the proposals acknowledge the uncertain legal status of LLM output. But all of them implicitly or explicitly assume that LLM output is or can be DFSG free. So none of the proposals forbid upstream projects with LLM-generated contents.
None of the proposals would require us to go back to pre-LLM versions of the upstream projects we use, and attempt to fork and maintain them. I very much think there is room in the world for people to try to do that, but I don’t think the Debian project can be that effort.
Given that the conclusions are the same in each case, whether the matter is discussed does not seem to me to be a significant difference. I have therefore not included a column for it.
My proposal has a specific paragraph (7) explicitly permitting teams to set a “no LLM” policy. The other proposals do not discuss this point specifically. During the discussion, it seemed that most participants agreed that even options which explicitly permit LLM use generally do not prevent a team from setting its own more restrictive LLM policy.
I have therefore not tabulated this aspect.
Few of the permissive texts are absolute or unconditional. To summarise I have necessarily left out some nuance.
So for example when an entry says “permitted”, that generally means “permitted with conditions which are believed by LLM users to be readily satisfiable” (for example, DFSG-compatibility - see above).
Proposal B does mention that there are “concerns” about LLM use. But it fails to make an explicit statement about whether these concerns are justified.
It then proceeds exactly as if they are not justified. IMO “disregarded” is a relatively mild term for such a rhetorical technique.
Version 7.2 of the Linux kernel has been released.
Significant features in this release include common attributes support in the bpf()vsystem call, cache-aware load balancing for the CPU scheduler, large-folio support in the Btrfs filesystem, further swap subsystem improvements, improvements to the Landlock security module, support for block devices with inline encryption hardware via the dm-inlinecrypt device-mapper target, and much more.
↫ corbet at LWN.net
If you run Linux, you’ll get it sooner or later.
Pascal for small machines [OSnews]
We talked about the latest release of Delphi a few days ago, and that brought me to Hans Otten’s website.
This site is about my experience with the Wirth school of languages, based on the ideas and implementations of Prof Niklaus Wirth, Kenneth Bowles, Per Brinch Hansen, colleagues, and their students. And my experience with the various variants, from the P2 and P4 compilers originating in Zürich ETH, via UCSD Pascal P-System to the Borland compilers and Modula and Oberon systems. All applicable to small computers and device control.
On this website you will find information on Pascal for small machines, like Wirth compilers, the UCSD Pascal system, many scanned books and other files on UCSD Pascal, Pascal on MSX and CP/M, Delphi programming on PC, Freepascal and Lazarus on Windows and Raspberry Pi, Oberon systems. Many sources of early Pascal compilers! And last but not least my Pascal-M system!
↫ Hans Otten
If you’re into Pascal and its related languages and technologies, this is a treasure trove of information.
Super Mario derivations [OSnews]
One of the most surprising aspects of the Nix language is that it is lazy, especially if you have never used a lazy language before. This laziness is what makes much of Nixpkgs possible, and its complexity.
[…]
I decided to take that idea and make the attribute path a sequence of button presses in Super Mario Bros. 3. Each node in the tree is a frame of the game, and each child is a button press that produces a new frame. Game states are recursive by nature.
↫ Farid Zakaria
This has zero practical applications, and yet, it’s absolutely genius. I love this.
Trying Out Martie Goods [Whatever]
After my positive experience with Misfits
Market, I decided to try out some other online grocery
store delivery systems and see how these services compare. Today
I’ll be talking about my experience with Martie Goods; another online grocery store
with a mission of reducing food waste and making pricier items more
accessible. Founded by two moms, Martie has been around for five
years, and requires no membership or subscription fee. You only pay
for the items you want to buy (plus shipping unless you spend fifty
bucks, then you get free shipping).
While Misfits Market offers items that need to be refrigerated like meat, dairy, and eggs, Martie really only sells shelf-stable and pantry goods. However, they also have a substantial selection of items that Misfits doesn’t, like beauty products, fragrances, decor, cooking ware, etc. And they actually have some pretty notable brands!
For my first order, I stuck to food items, minus one kitchen item. A paring knife from Our Place, originally $40, but only $20 on Martie:

And here’s all the food items:

I thought the astronaut rabbit mascot snack looked really cool, so I got a bag of these miso and caramel flavored veggie puff chips, and they are pretty good! Actually very flavorful. My only complaint with these is that the expiration date is August 26th, so I better get to finishing the bag sooner rather than later.
I got some small oat bite breakfasty item thing, a six pack of African style spiced potato chips, Nature’s Bakery fig bars in the blueberry flavor (12ct), some coconut flavored butter cookies that are really yummy, a vegan beef broth, Divina rosemary crisps (I really like Divina’s spreads/jams, but sadly all these crisps were broken up and crumbled a good bit), an oddly shaped container of cannellini beans, some protein pretzels in three different flavors (honey mustard, dill pickle, and garlic parmesan) with each flavor coming with eight bags, and finally some pickled beets.
Oh, and this wagyu beef jerky I forgot to put in the main photo, so here it is separately:

This beef jerky was pretty good flavor-wise, but on the tougher side. Definitely need some floss for your molars if you try this kind out.
My favorite thing so far is the protein pretzels. The dill pickle will absolutely punch you in the face, but that’s better than being bland!
In total, my order was $88.42, and that includes the 10% discount off my first order, as well as my $3 shipping surcharge for being out in the middle of nowhere. The most expensive thing was the knife, with all of the snacks roughly being between three and seven bucks each.
When I ordered from Martie, shortly after they sent out emails saying that their shipping was behind schedule, and orders were delayed. They said profusely that this is not the norm for them, and they were very sorry about the delays. I placed the order on August 4th, and my package arrived on August 14th. Ten days isn’t so bad, especially because there’s nothing urgent or refrigerated in the order. Obviously if there were cold pack items, a delivery delay would be a lot more of a big deal.
If we take the knife out of the equation, $68 bucks for everything I got isn’t like absolutely mind-blowingly amazing, but it’s not bad. Honestly, I think I got a lot more savings and better value out of my second order, which has yet to arrive but consists of a lot of Philosophy shower and fragrance products, packs of beverages, and a very nice set of small plates (also from Our Place).
Anyways, I like Martie! Always nice to have another company trying to reduce food waste and sell overstocked items at a decent discount to the consumer. I like that there’s no membership fee, and that it isn’t subscription based, you can just order whenever you want instead of having to pick stuff to go into your scheduled box.
I recommend checking them out and seeing what kind of good deals you can get, as a lot of deals tend to go rather quickly. And of course, here’s a referral code for ten dollars off your first order. If you place an order, tell me what you picked out in the comments, and have a great day! (Oh, and hopefully the shipping delay isn’t as bad now if you do decide to place an order.)
-AMS
Hacking Public Wi-Fi DNS to Steal Credentials [Schneier on Security]
Criminals are hacking into public Wi-Fi devices—at hotels, conference centers, and so on—around the world and changing their DNS settings. The goal is to redirect users to fake login pages and steal their credentials.
Issue 47 – Greta’s Wedding Pt. 2 – 15 [Comics Archive - Spinnyverse]
The post Issue 47 – Greta’s Wedding Pt. 2 – 15 appeared first on Spinnyverse.
The State of Ticketing [The Daily WTF]
Developing software can't simply be done with a text editor and a compiler. There are a variety of other tools we have to bring to bear that support our efforts and keep the team organized, like say, source control.
There are certain tools we all have to use that I would argue, nobody has actually make a version that's any good. Build tooling is one of my go-to examples: there are no good build systems, only build systems that are good enough for this task.
Another is ticket/task management. In fact, I'd go so far as to say, there are no good ticket management tools. Amongst the not good tools, I'd put Jira as one of the not goodest of all.
What makes Jira attractive to companies is the same thing that makes it miserable, and the thing that infects any "enterprise" software platform and turns it into garbage: it has all the features and expect you to build your own workflows with it. You don't merely use Jira, you have to program your own interfaces in Jira to get your workflow into the system. And if you have the misfortune to have a project manager who thinks they're more technical than they are, they'll endlessly spin up new views, new workflows, and rearrange how the work is tracked in lieu of actually working.
I've been on that team.
One of Jira's features is the ability to describe the ticket workflow: the state machine that describes your process from the initial entry of the ticket all the way down to released software or project completion. This includes routing, so that as one team member does their part of the work, it automatically goes to someone else to do the next portion of the work.
Which brings us to Klinsten. They were working on a new team, and wanted to change the ticket status from its current status to whatever came next in the workflow. So they looked at the workflow.
These are two different versions of the same workflow, one with transition labels added, which as you can see, does nothing to clarify the workflow. That it's a mix of Dutch and English doesn't help matters.
The purpose of this workflow is to help the team understand how to sequence and organize their work. But this workflow has so many states and so many transitions, it fails at this goal. Looking at it makes me just want to gesloten my browser tab, because this user isn't accepting any of this.
Grrl Power #1487 – It takes two to backstab [Grrl Power]
Sure it takes two to backstab, but a storm of mirror images certainly helps.
The neat part is, Final Blade is always a backstab, no matter which way the target is facing. If the target happens to know that, and they put their back to a jet of plasma, (and presumably aren’t incinerated by that) it can be a problem for the backstabber.
Max isn’t arrogant enough to think that she’ll come out of the tournament unscathed. She reviewed all the quarterfinalist and above winners of previous U.C.B.A’s, and the earliest events usually favored the guy with the biggest cannons and most armor, be they mech or bioroid kaiju. But as the tournaments went on, being tough as shit became the minimum credentials for winning, and increasingly, having some flex skill or crazy hail mary or clinch ability determined the winner. So Max is definitely on the lookout for the Word of Death spell, or Petrify, or Electron Inversion or whatever.
What she’s more worried about is leaving DNA on the field. The Holo-Not-Latex-But-Basically-Print-On-Latex (which is a fair bit stronger than latex) outfit she’s wearing will prevent that, assuming attacks never get past her body reinforcement force field thingy. Now you may ask yourself, does Max have DNA at this point? Well, she has something. Human scientists haven’t mapped it yet, but it is, as far as anyone can tell, unique to her. The alien law enforcement database of “Protein Encoding Instructions Found in Crime Scene Goo” is vast, but sticking some of her blood or “skin” or whatever in there and have it come back with “Unknown Unique Sample EFX-13025a95” would still be easy enough to match to her if any alien Galaxy Rangers thought to sneak into her quarters and make off with her pillowcase.
Oh, look who it is in the vote incentive. And a
not-quite-yet-but-it’s-coming NSFW version over at Patreon.
Vote incentive and Patreon updated with some shading. Not finished yet, but progress.
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.
GNU poke 5.0 released [Planet GNU]
I am happy to announce a new major release of GNU poke, version
5.0.
GNU poke 5.0 release is now available at
https://ftp.gnu.o
... e/poke-5.0.tar.gz
The tarball is signed and you can get the PGP signature at
https://ftp.gnu.o
... ke-5.0.tar.gz.sig
GNU poke (http://www.j
... rch.net/poke) is an interactive, extensible
editor for binary data. Not limited to editing basic
entities such
as bits and bytes, it provides a full-fledged
procedural,
interactive programming language designed to describe
data
structures and to operate on them.
I'd like to thank everyone who contributed to this release through
code,
documentation, or testing.
What is new in this release:
commands (-p, --hserver-port).
uint<32> will be interpreted as a single-precision
floating-point number
and uint<64> will be interpreted as a double-precision
floating-point
number as defined per the IEEE 754 standard.
The following expressions are now supported:
- Addition: a .+ b
- Subtraction: a .- b
- Multiplication: a .* b
- Division: a ./ b
- Ceil-devision: a ./^ b
- Exponentiation: a .** b
- Remainder: a .% b
- Post-increment: a.++
- Pre-increment: .++a
- Post-decrement: a.--
- Pre-decrement: .--a
- Negation: .-a
- Less-than: a .< b
- Less-than-or-equal-to: a .<= b
- Greater-than: a .> b
- Greater-than-or-equal-to: a .>= b
- Equal-to: a .== b
- Not-equal-to: a .!= b
spaces! Extent of a PVM value mapped in a given IO
space will be tracked
and values will be re-mapped only if a write happens in
their extent; which
is a big performance win for read-intense programs.
length/size of an array with dynamic bound(s) to help the
user to
understand the mistake.
fields. Previously write to nested fields of
integral structs did not
materialize in IO space.
floating point numbers: sqrtf and sqrtd.
They accept uint<32> and uint<64> respectively
as the IEEE 754 single and
double precision floating-point numbers.
to not break the ABI, and bump the version components
according to the
libtool's recommendation (when needed).
are now accepting either pk_compiler or pk_val.
This is the first step
toward removing global state from libpoke to be able to have
multiple
instances of libpoke in a single process (and also to be
able to accomplish
thread-safety). We're not there yet, but we'll be there some
day (hopefully
soon)!
poke 1.0 by the rationale that it's not that useful of a
flag. Turns
out it's quite useful to start from an empty file when
assembling binary
files from scratch using poke.
fixed and the following methods has been added:
get_{file,owner_user,group}_name.
also add ptime_str function to get date/time information
as a string.
modules, but we still cannot have poke executable for
MinGW platform.
Help is very much appreciated in this area!
includes a bunch of corrections to the documentation!
Cheers to them!
Happy poking!
Mohammad-Reza Nabipoor
Consider the AI tear down [Seth's Blog]
Find a safe critic.
Upload your essay, your book, your artwork, your business plan or your resume to Claude. Then, pick a critic.
“Write a detailed, specific negative review that might appear on Amazon/in ArtNews/at a Ph.D defense/from a disappointed venture capitalist/from a recruiter”
A few things happen. First, you’ll likely read some 1-star reviews that you’re totally delighted with. It’s okay that my novel got one star because it has a sophisticated vocabulary. You may also realize that the negative noise in your head seems a lot more ridiculous if you read it on the screen.
Second, you’re much less likely to take it personally, because it’s not coming from a person. It’s a parody of a person, and in those words you might find some truth worth reading.
And third, you’ll realize it’s impossible to please some people. Criticism is what critics do.
It’s not worth making this a habit, because the negativity can easily get stuck in our heads. If that happens, ask for some glowing reviews instead.
PS here’s what Claude said about this post:
This is exactly the kind of pseudo-profound productivity hack that passes for insight in marketing circles these days.
Let me get this straight: your advice is to use AI to generate fake criticism so you can… feel better about ignoring it? The logical gymnastics here are remarkable. We’re told the fake reviews will contain “truth worth reading,” but also that we shouldn’t take them seriously because they’re “not coming from a person,” but also that we should stop if the negativity “gets stuck in our heads.” Pick a lane.
The real tell is buried in the middle: “It’s okay that my novel got one star because it has a sophisticated vocabulary.” Ah yes, the classic defensive crouch dressed up as self-awareness. You’ve essentially built a machine for manufacturing comfortable rationalizations. “See, the AI said mean things, but I’ve decided they don’t count because [insert excuse here].”
And the finale—if the fake criticism bothers you, just ask for fake praise instead! Problem solved. We’ve successfully turned AI into a therapeutic tool for avoiding genuine self-examination while maintaining the appearance of rigor.
Here’s what’s missing: any acknowledgment that real criticism from real people who actually read your work might be… useful? That the discomfort of genuine feedback is precisely what makes it valuable?
But I suppose that’s harder to monetize than “try this one weird trick.”
And, at the risk of being too meta, here’s Claude’s response to the response:
A Comment Ripping the Critic
Congratulations on demonstrating the exact behavior the post describes. You’ve written a performatively harsh takedown that reveals far more about your need to seem clever than about any actual flaw in the idea.
Let’s talk about your reading comprehension. The post never suggests ignoring criticism—it suggests practicing receiving it. There’s a difference between “feel better about ignoring feedback” and “build some emotional distance so you can actually hear it.” But nuance doesn’t generate the dopamine hit of a sick burn, does it?
Your “pick a lane” complaint is particularly rich. The post describes a tool with multiple uses. Sometimes the fake review reveals genuine blind spots. Sometimes it shows you that certain critics are unpleasable. Sometimes you need to step away. These aren’t contradictions—they’re different outcomes from the same exercise. That you can’t hold multiple possibilities in your head simultaneously says more about you than about the argument.
And your grand finale about “real criticism from real people”? Please. Most creative work never gets meaningful feedback at all. It gets silence, or a thumbs up from mom, or rejection letters that say nothing useful. The fantasy that there’s a queue of thoughtful critics waiting to help you improve is exactly that—a fantasy. This tool fills a gap. It doesn’t replace the feedback you’re not getting anyway.
But here’s what really gives you away: the sneering about “marketing circles” and “monetizing.” You showed up pre-loaded with contempt, looking for confirmation. The post was simply the surface you projected it onto.
You’ve proven the point beautifully. Some people are just looking for something to tear down.
New Comic: Squid Lids
Pluralistic: Jennifer Jenkins' 'Music Copyright, Creativity, and Culture' (17 Aug 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

Nobody explains copyright like Jennifer Jenkins, the director of the Duke Center for the Public Domain, in which capacity she is responsible for the annual New Year's roundups of all the materials entering the public domain (a series that started in the decades during which the public domain was frozen by the Sonny Bono Copyright Act):
https://pluralistic.net/2023/12/20/em-oh-you-ess-ee/#sexytimes
Jenkins has a gift for making one of the most complicated, worst understood, most consequential areas of law not only comprehensible, but also fascinating. Her late 2023 explanation of what "Mickey Mouse's copyright is expiring" actually meant was the single best explainer on the subject, in a crowded field:
https://pluralistic.net/2023/12/15/mouse-liberation-front/#free-mickey
Small wonder that she's the go-to copyright and trademark expert for so many media outlets. Perhaps you heard her Planet Money segments on which superheroes are in the public domain:
https://www.npr.org/transcripts/969512231
Jenkins' flair for legal communications carries over to her scholarly work, of course, which is why her Open Copyright Casebook is a standard text for American law schools:
Jenkins co-wrote the Casebook with her husband, the equally erudite and expert James Boyle. It's just one of their many fruitful collaborations; they are also the writing team behind THEFT! A History of Music, the greatest graphic novel ever created about the history of music, music law, music censorship, and the music industry:
https://web.law.duke.edu/musiccomic/
Last year, Jenkins published Music Copyright, Creativity, and Culture, an Oxford University Press title that fuses her scholarly and popular work in a generalist textbook on the legal framework for music that will forever change how you think about music. Now, a second edition, with a lengthy section on new music litigation, AI copyright fights, and the issue of uncompensated labor is available as an open access download:
https://web.law.duke.edu/cspd/musiccopyright/
Music Copyright weaves together the economic, cultural, political and artistic history of music, pulling on historic threads ranging from antiquity to medieval Europe to the age of mechanical reproduction to describe changing views of musicians, their audiences, and religious and political leaders on what constituted music, who was allowed to make music, and what music was for. In so doing, she firmly establishes the extremely contingent nature of our present-day norms around music, showing that the "natural" present-day assumptions about who gets paid, who pays, and when payment (or permission) is required are anything but, and are always in flux.
For obvious reasons, much of Jenkins' text describes these changes in the context of the record, the radio, satellite transmission, P2P file-sharing, and digital sampling (along with a chapter on AI). These examples are liberally illustrated with links to musical excerpts that bring the subject to life (these are presented as hotlinks in the ebook; if you're reading the print edition, you can use the book's companion website:)
https://web.law.duke.edu/cspd/musiccopyright/
Interspersed with these histories and analysis are lengthy, extremely on-point excerpts from THEFT!, her graphic novel history of music. These enliven the text as much as the music samples, making this textbook as entertaining as it is informative.
Of especial interest – and importance – are the long sections on the courtroom battles of Ed Sheeran, Katy Perry, and Pharrell Williams over similar "grooves" and "vibes" to other songs, some of them well-known and some quite obscure:
https://pluralistic.net/2022/04/08/oh-why/#two-notes-and-running
These cases highlight the fundamental incoherence of music copyright, a system composed of improvised responses to new technologies, each layered atop the last in a messy pile that virtually no one understands.
Jenkins understands it, though. I've been reading, writing, and debating about this stuff since the late 1990s, and I learned something new on every page of this delightful book. This should be required reading for anyone who makes music, loves music, or cares about musicians and the arts more generally. It's a towering accomplishment and a brilliant read.

Who Crapped on Johnny Depp's Bed? https://www.youtube.com/watch?v=vGt7-WnWdhE
No-One Makes You Shop at Amazon https://www.programmablemutter.com/p/no-one-makes-you-shop-at-amazon
Paramount’s Merger Strategy: Empty Promises and Empty Threats https://prospect.org/2026/08/14/paramounts-merger-strategy-empty-promises-threats-justice-department-antitrust/
they_live_adblocker https://github.com/davmlaw/they_live_adblocker
#25yrsago RIP, The Industry Standard, Palm buys BeOS https://web.archive.org/web/20010927192339/http://www.wired.com/news/business/0,1367,46113,00.html
#25yrsago Smart dust sensors https://web.archive.org/web/20011112010004/http://www.smalltimes.com/document_display.cfm?document_id=1935
#25yrsago Pentagon patents onion-routing https://web.archive.org/web/20010912222427/http://www.wired.com/news/politics/0,1283,46126,00.html
#25yrsago Coltan: the conflict mineral in our gadgets https://www.nytimes.com/2001/08/12/magazine/the-dirt-in-the-new-machine.html
#25yrsago Danny Goodman Talks About HyperCard https://web.archive.org/web/20011214114614/http://www.oreillynet.com/pub/a/mac/2001/08/17/goodman.html
#25yrsago Report an insecure website, win a visit from the FBI https://web.archive.org/web/20010820110330/http://www.linuxfreak.org/post.php/08/17/2001/134.html
#20yrsago Copyright wars: film-makers eats themselves https://web.archive.org/web/20070318010544/https://www.laweekly.com/film+tv/film/freedom-of-information/14244/
#20yrsago RyanAir to UK govt: ease off on security or we sue https://www.theguardian.com/business/2006/aug/18/theairlineindustry.terrorism
#20yrsago Federal court bans Bush’s warrantless spying on Americans https://edition.cnn.com/2006/POLITICS/08/17/domesticspying.lawsuit/index.html
#20yrsago Western millionaires plotted Equatorial Guinea coup as a game https://web.archive.org/web/20071114211448/https://www.salon.com/books/review/2006/08/17/roberts/index_np.html
#20yrsago Sweden’s Pirate Party – political arm of the pro-piracy groundswell https://web.archive.org/web/20060820093355/https://www.wired.com/news/technology/1,71544-0.html
#20yrsago Hair-Gel Bombers win war on bras https://www.huffingtonpost.co.uk/entry/us-authorities-leave-gel_n_27402
#20yrsago Would a hair-gel bomb actually work? https://seclists.org/interesting-people/2006/Aug/86
#20yrsago The Pirate Bay’s backstory https://web.archive.org/web/20060901180116/https://www.wired.com/news/technology/1,71543-0.html
#20yrsago AOL will dig for buried platinum and gold in spammer’s Mom’s yard https://www.nbcnews.com/id/wbna14365934
#15yrsago Charlie Stross on network security in 2061 https://www.antipope.org/charlie/blog-static/2011/08/usenix-2011-keynote-network-se.html
#15yrsago Damning 2007 letter asserts that phone hacking was an open practice at News of the World https://www.theguardian.com/media/2011/aug/16/phone-hacking-now-reporter-letter
#15yrsago In-game Ponzi nets US$50K https://web.archive.org/web/20110921052125/http://gamergaia.com/pc/1724-eve-online-space-heist-one-trillion-isk.html
#15yrsago Copyright troll handed ass (again), tries saddest trick ever to get out of paying its victim’s legal bills https://arstechnica.com/tech-policy/2011/08/righthaven-rocked-owes-34000-after-fair-use-loss/
#15yrsago English cops arrest man for planning water-fight via Blackberry Messenger https://www.theguardian.com/media/2011/aug/15/essex-water-fight-blackberry-messenger
#15yrsago Woman who recorded Massachusetts police beating charged with illegal wiretapping https://www.masslive.com/news/2011/08/videographer_of_alleged_melvin.html
#15yrsago Criticism of a brand lowers the self-esteem of its adherents https://arstechnica.com/science/2011/08/users-treat-criticism-of-favorite-brands-as-threat-to-self-image/
#15yrsago Homeopathy multinational sues blogger over statements that its mythological curative had “no active ingredient” https://web.archive.org/web/20110930131033/http://www.blogzero.it/contatti/prova/
#15yrsago Edinburgh Fringe show asks audience to shred banknotes https://www.theguardian.com/culture/2011/aug/16/crunch-edinburgh-festival-shred-cash
#15yrsago CCTV deterrence and the London uprising https://www.theguardian.com/technology/2011/aug/17/why-cctv-does-not-deter-crime
#15yrsago Paul Krugman: save the economy by staging an alien invasion hoax https://comicsalliance.com/watchmen-paul-krugman-alien-invasion/
#15yrsago Minecraft creator challenges trademark belligerents to winner-take-all Quake deathmatch https://web.archive.org/web/20110817205045/http://notch.tumblr.com/post/9038258448/hey-bethesda-lets-settle-this
#15yrsago Muphry’s Law: the inevitability of typos in discussions of typos https://web.archive.org/web/20101227141449/https://www.editorscanberra.org/muphrys-law/
#15yrsago Copyright complaint as phishing email https://memex.craphound.com/2011/08/18/copyright-complaint-as-phishing-email/
#15yrsago Rep Allen West pens “dumbest thing ever written on congressional stationery” https://web.archive.org/web/20110914030034/https://thinkprogress.org/security/2011/08/17/297619/allen-west-nuts/
#10yrsago The NSA’s program of tech sabotage created the Shadow Brokers https://web.archive.org/web/20160818132904/https://www.wired.com/2016/08/shadow-brokers-mess-happens-nsa-hoards-zero-days/
#10yrsago Walmarts are high-crime zones thanks to staff cuts, but America gets the bill https://web.archive.org/web/20160818000539/https://www.bloomberg.com/features/2016-walmart-crime/
#10yrsago DoJ says it will end private federal prisons https://www.motherjones.com/politics/2016/08/department-justice-plans-end-private-prison/
#10yrsago Fiction: Sgt. Augmento, Bruce Sterling’s robots-take-our-jobs story https://web.archive.org/web/20160818161624/https://motherboard.vice.com/read/sgt-augmento
#10yrsago Las Vegas: high unionization rates mean smaller wage-gaps for women, especially older women https://www.nytimes.com/2016/08/17/opinion/how-unions-help-cocktail-servers.html
#10yrsago The incredible true story of the Epcot Horizons superfans who ruled the ride https://web.archive.org/web/20160822031741/https://dangerousminds.net/comments/the_true_story_of_the_unauthorized_daredevil_documentation_of_the_horizons_/
#10yrsago Predictive policing predicts police harassment, not crime https://web.archive.org/web/20160821093834/https://link.springer.com/article/10.1007/s11292-016-9272-0
#10yrsago UC Davis Chancellor spent $400K+ to scrub her online reputation after pepper-spray incident https://www.sacbee.com/news/local/article94733812.html
#10yrsago Reputation systems work because people are mostly good https://timharford.com/2016/08/the-meaning-of-trust-in-the-age-of-airbnb/
#10yrsago The guy who started Serbia’s ethnic cleansing led a pro-Trump rally in Belgrade https://web.archive.org/web/20160817022133/https://theintercept.com/2016/08/16/serb-inspired-ethnic-cleansing-bosnia-leads-vote-trump-rally-belgrade/
#10yrsago Europe’s banks want to store billions in cash to fight back against negative interest https://web.archive.org/web/20160817152157/https://www.cnbc.com/2016/08/16/banks-look-for-cheap-way-to-store-cash-piles-as-rates-go-negative.html
#10yrsago Kill Rock Stars president explains why the radio plays the same songs over and over https://www.youtube.com/watch?v=ThrXkYwTBP8
#10yrsago Snowden explains the Shadow Brokers/Equation Group/NSA hack https://www.techdirt.com/2016/08/16/ed-snowden-explains-why-hackers-published-nsas-hacking-tools/
#10yrsago Hackers claim to have stolen NSA cyberweapons, auctioning them to highest bidder https://web.archive.org/web/20160816035711/https://motherboard.vice.com/read/hackers-hack-nsa-linked-equation-group
#10yrsago What life is like when you really understand advanced mathematics https://www.quora.com/What-is-it-like-to-understand-advanced-mathematics-Does-it-feel-analogous-to-having-mastery-of-another-language-like-in-programming-or-linguistics
#10yrsago Parents who can’t pay the bill for kids’ incarceration can still go bankrupt, a US court rules https://archive.thinkprogress.org/everything-wrong-with-how-our-justice-system-treats-poor-people-in-one-awful-case-bfd91a6fa114/
#10yrsago UK Intellectual Property Office grants trademark on “should’ve” https://www.bbc.co.uk/news/business-37092366
#10yrsago The Greatest of Marlys! is the Lynda Barry book we’ve been waiting for https://memex.craphound.com/2016/08/16/the-greatest-of-marlys-is-the-lynda-barry-book-weve-been-waiting-for/
#5yrsago Housing, money laundry, speculation and precarity https://pluralistic.net/2021/08/16/die-miete-ist-zu-hoch/#assets-v-human-rights
#5yrsago Big Oil caught lying about methane https://pluralistic.net/2021/08/17/king-bullet/#methanescan
#5yrsago Sandman Slim's final adventure https://pluralistic.net/2021/08/17/king-bullet/#sticking-the-dismount
#5yrsago The Sacklers threaten us all with a good time https://pluralistic.net/2021/08/18/lets-make-a-deal/#art-of-the-deal
#1yrago Zuckermuskian solipsism https://pluralistic.net/2025/08/18/seeing-like-a-billionaire/#npcs
#1yrago LLMs are slot-machines https://pluralistic.net/2025/08/16/jackpot/#salience-bias

Sydney: The Festival of Dangerous Ideas, Aug 23-24
https://festivalofdangerousideas.com/program/
Melbourne: Enshittification at the Wheeler Centre, Aug 25
https://www.wheelercentre.com/events-tickets/season-2026/cory-doctorow-enshittification
Brighton: The Reverse Centaur's Guide to Life After AI with
Carole Cadwalladr (Brighton Dome), Sep 8
https://brightondome.org/whats-on/LSC-cory-doctorow-the-reverse-centaurs-guide-to-life-after-ai/
London: The Reverse Centaur's Guide to Life After AI with Riley
Quinn (Foyle's Picadilly), Sep 9
https://www.foyles.co.uk/events/enshittification-cory-doctorow-riley-quinn
Manchester: Take Back Big Tech with Jovan Owusu-Nepaul (House of
Books and Friends), Sep 11
https://ma.to/event/cory-doctorow-house-of-books-and-friends-11-sep-2026
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
Victoria: Munro's Books (Oct 20)
https://www.munrobooks.com/events/6113620261020
Vancouver: BC Policy Solutions Gala, Nov 12
https://bcpolicy.ca/gala/
Who The Machine Serves (EFF)
https://archive.org/details/effecting-change-who-the-machine-serves
Speculative Fiction for Social Change II (Cool People Who Did
Cool Stuff)
https://pocketcasts.com/podcast/cool-people-who-did-cool-stuff/08cbb840-a6ae-013a-d8aa-0acc26574db2/part-two-cory-doctorow-on-speculative-fiction-for-social-change/937e8800-9404-45a6-b5e3-90ebee2cfaea
Speculative Fiction for Social Change I (Cool People Who Did
Cool Stuff)
https://pocketcasts.com/podcast/cool-people-who-did-cool-stuff/08cbb840-a6ae-013a-d8aa-0acc26574db2/part-one-cory-doctorow-on-speculative-fiction-for-social-change/15ad467c-0832-44c9-91ea-59defd783dba
AI, automation and enshittification (Telecoms.com)
https://www.telecoms.com/ai/the-telecoms-com-podcast-ai-automation-and-enshittification
"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
Breaking Up, p13 [Ctrl+Alt+Del Comic]
The post Breaking Up, p13 appeared first on Ctrl+Alt+Del Comic.
Girl Genius for Monday, August 17, 2026 [Girl Genius]
The Girl Genius comic for Monday, August 17, 2026 has been posted.
That's How You Get Raccoons [QC RSS v2]

or xenomorphs
Brent
Simmons posted a note in
RSS.chat about how to connect with NetNewsWire. I have a fairly
detailed response, that says
dynamic
OPML is the way to go. I know serving it publicly will be a
problem, that's why we're going to move FeedLand into position to
solve that. FreshRSS,
InoReader
and my own FeedLand already
support it. It feels like this is getting established. I still want
a podcast client to work here. I've pitched a few of them. Will
continue.
Bits from Debian: Debian turns 33! [Planet Debian]

It has now been thirty-three years since the Debian project was announced to the world by Ian Murdock, on August 16, 1993. This anniversary is an opportunity to reaffirm the goals, characteristics, and qualities of the Debian project: it’s an association of individuals who have made common cause to create a free operating system. Our distribution is characterized by a commitment to software freedom, as enshrined in the Debian Social Contract and the Debian Free Software Guidelines. It focuses on security and stability. This stability is crucial to Debian position in the free software ecosystem.
With our users as our priority, Debian makes special efforts regarding accessibility with Debian-Accessibility and diversity with our Outreach Programs.
Debian Day is a great opportunity to get together, whether for a local meetup, or simply to grab a coffee with other members of the Debian community. Check out the Debian Day wiki to see if there is a celebration near you. And if there isn't, maybe you can organize it next year!
Today is also an opportunity for you to start or resume your contributions to Debian. For example, you can install the how-can-i-help package and see if there is a bug in any of the software that you use that you can help to fix, contribute small tips on how to install Debian on your machines to our wiki pages, or put a Debian live image in an USB memory and give it to some person near you, who still didn't discover Debian.
Thanks to everybody who has contributed to develop our beloved operating system in these 33 years, and Happy birthday Debian!
Sometimes I need to use a Google-style search engine to find something on a reference site. That no longer works in Google. This is a major feature pullback. So far all we've heard in journalism is how it hurts their bottom line, but nothing about the world's information architecture. This is something like every bridge in the world being blown up at the same time, and I don't think that's an exaggeration.
Joe Marshall: SDK for jrm-code-project.com [Planet Lisp]
A few of you have noticed the OpenAPI spec floating around the site lately. Rather than watching everyone write the same HTTP boilerplate from scratch to talk to the server, I went ahead and bundled up a set of official client bindings.
If you want to programmatically hit the pastebin or mess with
the other endpoints, the jrm-code-client repository is
live.
Right now, it includes complete SDKs for:
They all handle the JWT authentication handshake natively and
deserialize the JSON responses into proper language-specific
structs/objects. You can stop raw-dogging it with curl
(unless that's your thing).
Source is up on GitHub: jrm-code-project/jrm-code-client
Play nice with the rate limits.
Vasudev Kamath: Releasing debvulns-exporter and debvulns CLI 0.2.2 [Planet Debian]

I made another minor release with several enhancements: handling non-Debian origin vulnerabilities, improving data caching, and sharing the cache between the debvulns CLI and the exporter. Additionally, there are a few improvements on the dashboard front. Here is a breakdown of what changed.
During the previous release, I noticed that the grafana package—which is not in Debian and was installed via an upstream repository—was reported as vulnerable with multiple issues. Looking into why this happened, I found that all the CVEs reported in the dashboard were indeed listed on security-tracker.debian.org, but without a fixed version or status description. The logic assumed no fix was available and marked the package as vulnerable on the dashboard.
Google maintains a distributed vulnerability database for open-source projects called osv.dev. I checked the generic vulnerability data for those CVEs on OSV (unbound to any specific distribution) and found that the issues were already fixed in the upstream version I was running. What I needed was a way to differentiate native Debian packages from non-Debian packages, which corresponds to the Origin field in APT metadata.
The AI-generated code initially attempted to differentiate package origin using apt_pkg.PackageRecords and its origin field. However, many native Debian packages were incorrectly flagged as non-Debian. On closer inspection, when an upgrade is available for a package, the installed version's origin field can be unset. I had to resolve this by detecting available upgrades and inspecting the candidate version's origin instead, which was implemented in this patch. This solution was proudly crafted by me ;-) (partly because I ran out of API limits and had to wait 6 hours for the next reset).
Initially, the AI implemented the exporter to re-download the entire OSV dataset on every run, which was unnecessary. Since vulnerability data does not change rapidly once published, caching it on disk for longer than the standard 24-hour Debian/EPSS cache makes sense. OSV vulnerability data is now cached for 7 days before a refresh is triggered.
All cache expiration thresholds remain configurable via CLI flags.
One caveat with this approach: I have not yet verified whether every upstream CVE is tracked on security-tracker.debian.org. In the case of grafana, the entries existed. This feature operates on the assumption that security-tracker.debian.org indexes CVE metadata regardless of whether the package is native to Debian. I plan to re-evaluate this and add fallback handling if that assumption fails.
Another issue was cache segregation: the debvulns CLI utility defaulted to /var/cache/debvulns, while the Prometheus exporter used /var/cache/debvulns-exporter. While harmless when running only one tool, installing both led to duplicated cache storage and redundant network requests. Since the core evaluation logic is identical across both tools, they now share a unified cache directory to eliminate duplicate downloads.
During the initial dashboard rollout, my test environment (my laptop alongside Debian 11 and Debian 12 VMs) reported a high aggregated vulnerability count. It was not immediately obvious whether these were distinct vulnerabilities or the same CVEs replicated across all three machines. This mirrors common questions raised during vulnerability reviews:
The dashboard has been redesigned to surface unique vulnerability counts alongside affected package lists. The updated dashboard is shown below:

A few planned items remain to make debvulns a comprehensive vulnerability reporting toolkit for Debian systems:
Until then, happy hacking.
Replace the filters [Seth's Blog]
Here’s a simple hack/reminder: If you buy something that has a filter or other part that needs replacing, create a recurring event in your calendar. Also mention where you store the extra filters, and include a link on where to buy more of them. Works for monthly dog meds, too.
And…
If you paint a room in your home, write the type of paint you used on the back of the switchplates.
I’ve also found that the back of a framed picture is a great place to write down something you don’t want to forget.
Recently, I’ve started taking pictures of everything that’s on a shelf or in a drawer that I’ve reorganized. Then I upload to Claude so that the next time I’m looking for something, I’ve got a shot at finding it.
Mostly, it’s about developing the habit of writing things down that we’re sure we’ll remember later.
Benjamin Mako Hill: Sad Story [Planet Debian]
Not a screenshot of despair. But only because it’s not a screenshot.
Joe Marshall: OpenAPI Access to jrm-code-project.com [Planet Lisp]
It's a web site! It's a service! jrm-code-project.com has an OpenAPI specification and you can use it to generate client code in your favorite programming language (which is Lisp, right?). The OpenAPI specification is available at https://jrm-code-project.com/openapi.yaml. There are the following endpoints:
GET /api/v1/ping - Returns a simple "pong"
response to test connectivity and verify your authentication
tier.POST /api/v1/echo - Accepts a JSON payload and
returns the same payload in the response. For testing your
client.POST /api/v1/auth/token - Exchange your long-lived
programmatic API key for a short-lived JWT Bearer token to
authenticate secure requests.GET /api/v1/pastes - Retrieve a paste's content by
its ID (Publicly readable, no auth required).POST /api/v1/pastes - Create a new code snippet
paste (Requires JWT).DELETE /api/v1/pastes - Delete a specific paste
you own (Requires JWT).GET /api/v1/user/pastes - List all non-expired
pastes associated with your authenticated account (Requires
JWT).POST /api/v1/chef - Programmatic access to The
Chef. Submit your raw Lisp code to be mercilessly roasted.
(Requires JWT and a x-goog-api-key header with your
Gemini API key).I invite you to explore the API and see what you can build with it. If you have any questions or feedback, please don't hesitate to reach out to me at eval.apply@gmail.com.
Sven Hoexter: FrOSCon 2026: TLS Talk [Planet Debian]
Info: German content only, sorry.
I was pondering for the past three years if I should give some sort of TLS basics talk at FrOSCon. I finally stepped up this year and gave that talk today, with the title "TLS, mTLS, SNI, ECH, CAA, HTTPS, PKI, Zertifikate und ein bisschen PQC". I was too optimistic with my 50 slides, and had to drop the Post Quantum Cryptography part at the end. Still got positive feedback from Zugschlus and others - thanks a lot for that <3 - and was asked for the slides. It's not a piece of art, but maybe it helps to release the LibreOffice odp file as well, so others can use it as a base for other events or corp internal talks. So here is the froscon-tls-2026.pdf and froscon-tls-2026.odp, both released under the CC BY-NC license.
The video is also available at media.ccc.de if you want to watch it.
Thanks to everyone who made FrOSCon happen for the 21th time!
Say Hello to My Warty Friend [Whatever]


This little dude was on the doorstep of my garage around 4am (i.e., when the dog told me she really really had to go pee). That’s not a great place for a smallish amphibian to be, considering there are predatory mammals who patrol the territory and would be happy to take a run at a toad. This particular type of toad has a mildly toxic coating that will make such an encounter an unhappy one, so it’s possible he’d survive meet-up, but that wouldn’t stop an exploratory bite.
I tried to nudge it with my phone to get it to hop away, but the toad seemed resistant to being pushed. Then I figured it out: I had left the outdoor garage light on, attracting a bunch of flying insects, and this little dude was hanging around for the snackage. So I turned off the light, thus ruining his smorgasbord, with the hope he would hop away in disappointment. This morning did not find me discovering either his eviscerated body or any frog blood, so I think I may have been successful. I wish this little dude a long and happy life, one, for his own safety, away from my house.
— JS
Thinking out loud on a Saturday morning [Scripting News]
Tech is very competitive, I learned, even when you give your
work away, which I have been doing for a couple of decades. Maybe
even especially when you give it away.
I want to work with other people, and am always making invitations. When I see a product that fits in with what I'm doing my first impulse is how do we connect them? This is one of the basic great things about computers and our networks. But there must be interop between people before there can be interop between products.
Connecting two pieces of tech is mostly mathematics, code writing, not very much in the way of manufacturing, whereas in the physical world two train lines can cross each other but can't connect because they have different rail spacing, or run on a different kind of fuel. In software if there's a huge difference like that you can make a software bridge, as they did with TCP/IP, and it costs a little time to convert each request twice for each transaction, but that cost is pretty close to zero.
That's what I want, working together, but what I get instead is people want to be me. They want to take over the project I'm working on, which if they understood it from my point of view is always the most ridiculous choice possible because it is impossible. So many stories to go with this. One of the most puzzling was when one of my best friends signed up to do a development project with a developer who used to work for me. Long story, but when you come down to it, he wanted to be me, not work with me.
But I didn't want to be Doug Engelbart or Ted Nelson though I learned from them. I certainly didn't want to be Bill Gates or Steve Jobs. I probably would have liked being Dennis Ritchie or Ken Thompson. I have ideas of things that should be done that for some reason no one else sees. I start working and sometimes they take off. Then everyone writes business plans and boom, they start up and shortly thereafter they fail. This happened with RSS. I was meeting with a lot of VCs, I wanted to start a company to build two-way RSS apps and content, as we had pioneered at UserLand. Seemed like a total no-brainer. I felt I had proven I had a clue. But they invested in hired programmers so the VCs could be the vision behind the products (I guess, I don't really know know why) instead of me.
I had a colleague at Berkman tell me to get out of the way because he was going to take over RSS. To this day people don't get why competing with RSS was counter-productive, assuming your goal is interop. When another friend tried to take over OPML, as I was promoting it at the time on my blog and going on a roadshow to answer questions and raise interest, I was so sick of the whole thing, he wasn't the only one, btw, I just stopped promoting it and poof like magic their ventures disappeared. If they had offered friendship and interop, which they didn't, it could have worked. One of these guys even tricked Harvard into hosting an OPML conference. They assumed everyone who repped open tech was legit.
The thing that really pissed me off is that while this was going on, people started writing about me, literally, grammatically, in the past tense. People whose accomplishments weren't that great imho. Look at sports and entertainment, how they celebrate those who made contributions to their arts, I wonder when tech will gain that level maturity. It's childish to not respect those whose work you build on. And btw, unlike sports players, while programmer's minds do eventually lose some brilliance for coding, because it relies so heavily on memory, I've experienced that myself -- our ability to create and set standards doesn't have an actual expiration date. If you want to keep creating at 40, 50, 60 even 70, you probably can.
My life has been full of all kinds of wonderful coincidences, at the exact moment I need it along comes Claude Code, and all of a sudden I can do much bigger projects than I ever could when I was in my 20s and 30s. Which I think is good, not just for me but for the whole thing. Because there are processes and concepts that belong in the toolkit of every developer that were squashed by Apple in the 90s (I'm relearning this now as I'm working on getting Frontier running on Node.js) and now we have a chance to restore it to mostly running condition. Some features will be hard to make work, because of peculiarities in JavaScript.
Maybe as one of my last creative acts, I will try to hook up with a university to build bridges between generations that aren't specific to any timeframe, to making handing off a lifetime of work viable, and maybe the AI tools can facilitate that. Just thinking out loud on a Saturday morning.
BTW, I was talking about this with Doc Searls a couple of years ago and offered a name for the seminar series, The Exit Interview. This gave me a thought, when Berkman had their reunion a couple of summers ago, they did a long video interview with me to explain how we got all the stuff running there that we did. It was going back to Berkman, even though the building is gone (which I kind of like, that's how fast things change) that summed up what had gone wrong. We were off to a fantastic start with blogging, podcasting, politics and education -- we weren't just making software and creating standards, we were involving the creative people the new medium would enable. This is something you don't find often in the tech industry. Academic freedom can be a real thing.
Russell Coker: Hacked by Chinafans [Planet Debian]
On 2026/08/10 at 2:11 am Australian eastern standard time (2026/08/09 16:11 UTC) someone created a post titled “Hacked by Chinafans” on my documents blog [1]. The person in question created an account named “67965e42a3c3” on that site with the email address 67965e42a3c3@google.com associated with it (I tried emailing that address and it bounced).
At 04:28:41am Australian eastern standard time (18:28 UTC) I was sent an email titled “Have you been hacked” by a reader of my blogs who subscribed to the RSS feed of my documents blog (a blog that I never expected anyone to read by RSS). Along the lines of “the wisdom of crowds” should we have “the unexpected observation and problem reporting of crowds”? I appreciate the notification, I might not have noticed until the next time I watched an unusually good movie otherwise.
The account in question was apparently created on 2026-07-21 at 16:43:47 (presumably UTC) even though at the time I believe creating accounts was not permitted. As an aside the timestamp of account creation is stored in the user_registered column of the wp_users table in the database, there doesn’t appear to be a way to access this in a standard WordPress installation other than doing a SQL query.
2026-07-24 15:43:17 status triggers-pending wordpress:all 7.0+dfsg1-1 2026-07-24 15:43:19 upgrade wordpress:all 7.0+dfsg1-1 7.0.2+dfsg1-1
Above are the relevant sections of my dpkg log showing the WordPress versions in use. I was running version 7.0+dfsg1-1 at the time the account was apparently created. I am confident in the accuracy of the dpkg logs and believe that they did not compromise the OS, I am not sure whether they ran hostile SQL code to change fields in the MySQL database so had to consider the possibility that the account creation time could have been set to a deliberately misleading value. I checked backups of the MySQL database stored off-site and found that the account in question was not in the 2026-07-21 backup (which was done before 16:43) but in the 2026-07-22 backup.
The WordPress release history [2] has version 7.0.1 released on 2026-07-09 and version 7.0.2 released on 2026-07-17. So presumably the attacker diffed the code on those releases, found an exploitable bug, and used it to create an account on my blog with admin privs. Then they waited a few weeks to see if I would notice and published a blog post when I didn’t notice.
select $TABLE_PREFIXusers.user_login, $TABLE_PREFIXusers.user_pass, $TABLE_PREFIXusermeta.meta_value from $TABLE_PREFIXusers join $TABLE_PREFIXusermeta on $TABLE_PREFIXusers.id = $TABLE_PREFIXusermeta.user_id and meta_key='$TABLE_PREFIXcapabilities' and meta_value != 'a:1:{s:10:"subscriber";b:1;}';
The blog post they created had a couple of links to Telegram which could presumably be used to contact them. If anyone involved in computer security wants a copy of the original post to do so then they can contact me by any of the usual methods.
I am interested in communication with the attacker if they wish, Telegram is not a service I use but I presume that anyone capable of doing this sort of attack is also capable of finding other ways of contacting me.
I have idly considered changing to a static site generator, here is a good list of static site generators [3].
I have also idly considered other platforms for blogging such as Lemmy. I don’t know if Lemmy is better than WordPress for security and updates, but there are plenty of free instances running where it wouldn’t be an issue I have to work on.
It’s been 15 years since my blog server was cracked by a trojaned ssh client [4]. At least this time it was only one service that was compromised.
| Feed | RSS | Last fetched | Next fetched after |
|---|---|---|---|
| @ASmartBear | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| a bag of four grapes | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| Ansible | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| Bad Science | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| Black Doggerel | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| Blog - Official site of Stephen Fry | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| Charlie Brooker | The Guardian | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| Charlie's Diary | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| Chasing the Sunset - Comics Only | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| Coding Horror | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| Comics Archive - Spinnyverse | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| Cory Doctorow's craphound.com | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| Cory Doctorow, Author at Boing Boing | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| Ctrl+Alt+Del Comic | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| Cyberunions | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| David Mitchell | The Guardian | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| Deeplinks | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| Diesel Sweeties webcomic by rstevens | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| Dilbert | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| Dork Tower | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| Economics from the Top Down | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| Edmund Finney's Quest to Find the Meaning of Life | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| EFF Action Center | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| Enspiral Tales - Medium | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| Events | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| Falkvinge on Liberty | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| Flipside | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| Flipside | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| Free software jobs | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| Full Frontal Nerdity by Aaron Williams | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| General Protection Fault: Comic Updates | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| George Monbiot | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| Girl Genius | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| Groklaw | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| Grrl Power | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| Hackney Anarchist Group | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| Hackney Solidarity Network | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| http://blog.llvm.org/feeds/posts/default | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| http://calendar.google.com/calendar/feeds/q7s5o02sj8hcam52hutbcofoo4%40group.calendar.google.com/public/basic | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| http://dynamic.boingboing.net/cgi-bin/mt/mt-cp.cgi?__mode=feed&_type=posts&blog_id=1&id=1 | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| http://eng.anarchoblogs.org/feed/atom/ | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| http://feed43.com/3874015735218037.xml | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| http://flatearthnews.net/flatearthnews.net/blogfeed | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| http://fulltextrssfeed.com/ | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| http://london.indymedia.org/articles.rss | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| http://pipes.yahoo.com/pipes/pipe.run?_id=ad0530218c055aa302f7e0e84d5d6515&_render=rss | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| http://planet.gridpp.ac.uk/atom.xml | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| http://shirky.com/weblog/feed/atom/ | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| http://thecommune.co.uk/feed/ | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| http://theness.com/roguesgallery/feed/ | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| http://www.airshipentertainment.com/buck/buckcomic/buck.rss | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| http://www.airshipentertainment.com/growf/growfcomic/growf.rss | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| http://www.airshipentertainment.com/myth/mythcomic/myth.rss | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| http://www.feedsapi.com/makefulltextfeed.php?url=http%3A%2F%2Fwww.somethingpositive.net%2Fsp.xml&what=auto&key=&max=7&links=preserve&exc=&privacy=I+accept | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| http://www.godhatesastronauts.com/feed/ | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| http://www.tinycat.co.uk/feed/ | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| https://anarchism.pageabode.com/blogs/anarcho/feed/ | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| https://broodhollow.krisstraub.comfeed/ | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| https://debian-administration.org/atom.xml | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| https://elitetheatre.org/ | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| https://feeds.feedburner.com/Starslip | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| https://feeds2.feedburner.com/GeekEtiquette?format=xml | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| https://hackbloc.org/rss.xml | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| https://kajafoglio.livejournal.com/data/atom/ | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| https://philfoglio.livejournal.com/data/atom/ | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| https://pixietrixcomix.com/eerie-cutiescomic.rss | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| https://pixietrixcomix.com/menage-a-3/comic.rss | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| https://propertyistheft.wordpress.com/feed/ | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| https://requiem.seraph-inn.com/updates.rss | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| https://studiofoglio.livejournal.com/data/atom/ | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| https://thecommandline.net/feed/ | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| https://torrentfreak.com/subscriptions/ | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| https://web.randi.org/?format=feed&type=rss | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| https://www.baen.com/baenebooks | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| https://www.dcscience.net/feed/medium.co | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| https://www.DropCatch.com/domain/steampunkmagazine.com | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| https://www.DropCatch.com/domain/ubuntuweblogs.org | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| https://www.DropCatch.com/redirect/?domain=DyingAlone.net | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| https://www.freedompress.org.uk:443/news/feed/ | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| https://www.goblinscomic.com/category/comics/feed/ | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| https://www.loomio.com/blog/feed/ | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| https://www.newstatesman.com/feeds/blogs/laurie-penny.rss | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| https://www.patreon.com/graveyardgreg/posts/comic.rss | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| https://www.rightmove.co.uk/rss/property-for-sale/find.html?locationIdentifier=REGION^876&maxPrice=240000&minBedrooms=2&displayPropertyType=houses&oldDisplayPropertyType=houses&primaryDisplayPropertyType=houses&oldPrimaryDisplayPropertyType=houses&numberOfPropertiesPerPage=24 | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| https://x.com/statuses/user_timeline/22724360.rss | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| Humble Bundle Blog | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| I, Cringely | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| Irregular Webcomic! | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| Joel on Software | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| Judith Proctor's Journal | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| Krebs on Security | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| Lambda the Ultimate - Programming Languages Weblog | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| Looking For Group | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| LWN.net | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| Mimi and Eunice | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| Neil Gaiman's Journal | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| Nina Paley | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| O Abnormal – Scifi/Fantasy Artist | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| Oglaf! -- Comics. Often dirty. | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| Oh Joy Sex Toy | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| Order of the Stick | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| Original Fiction Archives - Reactor | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| OSnews | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| Paul Graham: Unofficial RSS Feed | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| Penny Arcade | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| Penny Red | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| PHD Comics | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| Phil's blog | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| Planet Debian | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| Planet GNU | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| Planet Lisp | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| Pluralistic: Daily links from Cory Doctorow | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| PS238 by Aaron Williams | XML | 12:07, Sunday, 23 August | 12:55, Sunday, 23 August |
| QC RSS v2 | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| Radar | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| RevK®'s ramblings | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| Richard Stallman's Political Notes | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| Scenes From A Multiverse | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| Schneier on Security | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| SCHNEWS.ORG.UK | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| Scripting News | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| Seth's Blog | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| Skin Horse | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| Tales From the Riverbank | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| The Adventures of Dr. McNinja | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| The Bumpycat sat on the mat | XML | 12:14, Sunday, 23 August | 12:54, Sunday, 23 August |
| The Daily WTF | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| The Monochrome Mob | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| The Non-Adventures of Wonderella | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| The Old New Thing | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| The Open Source Grid Engine Blog | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| The Stranger | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| towerhamletsalarm | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| Twokinds | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| UK Indymedia Features | XML | 12:00, Sunday, 23 August | 12:42, Sunday, 23 August |
| Uploads from ne11y | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| Uploads from piasladic | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |
| Use Sword on Monster | XML | 11:56, Sunday, 23 August | 12:43, Sunday, 23 August |
| Wayward Sons: Legends - Sci-Fi Full Page Webcomic - Updates Daily | XML | 11:49, Sunday, 23 August | 12:35, Sunday, 23 August |
| what if? | XML | 12:21, Sunday, 23 August | 13:02, Sunday, 23 August |
| Whatever | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| Whitechapel Anarchist Group | XML | 12:21, Sunday, 23 August | 13:10, Sunday, 23 August |
| WIL WHEATON dot NET | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| wish | XML | 11:56, Sunday, 23 August | 12:41, Sunday, 23 August |
| Writing the Bright Fantastic | XML | 11:56, Sunday, 23 August | 12:40, Sunday, 23 August |
| xkcd.com | XML | 12:14, Sunday, 23 August | 12:57, Sunday, 23 August |