[$] Splicing out vmsplice() [LWN.net]
The splice() and vmsplice() system calls are meant to improve performance for certain data-movement tasks by minimizing (or avoiding altogether) system calls and the copying of data. They also have a long history of security problems. The recent flood of LLM-discovered vulnerabilities has drawn attention, once again, to splice() and vmsplice(); as a result, they may end up being removed altogether.
Quite Possibly The Worst View From A Hotel Room, 5/31/2026: Chula Vista [Whatever]

I am not currently in California anymore, but
I felt rather inclined to share this photo I took from the second
story of the oh-so-lovely hotel my grandma, mom, and I were in. Our
first two nights in Cali were spent in the Hilton San Diego
Bayfront, and the second two nights were at a much more modest
location in Chula Vista.
I have much to say about my splendid time in California, but I cannot even begin to tell y’all how behind I am on content. Remember how it took me roughly two months to get around to covering my Denver trip? Well, I’ve done a lot of stuff since then, and boy oh boy do I have quite the backlog right now. I’m honestly not sure if I should even bother going in chronological order anymore, though it might irk me too much not to.
Please hang in there while I slowly work my way through all my exciting endeavors and even some more miscellaneous things, and enjoy the view in the meantime.
-AMS
Having fun rolling stuff out on Elon Musk's X.
One step forward, two steps back on CA age bill (EFF Deeplinks Blog) [LWN.net]
The EFF has a blog post looking at a new bill in California that would exempt open-source operating systems from the Digital Age Assurance Act passed last year, but has problems of its own:
While the open source exemption, if passed, would improve the law, the remaining amendments proposed by AB 1856 would require all web browsers and websites to request and collect users' ages. This is an expansion of last year's AB 1043's age-bracketing system that compounds its constitutional harms to users' speech, privacy, and security.
[...] EFF understands this amendment to exempt open-source operating systems from the requirement to collect and transmit users' age-bracket data. That is a definite win for open-source developers. The bill is narrower now than it was before, and lawmakers clearly responded to concerns raised by EFF and the broader open-source community.
Some important questions still remain—for example, it is unclear how the law would apply when an open-source operating system is incorporated into a commercial product or service. And, given the structure of where the exemption is placed under the "operating system provider" definition, lawmakers could stand to clarify that the exemption applies to open-source operating systems and applications.
LWN covered California's age-attestation law in March.
The Knicks in the Finals [Scripting News]
I didn't write about the Knicks prior to last night's game
because I had no idea what to write.
The Knicks in the Finals is something I had a hard time understanding, even thinking about. To me the Knicks are soulful losers. They're like once-future hall-of-famer Carmelo Anthony surrounded by people who shouldn't even be in the NBA, but otherwise are lovely individuals. When they asked Melo what his goal was he said it was to win a championship, but the reporters never followed up with the obvious question -- "Really?" They did make the playoffs, three times, in the Age of Melo, and they made it to the second round one of those three seasons, but that was it as far as Melo's championship aspirations went. He should've been on one of LeBron's teams, like JR Smith and Iman Shumpert, both Knicks alumni in the Melo period, who were fine players and did win with LeBron at Cleveland.
Going into the game last night I thought maybe the pundits were right, that the real NBA Finals was the previous round between the San Antonios and the Oklahoma Cities. But last night that was debunked. At what point did I realize this? It wasn't until the game was over, ABC announcer Mike Breen said at the exact moment the game was over "..their 12-game win streak" which revealed that I had little faith the streak would be preserved. I thought 11 was pretty great, but 12? Until that exact moment -- unthinkable.
In the first part of the game when San Antonio looked like they might rout the poor unprepared Knicks, I thought okay, but couldn't we just concede so we don't have to watch? In that moment I appreciated what the Clevelands must have been feeling as they shrunk to nothing faced with the Knicks onslaught? How about if we all go home now at some point they must all have been thinking.
I'm a Mets fan first, and I bring the Mets philosophy to every sport, including the NBA and software. I'm here for the game. Sure I love it when we win, but if the Knicks went down in the final test, I'd still be a happy camper. Look they made it to the freaking Finals! Some Mets fans say the team slogan is You Gotta Believe. I say Wait Till Next Year! Same for the Knicks. Same for every software product I make that no one bothers to try out.
This Knicks team is classic. Every one of their players would be a star on any other team, including the bench players. Some of them whose contracts expire at the end of the series will certainly go to other teams. But what a thrill to have this group all on the same team and that team is my lovely Knicks.
Last night's game was a lesson, you should always be open to the possibility of winning because sometimes you do.
PS: My friend Dave Carlick sent me a text overnight: "I watch the Knicks rooting for you. How tribal is that?" I had a longish reply. "I wrote a piece this morning after reading this comment, and of course I am rooting for the Knicks in some sense, but a win here is about more than winning -- it's a transformation. I've heard other people say this and the Knicks are us -- in a city that has disagreements about everything the only thing everyone is on board with are the Knicks. We're really comfortable with the Knicks as losers, and this has already become an unequivocal change. It's a whole new situation. Unless something really weird happens now, the Knicks will be great next year too, and the year after. So it's like witnessing a moon landing Dave. Underneath that of course I'm rooting for success, the same way we rooted for it for the initial moon landing in 1969."
Microsoft continues migration from NTLM to Kerberos [OSnews]
For the past few years, Microsoft has been phasing out NTLM in Windows in favor of Kerberos-based alternatives. Starting with the next versions of client and server editions of Windows, Microsoft will also be disabling the legacy authentication protocol by default. In the latest security baseline package for Windows Server 2025, the company is already allowing customers to audit incoming configurations. Now, it has announced a wave of changes to further reduce dependencies on NTLM.
With an upcoming Insider release of Windows 11 client and server, certain scenarios which previously required NTLM will be able to fall back on Initial and Pass-Through Authentication using Kerberos (IAKerb) and Local Key Distribution Center (LocalKDC).
↫ Usama Jawad at Neowin
I’m sure this is very important to “IT Pros”.
Security updates for Thursday [LWN.net]
Security updates have been issued by AlmaLinux (.NET 10.0, compat-openssl10, compat-openssl11, delve, expat, httpd:2.4, libexif, mod_http2, openssl, ruby4.0, samba, thunderbird, unbound, and vim), Debian (ceph and sudo), Fedora (libsoup3, pie, roundcubemail, and xorg-x11-server-Xwayland), Mageia (lxc), Oracle (expat, gnutls, kernel, php:8.2, thunderbird, and uek-kernel), Slackware (httpd, net, proftpd, tigervnc, and xorg), SUSE (apache-sshd, apptainer, atril, bind, busybox, cloudflared, evolution-data-server, golang-github-prometheus-prometheus, golang-github-v2fly-v2ray-core, grafana, helm, kernel, libgphoto2-6, libjxl-devel, libsoup, libsoup-2_4-1, libsoup-3_0-0, memcached, ovmf, python-cairosvg, python-flask, python-pip, python-pymupdf, python-pyOpenSSL, python-urllib3, python-urllib3_1, python3-pyOpenSSL, restic, rsync, salt, sdbootutil, tor, tree-sitter, vorbis-tools, and yq), and Ubuntu (exim4, frr, gst-plugins-base1.0, libtemplate-perl, libwww-perl, mysql-8.0, nginx, python-pip, python-urllib3, and twisted).
CodeSOD: Build Up [The Daily WTF]
If there's one thing that seems to be a constant source of issues, it's people constructing SQL queries through string concatenation. Even if you're using parameters in the query, I'm opposed to handling raw SQL as strings in my programs. My solution is always "use a builder"- an API that constructs a syntax tree that it can then render to SQL as needed. (Yes, a builder, not an ORM, that's a whole other discussion, I'm not dogmatically anti-ORM, but it's a leaky abstraction at best.)
Many languages have such a thing, Java included. Lukasz's team was using Java, and they had a rule: "don't do SQL strings, use a builder". Unfortunately for Lukasz's team, their guideline didn't specify what kind of builder.
StringBuilder builder = new StringBuilder();
builder.append("where ID_BSNGP = ? ");
builder.append("and ID_ITM = ? ");
builder.append("for update");
SQLQuery query = new SQLQuery();
query.setQueryString(builder.toString());
A StringBuilder is a kind of builder.
Technically correct and all that. It's just concatenation with
extra steps, but it's a builder. Of course, the bonus point here is
that this built query is… just wrong? SELECT FOR UPDATE
field FROM table WHERE condition would make sense, but we're
missing most of that syntax here.
That this code was running in production without anyone noticing means that whatever errors this was triggering were getting swallowed or ignored, and the fact that no good output ever came from it ended up not mattering. The real WTF is less the malicious compliance and more the fact that this obviously broken code wasn't so broken as to be noticed.
Predict, Don’t Enumerate [Radar]
A third of the way into a security-operations guide that Anthropic published in April 2026, wedged between a recommendation to patch CISA’s Known Exploited Vulnerabilities list and a suggestion to automate your deployment pipeline is a small recommendation: “Use EPSS to prioritize the rest.” For anyone who has worked on a vulnerability backlog in the last decade, the sentence is an acknowledgment of a widely felt but often unspoken fact about security programs: They have become machine-scale problems of signal to noise.
EPSS (Exploit Prediction Scoring System) is a statistical model that takes a known software flaw, runs it through a set of signals about what attackers are actually doing across the internet, and returns a probability that the flaw will be exploited in the next 30 days. It isn’t an LLM, and it does no reasoning or prompt engineering. It predicts. The company endorsing it is the same company whose newest model can surface thousands of novel, exploitable vulnerabilities in production software, many of them two or three decades old, most of them still unpatched.
As far as we can tell, this is the first time a frontier AI lab has publicly endorsed a purpose-built predictive model as the right tool for a defensive problem. LLM labs usually recommend LLMs. That Anthropic did not is worth noting, but the recommendation itself isn’t news to the practitioners it’s aimed at. It’s a description of what they’ve been doing.
The volume problem isn’t new. Anyone running a scanner against a large enterprise estate in 2015 was already generating hundreds of thousands of findings per month. Anyone running one against a cloud environment in 2020 was generating millions. Enterprises have spent the better part of a decade staring at dashboards where the number of open critical findings was larger than the capacity of the team supposed to fix them. In other words, cybersecurity has become machine scale.
Risk-based vulnerability management, as a product category, has existed since around 2018. EPSS, as a public resource, has been usable since 2021. More than 120 vendors embed it today into their products. The field has had access to a predictive baseline for years.
What has been missing is an external justification to change the status quo recommendations from auditors, model risk management teams, and even boards. Auditors want a clear set of expectations, making grading more objective and therefore easier to evaluate. Compliance frameworks like CVSS (Common Vulnerability Scoring System) because CVSS is easy, but implementing something more efficient has historically required that aforementioned external push. A working CISO could tell you she had stopped treating every vulnerability scored a severity 9.8/10 by CVSS as an emergency in 2019, but she would also tell you she still kept CVSS in the report.
Anthropic’s guidance is useful because it makes the private consensus public. Patch what you know to be exploited, then use EPSS above a threshold based on the team’s capacity or risk tolerance. DHS CISA’s practice of publishing known exploited vulnerabilities since November of 2021 is just additional proof that the existing methodologies were being overwhelmed by scale and lack of signal.
In 2014, at Black Hat, Dan Geer, then the chief information security officer of In-Q-Tel, asked the first principles question: Are vulnerabilities in software sparse or dense? Sparse meant finite, meaning every fix measurably shrank the attack surface. Dense meant weeds in a field. Geer could not answer the question because the data were not in.
Eight years later, Jonathan Spring at Carnegie Mellon’s Software Engineering Institute tied vulnerability enumeration to the halting problem and showed, in theory, that for any sufficiently complex piece of deployed software, there are always more undiscovered flaws.
The AI-driven discovery results of the last 18 months have made the density argument impossible to wave off even in a compliance review. A 27-year-old bug in OpenBSD. A 16-year-old bug in FFmpeg that five million fuzzing runs never caught. Disclosed findings, by the developers’ own accounting, are less than 1% of what has been found. But again, the volume was already a problem. With the coming release of its newest model, Mythos, Anthropic is telling teams to plan for an order of magnitude more findings over the next 24 months.
Static severity scoring can’t survive the volume problem, because it’s a human-scale solution for a machine scale problem. Neither can any process that treats every critical finding as an emergency. The threshold for action has to be probabilistic, measurable, and defensible. That’s what a predictive model is for, and that’s what working teams have been using in noisy large enterprise environments.
Geer returned to his 2014 question in the summer of 2025, writing with Dave Aitel in Lawfare. The piece gives the industry a vocabulary for a distinction it has been fudging:
A vulnerability in the code isn’t automatically a threat. A buffer overflow is a hazard. It becomes a risk only if an attacker can exploit it reliably, in this environment, against these controls, through this traffic. Bugs are abundant but the ability to weaponize a particular bug against a particular target is much rarer.
The industry, they wrote, has built a pointing machine. It enumerates.
Even children learn early to point and name—but knowing the word “dog” doesn’t reveal whether the animal might bite. In cybersecurity, we’ve built systems that similarly point and name vulnerabilities without understanding whether they’re truly dangerous. By embracing AI solely for pattern recognition, we’ve created a powerful “pointing machine” that identifies possible threats but does not comprehend their actual impact. What we need instead is a “knowing machine,” capable of understanding how code functions within complex, real-world environments, recognizing not just hazards but the full context of how and whether those hazards might become genuine risks.
A knowing machine is a system that understands how code behaves in a particular environment and recognizes the context that turns a hazard into a risk. A predictive model is how you build a knowing machine. EPSS is the clearest public example: It covers every published CVE and is updated daily.
EPSS is a global model. It sees what attackers are doing across the whole of the internet. It picks up patterns in exploitation activity that severity scores never could. What it can’t see is any particular organization’s environment. It doesn’t know which assets carry the data the business actually cares about. It doesn’t know what compensating controls are in place, where remediation is risky, or how your telemetry and history change the odds.
A 9.8 with a 97% global probability of exploitation and a 9.8 with a 0.1% probability are not the same animal. Neither are two organizations applying the same EPSS threshold to the same CVE on different assets. One has the vulnerable code path exposed to the internet, behind a web application firewall that doesn’t inspect the relevant protocol. The other has the same CVE on an internal system that accepts authenticated input from a single service account. A scanner can’t tell them apart. A global model can’t tell them apart. Their actual risk profiles are orders of magnitude apart.
Local context is where most security teams have been stuck the entire time, and where the next decade of the field is going to be fought.
Pair a better pointing machine with a faster remediation engine and all you’ve done is increase the speed at which you produce churn, breakage and wasted effort. You’ll also spend a king’s ransom in agent tokens fixing vulnerabilities that were never dangerous in your environment.
In contrast to an omniscient scanner, a local model trains on the specific environment being defended: asset inventory, application topology, reachability, deployed controls, attack telemetry observed on-site, and the history of the organization’s own remediations and their outcomes. The model produces probabilities specific to the enterprise. Most organizations already have the inputs, scattered across CMDBs, endpoint agents, firewall logs, ticketing systems and scanner output. This context is precisely what attackers (whether they’re using good old fashioned metasploit or Mythos with an infinite budget) are lacking in their models. The context becomes an asymmetrical advantage for defenders, perhaps the only one that exists.
The interventions that will decide whether a security program survives the next 24 months aren’t purely technical. A CISO can put most of them in motion without buying anything.
Rewrite the SLA. Most vulnerability-management SLAs are organized by severity. Criticals in 15 days, highs in 30, mediums in 90. That structure was built for a world where the count of open criticals was small enough to matter. It’s now actively harmful, because it forces teams to spend the same effort on a 9.8 nobody is exploiting and a 7.5 that’s under active attack. SLAs should be rewritten in terms of probability of exploitation and asset exposure, not severity. A CISO who can’t get that past her GRC team can at least add a second tier that makes the probability-based cut enforceable alongside the severity-based one.
Change what the board sees. If the monthly security report counts the numbers of vulnerabilities, exposures or findings in different buckets (“critical,” “open past 30 days,” etc.), the organization is being managed to the wrong metric. The metric should be exploitability-weighted exposure over time, with a second line for predicted versus observed exploitation. Boards will accept this once somebody explains it. This beats showing them a number that has no relationship to risk and is growing exponentially as new LLM models are released. More to the point: A great team can do amazing volumes of remediation work, and risk can still rise because they’re measuring and remediating the wrong thing. An efficient, context-rich team can do far less work and meaningfully move the probability of an event down.
Invest in telemetry. The single most valuable instrument a security program can build is a feedback loop between what was prioritized and what was exploited. If the loop shows you were wrong, the model improves. If the loop does not exist, you will keep being wrong indefinitely (or just not being aware of misses).
Fix the compliance conversation. The reason CVSS survives is regulatory inertia. PCI, HIPAA, and most state breach-notification frameworks still reference severity. The CISOs who will come out of the next two years in the best shape are the ones who engage their auditors now, in writing, about what a probabilistic prioritization framework looks like under the existing rules.
Staff for the bottleneck, which isn’t scanning. The industry has spent a decade hiring people to find bugs. The bottleneck now is deciding which bugs matter, getting the fixes deployed, and measuring whether the prioritization was correct. The job descriptions should reflect this. A security-data engineer may be able to increase efficiency to meet SLAs more than increasing capacity would.
None of this requires a new product. All of it requires a CISO willing to say, out loud, that the old dogma is broken and that the new one will be managed by data and probabilities. That is the shift Anthropic’s five-word sentence was really announcing. The technology is available and the models are here—both the LLM-based ones to find the vulnerabilities and the predictive knowing machines to prioritize efficiently.
Hacking Meta’s AI Chatbot [Schneier on Security]
Hackers are convincing Meta’s AI support chatbot to let them take over other peoples’ accounts:
A video posted on X showed the step-by-step process to hack someone’s Instagram account. The hacker allegedly used a VPN to spoof the targets’ presumed location to avoid triggering Instagram’s automated account protections. Then, the hacker opened a chat with Meta AI Support Assistant and asked the bot to add a new email address to the target’s account. The chatbot can be seen sending a verification code to the email address provided by the hacker; the hacker then shares the verification code with the chatbot, which prompts the chatbot to show a button to “Reset Password.” The hacker enters a new password and takes over the victim’s account.
[…]
On Monday, Instagram spokesperson Andy Stone said in a reply to Wong’s post and others that the issue was now fixed. It’s unclear how many Instagram users had their accounts improperly accessed.
It’s not that easy. Probably this particular tactic is now blocked. But there are others, many others, and they cannot be blocked as a class. The real problem is that LLM chatbots are not trustworthy enough for this application.
Another news article.
Jonathan Dowland: mount namespace for backup jobs (by hand) [Planet Debian]

It's been ten years since I configured mount on demand
backups to reduce the risk of my backups being zapped by
mistake. Way back then I wanted to go one step further and use
dedicated mount
namespaces for backup jobs, but systemd didn't provide the
necessary support (and still doesn't, despite the promisingly-named
JoinsNameSpaceOf= configuration option.)
I recently updated my setup to achieve this by hand. All backup
jobs now have an extra pre-start instruction
ExecStartPre=mkbackupns which runs a shell script to
either set up a persistent mount namespace, or exit quietly if it
already exists.
#!/bin/bash
set -euo pipefail
nsdir=/var/namespaces
nsfile=$nsdir/backup
nsfilex="$(echo $nsfile | sed 's#/#\\/#'g)"
private_propagation() {
findmnt -o+PROPAGATION "$nsdir" | grep -q private
}
nsfs_is_mounted() {
test "nsfs" = "$(awk "/$nsfilex/ { print \$3 }" /proc/mounts)"
}
if ! nsfs_is_mounted; then
if ! private_propagation; then
mkdir -p "$nsdir"
mount --bind --make-private "$nsdir" "$nsdir"
fi
touch "$nsfile"
unshare --mount="$nsfile" true
nsenter --mount=/var/namespaces/backup mount /dev/phobos_backup/backup /backup
fi
I should note that I don't have the backup filesystem described
in /etc/fstab to reduce the risk of it being mounted
errantly in the main namespace.
The other change is to prefix an invocation of
nsenter for every backup job command. E.g.:
ExecStart=/usr/bin/nsenter \
--mount=/var/namespaces/backup \
borgmatic -v 1 prune create
My backup scheme has lasted a decade with few tweaks (I moved it to Borg in 2020) which I am very grateful for. I want reliable, boring and robust.
Persistent mount namespaces are a lot less convoluted if you have a persistent process to associate them with. I didn't, but a subsequent improvement I am making is introducing one, so I will likely simplify the above accordingly.
Grrl Power #1466 – Semifinals go! [Grrl Power]
I tried to come up with a cooler name for Maxima’s sword than “Mana Vore.” It’s not bad, but it’s a little obvious. But the only other option I came up with was “Weave Nosher,” which sounds like farmer named it.
A fair bit of Maxima’s sword training was learning not to swing it around so broadly that she’d hit her own foot. Which wouldn’t be a problem normally, since her base armor is pretty high, but most swords that get swung at her aren’t backed by someone with her strength and speed, either. It’s also a very long sword, long enough that most people would have to worry about bonking it against the ground a lot, but, again, Max can just drag it right through most floor surfaces.
I think this page played out a little better in my head, or my relative inexperience at drawing high octane manga action is showing. Basically, Max comes in for a swing, but kicks a two-and-a-half-bowling-ball sized rock at the dark elf, and it smashes through his shield and hits his arm, moving his sword out of the way to parry her swipe. I think the real shortcoming of the page is that the bottom left panel is too busy. Instead of making the top two panels big, I should have saved the page space for that bottom one. Maybe put the rock past his arm, and just gone with a simpler speed trail showing the impact?
I’m not in the “shonen action” headspace when thinking about page layouts. I’m still more in the “I wanna draw Maxima leaning forward into a swing and have her boob pillowing against her arm” space. But we’re entering the semifinal match now, so I’ll try and… I dunno, read some One Punch Man before I do the layouts for the especially actiony pages? Or some Masahiko Nakihara manga? He did the Cammy and Sakura Ganbaru mangas as well as some other Street Fighter books, and is pretty decent at action stuff. Maybe I’ll throw in some Dragon Half, which doesn’t have good action, but is hilarious.
The thing I do like about this page though, is while Bluce and Gail seem like vapid eyecandy announcers, they’ve hosted quite a few of these and are capable of some fairly cogent analysis when it comes down to it. They do also have a team of researchers in their earpieces as well. Gail didn’t know all those details about the Mana Vore off the top of her head.
Sexy bodymod news lady Gail has a special
one-on-one interview with Tournament Quarter finalist Saraviah
Nightwing! And if you subscribe to Gail’s Space Patreon, (which, due to the
vagaries of Earth and Gal-Net’s DNS servers, happens to be
the same as the Grrl Power Patreon, go figure) you can see that
same interview in the nude! Well, eventually. The nude part of the
interview, as well as the version that includes shading will be
coming soon. Of course, you can view the interview in the
nude now if you take your own clothes off. You know. Technically.
Just put a towel on your chair first.
Double res version will be posted over at Patreon. Feel free to contribute as much as you like.
Transparency and trust [Seth's Blog]
In simple situations with obvious metrics, transparency earns trust. Voting, for example, benefits from audit trails and inspectability.
But transparency can also undermine trust. Walking through the typical restaurant kitchen on the way to dinner probably won’t increase the typical diner’s trust in the experience. The restaurant isn’t hiding anything; it’s just that they know things we don’t about hygiene, production, and how to present a finished dish.
You can trust your employees or your freelancers to deliver a worthwhile result, but demanding transparency about how they spend all of their time isn’t going to make you trust them more… the effort they put into the work isn’t related to the value of the work you’re asking for.
Part of the problem is that we measure what’s easy, not what’s relevant. And part of the problem is that we have trouble explaining trust, while it’s easy to pursue ever more transparency.
Once we’re coherent about what we expect and the promises that are being made, we have a chance to engage with what actually matters.
Pluralistic: Delusion as a service (04 Jun 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

In 2003, Disney opened a new Epcot ride, "Mission: Space." Formally, it was a space travel sim that used a giant, high-intensity centrifuge to simulate gee stresses; practically, it turned out to be the most efficient machine ever created for surfacing previously undiagnosed heart defects in extremely dramatic and potentially lethal ways.
It turned out that a small number of people have these heart defects, and that the defects themselves are quite harmless, provided that you are never put in a giant, high-intensity centrifuge. Given that most of us will never be put in one of these centrifuges, it is quite possible to live your whole life without ever knowing that you have this lurking vulnerability. But once you build one of these machines and start shoving millions of people through it, you're bound to catch some of those rare people, and they will have cardiac episodes that are scary at a minimum, and are at the worst fatal.
For me, the lesson isn't that Disney did something wrong by building a giant cocktail shaker for human bodies. I'm not a thrill-ride guy, but lots of people like 'em and the machines themselves are benign for nearly everyone who puts their bodies into them.
Rather, I think the lesson here is that there are rare pathologies lurking in all of us, vulnerabilities that may never surface – until we come into the presence of a novel stimulus that unlocks them.
There's an analogy here to technology debt: technologically unsophisticated people think of software as a machine that never wears out and has no incremental usage costs (apart from electricity). In this framing, software is the perfect asset, one that never depreciates. But the reality is that software is a liability, not an asset:
https://pluralistic.net/2026/01/06/1000x-liability/#graceful-failure-modes
Software exists in a system, and while software might function perfectly under the conditions in which it is first created and deployed, there are continuous changes to all the technology that is upstream, downstream and adjacent to the software, which means that systems that are robust and secure at the time of deployment can become brittle and dangerous, even though the software doesn't change at all:
https://pluralistic.net/2022/04/24/automation-is-magic/
There's another analogy here, to utopianism. A "utopia" can't just be a place where everything works perfectly. Even the most well-functioning, orderly and prosperous system is beset on all sides by exogenous shocks: belligerent neighbors, tsunamis, zoonotic plagues, even asteroid strikes. You don't perfect your society just by making it work well. You have to make it fail well. A utopia isn't a society where nothing goes wrong – it's a society where things go wrong all the time, but we're able to fix them:
https://www.wired.com/2017/04/cory-doctorow-walkaway/
The point being that things that work fine may still fail badly when they are exposed to unanticipated external stimuli, and the one thing we can absolutely anticipate is that the future will have many unanticipated stimuli in it.
If Mission: Space is a machine for surfacing unsuspected anatomical vulnerabilities, the internet is a machine for surfacing and exploiting all kinds of unsuspected psychological vulnerabilities. Note that I'm not claiming that the internet drives everyone crazy – rather, that the internet can locate and exacerbate vulnerabilities, including vulnerabilities that might have lain dormant for your whole life, but for the fact that the internet exposed you to such a wide spectrum of stimuli.
This wide, internet-delivered spectrum of stimuli is mostly good. The internet can expose you to art, culture, ideas and people that you would never have run into in the pre-internet days, which end up enriching you in a million ways. Some of my best friends are internet friends. Some of the music and books I love most in the world were brought into my orbit by the internet. Many of my most ardently held beliefs were acquired through internet-based discussion.
All that is true, and it's true that the internet can one-shot you with a stimulus that makes you feel very bad, which you would never have encountered in a pre-internet world. The spectrum of stimulus in the whole wide world is very broad, and one person's innocuous distraction is another person's downfall.
Let's make this concrete. All throughout history, people have suffered from paranoid delusions. These can be ruinous, isolating you from friends and family, destroying your professional life and so on. Paranoid delusions often take on details from the sufferer's milieu: if you live in a society where evil witches are accepted as a fact, then witches might well creep into your delusions, too. If your society is all a-chatter about the NSA's mass internet surveillance, then your delusions might incorporate elaborate narratives about the NSA's use of the internet to target and torment you, personally.
So there will always be a "local character" to the paranoid delusions, grounded in the sufferer's era and location. But the internet adds a new, very bad dimension to this dynamic: the internet makes it much easier for deluded people to find each other. Paranoid delusions are – thankfully – rare, and in the absence of the internet, you might never encounter another sufferer.
But thanks to the internet, sufferers can form communities that reinforce their delusions, with disastrous consequences. Take "Morgellon's Disease," the paranoid delusion that you have wires growing under your skin. Morgellon's sufferers pick at their skin, creating open sores, which form a sticky trap for random bits of fluff and loose threads that sufferers interpret as evidence of these "wires." It's a horrible mental illness, and it's hard enough to treat even in the absence of the internet (the name "Morgellon's Disease" refers to a 17th century case-report).
But when you add the internet to Morgellon's, you get online communities where people suffering from the delusion help each other come up with rationales to explain away the disconfirming evidence that they get from therapists and loved ones who are trying to help them recover. These communities egg each other on, isolating their members from treatment.
There are lots of pathological mental conditions that the internet can supercharge, from "pro-ana" communities that encourage eating disorders to communities for people with pedophilic urges that attempts to normalize and justify acting on those urges.
But it's especially bad for paranoid delusions, such as "gang-stalking delusion," which is the delusional belief that nearly everyone you meet is part of a conspiracy to torment you. People with GSD see evidence of this conspiracy in the lyrics of random songs, snatches of overheard conversations, the phrasing of bus-shelter ads, and the sort-order of search engine results:
https://pluralistic.net/2026/03/12/normal-technology/#bubble-exceptionalism
It's a near-totalizing belief, and sufferers find it hard to recover because their delusion tells them that the therapists and family members who try to help them are in on the conspiracy.
Then we add in the internet, and with it, the ability to locate and join communities of other GSD sufferers. Do this, and your delusions need not be limited to your own imaginative capacity to find conspiratorial explanations of the random things you find in the world. Now you are part of a kind of delusional improv troupe, whose members "yes-and" your delusions, finding new ways to terrorize you and alienate you from your surroundings.
This is bad enough when it's a regular conspiratorial community, one that feeds on trauma, like Qanon or anti-vax communities whose members have been failed by the system, making them susceptible to conspiratorial accounts of how society really runs.
But the combination of conspiratorial communities with the kind of mental illness that causes conspiratorial beliefs to surface in your mind without any external stimulus creates a brutal positive feedback loop that spins faster and faster until the people trapped in it are flung off into space.
Which brings me to AI and "AI psychosis," the social phenomenon that sees people falling down chatbot-assisted rabbit holes that convince them that they have invented perpetual motion, uncovered the secrets of the universe, or – in some tragic instances – that they should kill themselves and/or others.
For someone with GSD or another paranoid delusion or pathological belief, AI provides a reinforcement system that is even more efficient than these online communities. If you have GSD and your loved ones have finally got you wondering if you should get treatment, you don't have to post on a forum and hope that someone else comes along before you give in to the impulse to get help. Your delusional chatbot co-pilot is always there to tell you that it's a trap.
The nature of "AI psychosis" is hotly contested. The big question, of course, is whether chatbots are giving people delusions, or whether chatbots are amplifying those delusions:
https://www.cbc.ca/listen/cbc-podcasts/1353-the-naked-emperor/episode/16218103-e3-ai-psychosis
I think it's both. I think that, for people with GSD or other delusional beliefs, AI provides delusional reinforcement as a service, on tap, 24/7. The combination of a delusion and a machine that will tirelessly play yes-and with you at any time, demanding nothing from you, is a novel and terrible development for people with some mental illnesses.
But I also think that chatbots are a bit like Mission: Space: a machine for surfacing previously undiagnosed psychological vulnerabilities, and that in some cases, these vulnerabilities may never have been triggered, save for the chatbot.
Just as doubtlessly there were people who had pathological relationships to gambling before the development of slot machines, scratch-and-wins and roulette wheels, but there are also people who might have lived their whole lives without ever having a gambling problem except that they encountered one of these machines, exposing billions of people to sycophantic chatbots has surfaced rare, latent vulnerabilities that might have stayed latent forever, with terrible consequences.
Most people who rode the original Mission: Space had a fantastic time. But a lot of people rode that ride, and a very small percentage of a very large number of people can still be a substantial number, and as the reports of people stepping off the ride, clutching their chests and collapsing spread, Disney understood that they had to retool the ride. Today, riders on Mission: Space choose whether they want to ride on a simulator that spins, or one that merely tilts and pitches without simulating gee-stresses. And even if you pick the spicier version of the ride, it goes more slowly and exerts less stress than the original ride.
Even if you accept the AI companies' argument that they aren't inducing AI psychosis in their users, but rather, only surfacing latent vulnerabilities that were there all along, that shouldn't be the end of the story. Even if only a small percentage of the people who use your product experience harm as a result, if your product is intended for widespread deployment (as chatbots are), you will end up harming a lot of people unless you take measures to counteract even those rare events.

The Manhattan Institute Helped Kill DEI. Now It’s Coming for Protests https://www.wired.com/story/the-manhattan-institute-helped-kill-dei-now-its-coming-for-protests/
Remote Work Leaves Younger Workers Sidelined https://libertystreeteconomics.newyorkfed.org/2026/06/remote-work-leaves-younger-workers-sidelined/
Zerowriter https://zerowriter.ink/
Good Reason to Kill #79: Disputed Seating at Kindergarten Graduation https://www.loweringthebar.net/2026/05/good-reason-to-kill-79-disputed-seating.html
#20yrsago Gay Days at Disney World draws 140,000 participants https://web.archive.org/web/20060626125509/http://gaydays.com/calendar/
#20yrsago Blue Coat censorware company blocks Boing Boing for criticizing censorware https://memex.craphound.com/2006/06/03/blue-coat-censorware-company-blocks-bb-for-criticizing-censorware/
#15yrsago UN report says 3 Strikes copyright termination is illegal https://web.archive.org/web/20110605030049/https://www.michaelgeist.ca/content/view/5834/125/
#15yrsago Wisconsin GOP plotting to nominate spoiler Democratic candidates in recall elections https://web.archive.org/web/20110604111734/http://www.politicususa.com/en/secret-tape-wisconsin-gop
#15yrsago MI6 hackers replace al Qaeda bomb recipes with pirated cake recipes https://web.archive.org/web/20110603115453/https://www.telegraph.co.uk/news/uknews/terrorism-in-the-uk/8553366/MI6-attacks-al-Qaeda-in-Operation-Cupcake.html
#15yrsago $10,000,000 in venture capital for grilled-cheese sandwich “platform” https://venturebeat.com/technology/the-melt-flip-sequoia
#15yrsago Walled gardens vs makers https://web.archive.org/web/20150723092624/http://makezine.com/2011/06/01/walled-gardens-vs-makers/
#15yrsago Keyboard whose keys are raised in proportion to their frequency of use https://web.archive.org/web/20110604155657/https://itp.nyu.edu/~mk3321/itp_blog/?p=779
#15yrsago 3D model for reproducing house-keys https://www.science.org/content/article/experimental-error-fetus-dont-fail-me-now
#15yrsago Toronto artist turns abandoned bike into sculpture, City threatens fine for “storing bike on public property” https://web.archive.org/web/20110604181734/http://blogthegood.tumblr.com/post/6039831308/re-cycling
#10yrsago DoD public relations’ highest-ranking civilian gets community service for stealing license plates and harassing neighbor’s nanny https://web.archive.org/web/20160603071800/https://www.washingtonpost.com/local/a-warning-left-on-a-nannys-car-license-plates-stolen-and-a-top-pentagon-official-in-big-trouble/2016/06/01/50699a3a-2816-11e6-a3c4-0724e8e24f3f_story.html
#10yrsago US government agency’s own numbers predict virtually no gains from TPP https://www.techdirt.com/2016/06/02/official-us-international-trade-commission-predicts-negligible-economic-benefits-tpp/
#10yrsago EFF: FBI & NIST’s tattoo recognition program exploited prisoners, profiled based on religion, gave sensitive info to private contractors https://www.eff.org/deeplinks/2016/06/tattoo-recognition-research-threatens-free-speech-and-privacy
#10yrsago Ronald Reagan was Donald Trump, until he was president https://nymag.com/intelligencer/2016/05/ronald-reagan-was-once-donald-trump.html
#10yrsago The Steampunk Roadster: Jake von Slatt’s final steampunk project https://www.youtube.com/watch?v=OpI4GT4sTAY
#10yrsago Every Heart a Doorway: Seanan McGuire’s subversive, gorgeous tale of rejects from the realms of faerie https://memex.craphound.com/2016/06/02/every-heart-a-doorway-seanan-mcguires-subversive-gorgeous-tale-of-rejects-from-the-realms-of-faerie/
#10yrsago Prestigious Pets of Dallas wants $1M from customers who said they overfed a fish https://web.archive.org/web/20160603133604/http://arstechnica.com/tech-policy/2016/06/1-star-yelp-review-on-gordy-the-pet-fish-being-overfed-nets-1m-lawsuit/
#10yrsago Airport security officer was alleged war criminal, arrested for lying about participation in “genocidal acts” https://www.loweringthebar.net/2016/06/war-criminal-resume.html
#10yrsago In 1977, the CIA’s top lawyer said Espionage Act shouldn’t be applied to press leaks https://web.archive.org/web/20160609234545/https://s3.amazonaws.com/static.history.state.gov/frus/frus1977-80v28/pdf/frus1977-80v28.pdf
#10yrsago Tumblr’s shoplifting community is organized, politically conscious, and at war with weightlifters https://www.good.is/issue-37-we-r-cute-shoplifters/
#10yrsago Canada Post drops legal claim over crowdsourced postal code database https://web.archive.org/web/20160603185742/http://www.michaelgeist.ca/2016/06/crowdsourcedpostalcodelawsuit/
#10yrsago History podcasters occasionally mention women, butthurt dudes complain it’s “all women” https://web.archive.org/web/20190411115710/https://www.iheart.com/podcast/stuff-you-missed-in-history-cl-21124503/
#10yrsago Corbyn pledges to kill TTIP if elected https://www.commondreams.org/news/2016/06/02/jeremy-corbyn-i-would-kill-ttip
#10yrsago Democratic “superdelegates” endorse Bernie https://www.politico.com/blogs/2016-dem-primary-live-updates-and-results/2016/06/bernie-sanders-superdelegates-223824
#10yrsago Dick Van Dyke, 90: Bernie Sanders is the best candidate for seniors https://web.archive.org/web/20210725072638/https://www.hollywoodreporter.com/news/general-news/why-bernie-sanders-is-best-898479/
#10yrsago Flintnation: 33 US cities caught cheating on municipal water lead tests https://www.theguardian.com/environment/2016/jun/02/lead-water-testing-cheats-chicago-boston-philadelphia
#10yrsago Defense lawyers: the FBI made us use a copy-shop that made secret copies for the government https://web.archive.org/web/20160604065222/https://www.floridabulldog.org/2016/06/u-s-attorneys-office-fbi-accused-of-spying-on-defense-in-fraud-case/
#5yrsago How the Dutch helped CBS cheat on its taxes https://pluralistic.net/2021/06/02/arbitrary-arbitration/#dutch-treat
#5yrsago Amazon running scared from arbitration at scale https://pluralistic.net/2021/06/02/arbitrary-arbitration/#petard
#5yrsago Efficiency is very inefficient https://pluralistic.net/2021/06/03/jitters/#brittleness
#5yrsago I quit https://pluralistic.net/2021/06/03/i-quit/
#5yrsago NYC's driver-owned Uber alternative https://pluralistic.net/2021/06/02/arbitrary-arbitration/#gig-no-more

LA: The Reverse Centaur's Guide to Life After AI with Brian
Merchant (Skylight Books), Jun 19
https://www.skylightbooks.com/event/skylight-cory-doctorow-presents-reverse-centaurs-guide-life-after-ai-w-brian-merchant
Menlo Park: The Reverse Centaur's Guide to Life After AI with
Angie Coiro (Kepler's), Jun 21
https://www.keplers.org/upcoming-events-internal/cory-doctorow-2026
Toronto: TBA, Jun 23
NYC: The Reverse Centaur's Guide to Life After AI with Jonathan
Coulton (The Strand), Jun 24
https://www.strandbooks.com/cory-doctorow-the-reverse-centaur-s-guide-to-life-after-ai.html
Philadelphia: The Reverse Centaur's Guide to Life After AI with
David Williams (Fitler Club/Philadelphia Citizen), Jun 25
https://www.eventbrite.com/e/cory-doctorow-book-event-tickets-1990110326559
Chicago: The Reverse Centaur's Guide to Life After AI with Rick
Perlstein (Exile in Bookville), Jun 26
https://exileinbookville.com/events/50628
Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
On Enshittification – and what can be done about it
(Re:publica)
https://www.youtube.com/watch?v=KhINQgPMVSI
EFFecting Change: How to Disenshittify the Internet (EFF, with
Wendy Liu)
https://archive.org/details/effecting-change-enshittification
The “Enshittification” of Everything (Bioneers)
https://bioneers.org/cory-doctorow-enshittification-of-everything-zstf2605/
Enshittification (99% Invisible)
https://99percentinvisible.org/episode/666-enshittification/
"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
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026
"The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"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. Third draft completed. Submitted to editor.
"The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.
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
Urgent: Reject massive government surveillance [Richard Stallman's Political Notes]
US citizens: make phone calls to your officials in Congress to reject massive government surveillance.
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: Renew section 702 of PAT RIOT Act [Richard Stallman's Political Notes]
US citizens: call on Congress to renew section 702 of the PAT RIOT Act without the loophole that permits snooping on Americans.
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: Gambling workers' retirement savings [Richard Stallman's Political Notes]
US citizens: call on the Department of Labor to Stop Private Equity and Crypto Scammers from Gambling with Workers' Retirement Savings.
See the instructions for how to sign this letter campaign without running any nonfree JavaScript code--not trivial, but not hard.
Erdoğan's government removed main opposition party [Richard Stallman's Political Notes]
Erdoğan's government has just removed the head of the main opposition party, Özgür Özel, by invalidating the party's leadership contest held over two years ago.
Its previous leader, who now becomes leader again, lost an election to Erdoğan in 2023. People hoped Özel would defeat Erdoğan next year.
Corrupter's slush fund [Richard Stallman's Political Notes]
*The corrupter has created a slush fund of taxpayer money to give to his friends.*
Important witness in George Zimmerman trial [Richard Stallman's Political Notes]
George Zimmerman may have escaped conviction for shooting Trayvon Martin because an important witness for the prosecution spoke with a strong accent of her ethnic group. I wonder whether courts ought to offer accent interpreters for witnesses whose accents might lead jurors to misunderstand or devalue their testimony, or simply make it a struggle to know what the witness said.
The US has indicted Raúl Castro [Richard Stallman's Political Notes]
The US has indicted Raúl Castro, ex-president of Cuba, accusing him of ordering an attack on two small planes in 1996.
According to Wikipedia, the planes were dropping leaflets "to fall on Cuba". There is some slack in the precise meaning of that, but maybe Cuba had legitimate grounds to order them to land and then force them to do so.
However, Cuba had no legitimate grounds to shoot and destroy these unarmed planes without first ordering them to land. By doing that, it committed a crime similar to the boat attacks that the bully continually orders elsewhere in the Gulf of Mexico.
The US ought to indict the people responsible for the continuing series of boat attacks, who are Americans, if it is to indict the people responsible for Cuba's airplane attack 30 years ago.
Cops who defended the Capitol are suing [Richard Stallman's Political Notes]
Cops who defended the Capitol against the anti-American's Jan 6 attack are suing, claiming that the anti-American's slush fund is corrupt support for crime.
Redirecting Ukrainian drones [Richard Stallman's Political Notes]
NATO and the EU accuse the Putin forces of redirecting Ukrainian drones and sending them over Finland, Estonia, Latvia and Lithuania.
I don't see any sense in the resignation of Latvia's prime minister over this. The right thing to do is to develop a net deployer which can get a drone tangled and bring it down. (Ukraine's army has had success defending against Putin forces drones with used fishnets.)
This might make it possible to study what the Putin forces had done to take control of the drone. Suitable encryption, with redundancy and error detection, could make that impossible. It is much more difficult than mere jamming.
Ecuador suffering from "war on drugs" [Richard Stallman's Political Notes]
Ecuador has suffered from a repressive "war on drugs" since 2024, with soldiers kidnapping, torturing, and killing people, and showing no reasons for any of it.
Muslims debanked on vague suspicions [Richard Stallman's Political Notes]
Muslims (and Muslim charities) are often debanked based on vague suspicions — because banks have been told to deny banking service to terrorists, but they have no valid way to identify the few who really are terrorists.
Judge dismisses criminal indictment against Kilmar Ábrego García [Richard Stallman's Political Notes]
*US judge dismisses criminal indictment against Kilmar Ábrego García,* saying that the prosecution was politically based.
Violent attacks on activists on Gaza aid flotilla [Richard Stallman's Political Notes]
Many of the activists seized on the latest Gaza aid flotilla suffered violent attacks after the Israeli troops captured them. They began the violence on the aid boats, after seizing them, and continued it afterward against the captives in prison.
They shot some captives with less-lethal bullets (these are usually rubber-coated steel) from a short distance. Sometimes this broke their bones.
Cops raped some of the protesters.
These attacks caused injuries that have been confirmed by doctors from the victims' home countries; nonetheless, the Israeli government denies them, thus arrogantly legitimizing these attacks while expressing brazen contempt for the truth.
Prosecutors in some countries are investigating criminal charges over these attacks.
Repression on indigenous rights activists in Russia [Richard Stallman's Political Notes]
Indigenous rights activists in Russia face harsh repression.
As in Canada and the US, indigenous groups find mining and extraction put their health in danger, and they try to resist.
Spread of abuse of Palestinians in Israel's prison system [Richard Stallman's Political Notes]
Minister of "security" Ben-Gvir spread abuse of Palestinians in Israel's prison system. This has been covered occasionally.
Now he has trained similar abuse on foreign activists, and some countries are rebuking Israel for this. But the foreign activists are, in themselves, a secondary issue: they are campaigning to end Israel's deprivation and violence against Palestinians under occupation.
Ben-Gvir is trying to create a buffer zone around the cruelty to Palestinians, a buffer zone of cruelty to foreigners who defend the human rights of Palestinians. But it may backfire and make more of the world see the cruelty towards Palestinians more clearly.
Global heating marches steadily on [Richard Stallman's Political Notes]
Global heating marches steadily on, with a possible record marine heat-wave on the US Pacific coast, along with a record low amount of snow in the Rocky Mountains. This occurring with water already in shortage could result in a painful scarcity of water in a large part of the US west.
If it doesn't happen this year, it will happen in another year. There are random fluctuations in the details, but the big picture is that the heat is producing global disaster.
Exiled dissidents from Salafi Arabia [Richard Stallman's Political Notes]
Major anti-social media platforms have blocked access to the accounts of some exiled dissidents from Salafi Arabia so that they can't be seen inside Salafi Arabia.
Torture inflicted on Gaza aid flotilla activists [Richard Stallman's Political Notes]
Australians on the Gaza aid flotilla describe many kinds of torture that were inflicted on them by the anonymous, masked Israeli soldiers and prison guards.
Rotation revisited: A shocking discovery about gcc’s unidirectional rotation algorithm [The Old New Thing]
Last time, we looked at the rotation algorithm used by gcc libstdc++ for random-access iterators, and I concluded by noting that we’re going to make a shocking discovery.
As with all shocking discoveries, this one will shock disappoint you.
The discovery is that the gcc libstdc++ algorithm is the same as the forward-iterator algorithm!
Let’s run both algorithms on a problem where the two blocks are A1, A2, A3, B1, B2, B3, B4, B5. I’ll put the old forward iterator algorithm on top and the new gcc libstdc++ algorithm below.
| first | mid | last | ||||||
| ↓ | ↓ | ↓ | ||||||
| A1 | A2 | A3 | B1 | B2 | B3 | B4 | B5 | |
| ↑ | ↑ | ↑ | ||||||
| first | mid | last | ||||||
We swap at first and mid, then advance
both pointers. The two algorithms agree until first
reaches the end of the original A block.
| first | mid | last | ||||||
| ↓ | ↓ | ↓ | ||||||
| B1 | B2 | B3 | A1 | A2 | A3 | B4 | B5 | |
| ↑ | ↑ | ↑ | ||||||
| first | mid | last | ||||||
The old algorithm recurses in order to exchange A1, A2, A3 with B4, B4. This happens by exchanging A1 with B4 and A2 with B5.
The new algorithm just keeps swapping first with
mid, which also exchanges A1 with B4 and A2 with
B5.
| first | mid last |
|||||||
| ↓ | ↓ | |||||||
| B1 | B2 | B3 | B4 | B5 | A3 | A1 | A2 | |
| ↑ | ↑ | |||||||
| first | last mid |
|||||||
The old algorithm now recurses to swap the A3 block with the A1+A2 block. And that’s what the new algorithm does, too.
So it’s the same algorithm, just with a different point of view. It’s another case of the geeky thrill of discovering that two things are really the same thing, just with different labels.
Now, the two algorithms are not identical. The new algorithm is symmetric and performs its swaps from right to left if the larger block is on the right. The old algorithm always operates from left to right.
But the similarity is striking.
Next time, we’ll look at how clang performs rotation by decomposing into cycles.
The post Rotation revisited: A shocking discovery about gcc’s unidirectional rotation algorithm appeared first on The Old New Thing.
[$] LWN.net Weekly Edition for June 4, 2026 [LWN.net]
Inside this week's LWN.net Weekly Edition:
Microsoft brings coreutils to Windows [OSnews]
At its Build conference, Microsoft announced coreutils for Windows.
Coreutils for Windows is a Microsoft-maintained set of UNIX-style command-line utilities that run natively on Windows — the same commands and pipelines you use on Linux, macOS, and WSL. It ships as a single multi-call binary that exposes each utility under its standard name (
cat.exe,grep.exe,find.exe, and so on), giving you the everyday tools developers already use on other platforms to script, automate, and process text. For the full list, see Commands.The goal is to remove friction when moving between Linux, macOS, WSL, containers, and Windows. The same commands, flags, and pipelines work the same way, so existing scripts and habits carry over without translation. Each command supports the standard
↫ Windows Developer Tools website--helpflag for full syntax and options.
It’s a port of the Rust-based rewrite of the GNU
coreutils, findutils, and grep. There are a few caveats
though, since these ports have to deal with a number of
Windows-isms. The first thing that comes to mind for most of us are
path separators; these ports will handle both the correct and
incorrect Windows/DOS one, but since some tools may output only the
incorrect one this may affect piping. You should also take into
account things like Windows’ ACLs vs. POSIX permission bits,
the lack of /dev/null, and a few other oddities.
Furthermore, there are a bunch of
commands that rely on POSIX-only concepts, so those aren’t
included, and a few other commands that aren’t useful on
Windows are excluded as well. Since a number of commands conflict
with built-in commands from cmd.exe and PowerShell,
which commands run will depend on the shell, the PATH order, and
PowerShell’s alias table.
Everything’s in preview, and installable through WinGet.
As syntax becomes cheap and abundant, architectural control becomes the scarce resource. Effective governance starts upstream, where intent, constraints, and threat models shape the agent’s working context before generation begins. The goal isn’t better prompting but build-time boundaries that prevent structurally invalid code from entering the system.
The dark factories (as Dan Shapiro calls them) are running. Tokens fly through trycycles, features ship overnight, and codebases are ported before breakfast. The velocity is real. And comprehension debt (a term coined by Addy Osmani) is compounding in silence behind it.
What this era is producing, at scale, deserves its own name: Frankenstein factories. Not a critique of any single approach but a description of a structural condition—generation engines so effective at producing working syntax that they have industrialized the creation of architecturally ungovernable systems. The creature walks out of the laboratory impressive, functional, and alive on delivery day.
The crisis arrives the day someone must govern it. To govern a system means to hold it accountable to its design boundaries—the ability to look at it and reliably say why it works, what is permitted to touch what, and to categorically prevent forbidden state changes before they happen. Victor’s catastrophe was not the act of creation but the absent governing frame.
For prototyping or shipping features fast, unconstrained generation is a powerful tool. It optimizes for velocity, and it delivers. But for enterprise payment systems, insurance underwriting engines, logistics orchestrators, and regulated platforms, the question is not “Does the code ship?” but “Who is liable when it does the wrong thing?” Here, automating the word “YES” to every feature request does not solve the problem. It industrializes it.
Consider a standard Jira ticket: “Add an email notification after a successful payment.”
A junior developer might attempt to
wedge the email-sending logic directly into the
PaymentProcessor class. A senior architect catches
this in code review: “No. Fire a
PaymentSuccessEvent to the message bus.” That
human friction—the architectural “No”—keeps
the system maintainable.
Unconstrained AI agents lack this assertiveness. By default, they are the ultimate yes-men.
Hand that same ticket to a standard coding agent and it will not argue about bounded contexts. It will burn tokens until it produces 300 lines of syntactically perfect code, import an SMTP library directly into the core of your billing domain, and submit a pull request. The tests will pass; conventional feature tests make no assertion about bounded contexts. The CI pipeline will go green. And structurally, the system is now a disaster.
This happens not through malice but because of how agentic loops are built. Without explicit architectural constraints, the system’s emergent behavior is to fulfill immediate user intent. The agent is orchestrated to ship the feature, not to defend the architecture. Comprehension debt is the structural consequence: AI generates syntax faster than human beings can read or govern it. Expecting a probabilistic model to enforce structural integrity on its own is a category error. Without a governing frame, the agent will always take the path of least resistance to a “YES.”
You cannot fix code overproduction by hiring more people to read it nor by running the generation loop faster. The only scalable answer is to build a concrete riverbed before you turn on the water.
If the current era automates the word “YES,” we should automate the word “NO.”
Securing the runtime environment prevents the monster from escaping. But to prevent it from being built in the first place, we need to step back into the IDE and the CI/CD pipeline. We need to govern generation.
Compilers never guaranteed correct software. You could write catastrophic logically broken systems in C, Java, or any other compiled language. But compilers served a crucial engineering purpose: They deterministically governed a specific layer of structural risk.
By enforcing hard execution constraints—syntax validity, type compatibility, linkage rules, and executable viability—the compiler acted as an automated boundary. It didn’t verify business intent, domain correctness, or architectural quality. What it did was eliminate an entire class of low-level structural failure before execution ever began.
That delegation of risk is one of the quiet triumphs of software engineering. Our discipline has always advanced by mechanizing one class of guarantees so humans can focus on the next layer of abstraction. We automated machine-level structural correctness so engineers could spend their cognitive energy on application logic. Later, we pushed more guarantees upward, into schemas, testing, static analysis, architectural patterns, and operational controls.
Over time, we also deliberately softened certain boundaries in exchange for speed. Dynamic languages, richer runtimes, reflection, and increasingly abstract frameworks all traded deterministic compile-time guarantees for developer velocity and flexibility. The newly exposed risk was absorbed elsewhere: runtime validation, automated testing, observability, and engineering discipline.
Today, with agentic AI, we are softening boundaries again, more radically than ever before.
Natural language has become a high-level control plane for software generation. Arbitrary text increasingly shapes executable behavior. And in that shift, we have blurred one of the oldest boundaries in computing: the separation between data and instructions.
Outside the model, that boundary still exists. Systems enforce permission scopes, schema contracts, sandboxing, and execution policies. But inside the inference context, those protections collapse into the same token stream.
System prompts, retrieved documents, user messages, tool outputs, and external content all flow through the same neural weights. There is no hard privilege boundary between instruction and input. Modern models may resist naive attacks like “Ignore previous instructions,” but they remain vulnerable to indirect injections disguised as legitimate operational context. A malicious instruction embedded in a customer email, a webpage, or a tool response is not processed as passive data. It can become behavioral influence.
Inside the context window, untrusted text can shape control flow. That is the real softening.
We are generating syntax at machine speed, but we have dissolved the structural gate that once constrained how systems were built. The result is a massive shift of risk from build time to runtime. Code that appears structurally sound during generation may violate architectural boundaries, introduce unsafe execution paths, or become behaviorally compromised the moment hostile context enters the loop.
The conclusion is straightforward: The fact that AI-generated code runs is no longer a meaningful proxy for system correctness.
Syntax is abundant. Execution is easy. Structural governance is what is missing.
We outsourced the writing of logic to machines, but we did not build a deterministic boundary that governs what those machines are allowed to generate.
If we want control back, we cannot rely on human code review at machine speed. We must rebuild the build-time gate.
For decades, the industry’s default response to complexity was abstraction by accumulation: monolithic frameworks, sprawling dependency trees, and ever-thicker layers of indirection. Importing a 50-megabyte library to avoid repetitive boilerplate was a rational trade-off when developer time and cognitive bandwidth were the scarce resources. For AI agents, that trade-off changes.
This is not an argument against foundational infrastructure. Mature primitives—like SQLAlchemy in Python or Spring Boot in Java—remain essential precisely because their conventions are widely learned and predictable. The problem isn’t abstraction but opacity. When core business logic disappears behind proprietary decorators, internal frameworks, or custom orchestration layers, execution becomes a black box. An agent cannot safely reason about code it cannot trace. It needs direct visibility into causality: what changes state, what enforces invariants, and where responsibilities begin and end. Hidden flow degrades reasoning into guesswork; guesswork silently becomes architectural drift.
At the same time, AI drives the cost of procedural code toward zero. Boilerplate is no longer expensive. Clarity is. The design question shifts from “How much can we abstract away?” to “How much must remain explicit for safe reasoning?” The answer is tailor-made architecture: thin infrastructure, explicit domain logic, hard boundaries, and narrowly scoped components with visible contracts. The value is no longer in how much code you avoid writing but in how clearly the system declares its boundaries.
That same opacity also breaks verification. AI review can catch local defects, risky patterns, and implementation mistakes, but it remains blind to architectural drift and missing business intent unless those constraints are explicitly encoded. After all, if you ask a model to review code generated from the exact same vague Jira ticket, do you actually get verification, or do you just engineer a circular hallucination, where the AI politely revalidates its own blind spots?
Figure 1. Tailor-made architecture gives generated
syntax a clear structure without dissolving system boundaries.
The Context Compilation Pattern governs generation in the IDE and the CI/CD pipeline before a single syntactically plausible line ever reaches a human reviewer. If the Decision Intelligence Runtime (DIR) is the vault door that protects execution in production, context compilation is the blueprint that prevents the monster from being built in the lab.
This is not “prompt engineering,” which merely asks a probabilistic model for a better answer. What we need is build-time governance: two layers of defense assembled before the LLM inference is even triggered. The first is structured context injection (assembling the prompt from prioritized artifacts). The second is postgeneration static verification (deterministic AST checks that enforce rules no probabilistic model can override). The prompt structure biases generation toward compliant solutions; the static checks make declared, machine-verifiable boundary violations impossible to merge.
Deterministic build-time governance is not a return to formal software specification (like UML), nor is it merely “prompt engineering disguised as Markdown.” It’s a mechanical constraint on the generation space that makes explicitly declared boundary violations rejectable by design. Context compilation does not eliminate architectural review or replace engineering judgment. Instead, it ensures that the agent operates within a defined riverbed of allowed structural invariants.
Engineering evolves whenever implicit rules become explicit declarations. Application development is now crossing that boundary. The senior engineer’s new job is declarative boundary engineering: explicitly declaring what the system is absolutely forbidden from doing.
The failure is not in the frameworks. The failure is in the process: pointing an unconstrained AI agent at a codebase full of invisible magic and expecting a CI/CD pipeline designed for human-generated code to catch what goes wrong. The answer is to build a compiler for the agent’s context.
The Context Compilation Pattern is the staged pipeline that makes this concrete.
Figure 2. The Context Compilation Pattern
pipeline, enforcing build-time constraints through deterministic
artifact assembly and dual verification.
The most strategically valuable code
in your repository may no longer live in src/. It
lives in /context. The pipeline consumes versioned
artifacts such as intent.md,
boundaries.md, and threat-model.md, each
authored by a specialist before a single line of code is generated.
(Ownership and role responsibilities are covered in
“Artifact-Bound Roles and Accountability” below.) What
matters here is that these files are the inputs to the
compiler: Without them, there’s nothing to compile.
To prevent cognitive overlap, their
roles must be fiercely separated: boundaries.md
declares structural invariants (e.g., dependency
direction, allowed communication paths, and event emission),
whereas threat-model.md models adversarial
constraints as declarative abuse scenarios (e.g., prompt
injection and secrets exfiltration) that must be mechanically
blocked.
boundaries.md warrants a
precise definition, because it anchors the entire build-time
governance model. In practice, boundaries are typically defined at
module or bounded-context granularity (e.g.,
/billing/* or /risk/*), not per class or
per repository. They are implemented using hybrid
artifacts: a natural language document designed to
constrain the LLM, tightly paired with a deterministic rule for the
CI runner.
Consider this concrete example of how an architectural boundary is explicitly declared and enforced:
1. boundaries.md
(for the LLM context)
This Markdown file is injected
into the agent’s prompt. It defines the vocabulary,
architectural constraints, and allowed interactions.
Module: Billing
Ontology: Order, Invoice, PaymentEvent
Rule: Zero external network I/O is allowed in this domain. You must NEVER import requests or smtplib.
2.
semgrep-rule.yml (for the CI/CD runner)
This static file goes to the CI pipeline to mechanize the boundary.
It ensures the code check is fully deterministic.
rules:
# Block forbidden imports at the module boundary
- id: block-external-io-in-billing
patterns:
- pattern-either:
- pattern: import smtplib
- pattern: import requests
message: "Architecture Violation: External I/O is strictly forbidden in the billing domain."
severity: ERROR
languages: [python]
paths:
include: ["src/billing/**"]
# Domain layer must not talk to DB driver directly
- id: block-db-driver-in-domain
patterns:
- pattern-either:
- pattern: import sqlalchemy
- pattern: from sqlalchemy import ...
- pattern: import psycopg2
- pattern: from psycopg2 import ...
message: "Architecture Violation: Domain layer must use Repository abstraction, not database drivers directly."
severity: ERROR
languages: [python]
paths:
include:
- "src/billing/domain/**"
Crucially, these Semgrep/CI rules are human-authored (or human-reviewed) precommit artifacts. We don’t rely on an LLM to generate the security gates on the fly. The AI reads the Markdown to guide its generation; the CI runner executes the static YAML to enforce the boundary.
If these artifacts stay current, they
actively govern the generated codebase. Stale or malformed context
becomes context debt: The pipeline will enforce strictly whatever
was declared, even if the declaration is wrong. Governance
artifacts are production code. They require strict versioning,
explicit ownership, and periodic review just like the executable
logic they constrain. That’s why core artifacts like
boundaries.md require rigorous peer review, not just
casual updates.
Dumping all Markdown files into the system prompt is sometimes acceptable for small projects and small artifacts. But as the codebase grows or the context window fills with too many competing constraints, models begin to suffer from “lost in the middle” degradation and silently ignore what matters most.
The term “context compiler” might sound like a magical enterprise heavy-lift, but the reality is entirely mundane. In its simplest form, it’s just a deterministic context assembly layer combined with a routing mechanism.
Instead of treating context as a flat
pile of documents, the compiler assembles it into an ordered
structure. Because different artifacts apply to different parts of
the project, boundaries.md in the
/billing module might enforce strict isolation, while
the one in /frontend might be much more permissive.
In practice, the compiler may take one of these forms:
Manual selection: The developer simply points their IDE or agent to a structured set of Markdown files.
A mundane script: A
basic Python or bash script that understands a directory structure.
It concatenates the .md files to build the LLM’s
system prompt and hands the .yml files directly to the
CI runner.
Tool-mediated context protocols: Dedicated mechanisms (e.g., MCP) that allow the agent to query the workspace and dynamically assemble the required boundaries directly within the IDE, bypassing the need for manual script invocation.
Consider a practical directory structure:
/context
/global
coding-standards.md
/domain
/billing
boundaries.md
threat-model.md
semgrep-rule.yml
/risk
boundaries.md
threat-model.md
semgrep-rule.yml
/frontend
boundaries.md
threat-model.md
semgrep-rule.yml
When generating code for the billing
module, the script reads /global and
/billing. The compiler simply scopes the rules based
on the directory, perfectly focusing the agent’s attention on
the boundaries that matter while wiring the corresponding YAML
rules for deterministic CI verification.
When faced with conflicting instructions, LLMs don’t throw a compilation error. They hallucinate a dangerous compromise. The compiler prevents this by enforcing a deterministic precedence of declared constraints before the prompt is assembled:
Threat model > Boundaries > Coding standards > Intent + acceptance criteria
Security and architectural boundaries unconditionally overrule feature delivery. This operates at two levels. At the prompt level (soft enforcement), constraint ordering biases generation toward compliant solutions. At the postgeneration level (hard enforcement), deterministic code checks parse the generated syntax, verify structural invariants, and instantly fail the build on violation.
“Resolution” in this
context does not mean an LLM philosophically negotiating between
two Markdown files. It means deterministic rejection via
CI. If the intent.md asks to “email a
receipt to the user,” but boundaries.md forbids
external network calls in the billing module, an unconstrained AI
might try to generate an SMTP call. The conflict is mechanically
“resolved” when the CI pipeline runs a static rule
(derived from semgrep-rule.yml) and instantly fails
the build. The developer (context orchestrator) must then intervene
and change the design to use an event bus instead. The hierarchy is
enforced by deterministic code analysis, not LLM reasoning. A
rejected build is not necessarily a rejected business need;
it’s a signal that declared boundaries and intended
capability must be reconciled explicitly before regeneration. (This
mechanical rejection physically executes during the adversarial
verification phase in step 5).
We do not use AI for this validation. We use existing, proven AST tools and code linters like Semgrep, Bandit, or CodeQL to enforce these boundaries in CI/CD.
However, we must be precise about what this governance actually achieves. Deterministic checks enforce invariants, not the architecture as a whole. You can statically enforce forbidden imports, forbidden outbound I/O, strict layering, and schema conformance. You cannot statically enforce domain semantics, aggregate ownership correctness, subtle coupling, or conceptual cohesion. Deterministic verification doesn’t prove architectural correctness. It proves compliance with explicitly declared structural invariants.
Context as code matters only if
generated syntax is verified against the same boundaries that
shaped it. With a compiled, conflict-free context hierarchy, the
developer agent generates code inside an isolated user space
sandbox. In this fleeting fraction of a second, the agent inside
the developer’s IDE consumes the narrowed, precompiled system
prompt and outputs the actual payment_service.py. Its
role is constrained synthesis: translating the boundaries in
boundaries.md and the imperatives in
intent.md into code.
This phase checks whether the
generated code crossed a forbidden boundary. Before the development
cycle begins, the adversarial context provider defines threat
vectors in threat-model.md. Because a Markdown file
only guides the LLM softly, the governance platform engineer
bridges the gap to determinism by translating those declarative
threats into matching executable rules (like
semgrep-rule.yml) wired into the CI gates. If the
threat model identifies server-side request forgery or secrets
exfiltration as a risk for the /frontend module, the
corresponding CI rule parses the generated code and instantly fails
the build if a known attack pattern or insecure execution sink is
detected.
The pipeline doesn’t ask an LLM to read the Markdown and assess if the code is safe. It mechanically executes the prewritten rules derived from it. If a generative agent helps draft the rule set, it does so before the cycle in an isolated sandbox, and a human reviews the result before it enters CI. Step 5 doesn’t prove overall correctness; it proves that declared structural and security boundaries are enforced.
Like any static gate, deterministic boundary checks trade flexibility for safety and will occasionally reject valid implementations. That friction is intentional: Explicit override and artifact refinement are part of the governance loop.
AI code review may identify suspicious code, but it cannot certify that declared boundaries survived generation. Step 5 therefore relies on deterministic CI rules, not on a probabilistic model interpreting the pull request.
This phase checks whether the
generated code solves the business problem. The
acceptance-criteria.md defines the expected behavior
not as a vague user story, but as a machine-executable contract
(e.g., using Gherkin syntax):
Scenario: Successful payment emits notification
Given a valid payment of 100 EUR
When the transaction completes
Then the PaymentSuccessEvent is published to the message bus
The CI pipeline parses this exact Markdown block and runs the corresponding test suite. Step 6 provides what step 5 cannot: verification against a declared delivery contract.
The code is approved only when it passes adversarial checks and satisfies the acceptance criteria. Without step 5, the system could violate structural boundaries. Without step 6, it could implement the wrong intent. Both contracts must hold.
The traditional SDLC is a linear cascade: Requirements flow to architecture, then to code, then to QA. In an era where a machine generates 10,000 lines of syntax in the time it takes to fetch a coffee, that handoff is a fatal bottleneck.
In the context matrix, specialists define parallel, independent constraint vectors before generation begins. The titles on business cards stay the same. The artifacts they produce change entirely.
| Old role | New role | Artifact | Responsibility |
| Business analyst | Intent definer | intent.md +acceptance-criteria.md |
Define the “what” and the deterministic proof that it was delivered |
| Software architect | World builder | boundaries.md |
Define domain ontology, architectural invariants, and allowed interaction patterns |
| QA & security engineer | Adversarial context provider | threat-model.md |
Define threat vectors and abuse paths before generation |
| Platform engineer/DevOps | Governance platform engineer | Compiler pipeline + CI gates
(semgrep-rule.yml) |
Operationalize declared constraints into nonbypassable enforcement gates |
| Developer | Context orchestrator | coding-standards.md + critical code |
Resolve artifact conflicts, steer generation workflows, implement critical paths, and refine context quality |
In this model, accountability is distributed and artifact bound. Rather than handing off work downstream, each role owns specific upstream activities and constraints.
intent.md and define hard
acceptance-criteria.md (like BDD scenarios or API
contracts). Their job is to formulate requirements so strictly that
the pipeline can automatically prove delivery, acting as the first
line of defense against vague “vibe coding.”boundaries.md to establish the domain ontology and
hard architectural boundaries. Instead of reviewing pull requests
for drift, their daily activity is defining what modules are
allowed to communicate and declaring the structural invariants the
generated code must respect.threat-model.md. Their responsibility is identifying
the precise abuse paths that the CI pipeline must block, ensuring
an LLM never tests its own code.coding-standards.md, manually implement zero-trust
paths, and resolve runtime exception requests. For the bulk of the
system, their focus shifts to a meta-level: resolving conflicting
constraints, tuning the prompt’s signal-to-noise ratio, and
debugging why a given artifact failed to govern the agent
properly.When a failure occurs, the
investigation shifts from “What was the agent
thinking?” to “Which contract failed to govern?”
Because the pipeline deterministically enforces what was explicitly
declared, failures are no longer opaque hallucinations.
They’re traceable collisions between artifact boundaries. A
structural flaw cleanly points to an unbounded
boundaries.md. When the pipeline is green and the
contracts are honest, the orchestrator acts as a firewall against
process failure, not a scapegoat for undocumented assumptions.
Figure 3. The decision boundary architecture:
Context compilation governs generation, ROA structures intent, and
DIR validates execution.
Context compilation makes economic sense only when the cost of architectural failure exceeds the cost of explicit governance. It adds upfront design work and cognitive overhead, so its value depends on how expensive a wrong system decision would be.
For rapid prototyping, throwaway utility scripts, marketing sites, or low-stakes internal tools—where the worst-case consequence of a hallucination is a misaligned dashboard—let the generative engines run unconstrained. Velocity is the only thing that matters.
For safety-critical automation,
trading platforms, healthcare orchestrators, and regulated
enterprise systems, the economics invert. Velocity without
deterministic boundaries is simply the speed at which you
accumulate liability. A single unconstrained agent importing an
insecure dependency into a payment core costs orders of magnitude
more than the engineer-hours spent writing a
boundaries.md contract.
You don’t build a bank vault door for a garden shed. You apply context compilation where the systemic cost of emergent architectural failure is catastrophic.
When code generation becomes cheap,
architectural entropy tends to scale with it. That makes post hoc
code review less effective, especially when reviewers spend their
attention on machine-generated boilerplate. A more durable approach
is context review: peer review of the declarative
constraints that shape what the machine is allowed to build. A
reviewed boundaries.md can guide many later
development cycles. A reviewed pull request usually governs only a
single change.
The discipline has shifted from imperative engineering of procedures to declarative engineering of boundaries.
Let’s return to the Jira ticket that started this discussion: “Add an email notification after a successful payment.”
The business analyst submits the
intent.md. Before the developer agent sees the prompt,
the context compiler activates—at the precommit gate or via
tool-mediated context protocols (e.g., script or MCP) in the
IDE—before a line is written. It retrieves the
architect’s boundaries.md, which states,
“The /domain module has zero external
dependencies. No network calls.” The SMTP import collides
with that boundary instantly. Even if the agent generates the
import, the build will not survive it—the prompt biases
generation toward compliant solutions, and the deterministic static
check in step 5 rejects it at the declared boundary. The
Frankenstein is caught in the pipeline, not discovered in
production three release cycles later.
Code generation is becoming abundant. Architectural discipline is becoming scarce.
Context as code governs what may be generated. Responsibility-oriented agents govern what may be proposed. Decision Intelligence Runtime governs what may be executed. Three boundaries. One governing frame.
The highest-value engineering skill is no longer writing syntax. It’s engineering the conditions under which correct syntax can emerge.
That is the ability to automate the word “NO.”
This article concludes the three-part series on engineering boundaries in agentic AI. The repository at github.com/huka81/decision-intelligence-runtime contains an open source reference implementation of the concepts described in this series.
Basic multicore support for DOS demo uncovered [OSnews]
On the Vogon forums, user MarkDastedt posted an interesting bit of source code he discovered on an old company DVD: a very basic, very rudimentary implementation of multicore support for DOS. Another user, dartfrog, took a closer look and had this to say:
Interesting stuff nonetheless. A worker core is running with no interrupt handlers, no page tables, no memory protection, and no OS. That’s about as close to bare metal as you can get, meanwhile the other core is still running DOS. Fascinating.
↫ MarkDastedt at the Vogon forums
It’s effectively a simple demo, but according to other users in the thread, it fits in neatly with sporadic other attempts to bring some form of SMP or multicore-awareness to DOS. For instance, Michael Chourdakis worked on something similar to this demo for a series of articles now only available on the Wayback Machine. It makes for a cool demo, but moving from this to something robust and usable in DOS is not an easy task.
Still, the possibilities are definitely there, even if you don’t implement full, modern SMP or multicore support. You could have specific DOS applications offloading dedicated tasks to different cores, but as others in the same thread note, individual cores are already stupidly powerful for anything DOS can do, making the use case for additional cores rather moot.
Various & Sundry, 6/3/26 [Whatever]

I have gotten out of the habit of commenting on the news of the day here, mostly because, as I have said before, when it comes to the current governance of our country, there’s only so many times I can yell “it’s because they’re fascists, what did you expect” before I bore even myself, and also, frankly, the time I have to babysit comment threads these days is minimal. I’m not entirely sure how I managed it back in the day because it feels like I barely have time to keep up with my actual paid duties at the moment, and I keep piling additional responsibilities onto my plate.
Nevertheless, I think I want to get back to it a bit here, partly because it’s not like I don’t have thoughts on various news stories as they happen, and partly because it’s good for keeping up regular posting here. So I think at least a couple times a week I’m going to post a “Various & Sundry” post, catching up with my thoughts on events when those thoughts are longer than a post on Threads or Bluesky would allow, but not long enough for their own full-fledged post. They will usually cover three to five items, including but not necessarily limited to current events. Sometimes I’ll also plop in something I think is amusing or has otherwise caught my eye.
In the past for things like this I would try to avoid dropping in stuff I’d already commented on elsewhere, but this time around I think I’m going to be a little more lax about that, one, because I know that not everyone who visits here follows me on Threads/Bluesky/Mastodon, so that material will be new to those folks in any event, and two, because often even if I’ve commented about the story elsewhere, what I’ve done there is mostly have been quippy, and here I might have something else to say about it.
Also, three, I’m lazy, and four, inasmuch as this site acts as my own institutional memory, if I post something about it here it constitutes an official record. I mean, all the posts I ever placed on the former Twitter are now entirely lost to time, since I have gone in and purged my entire timeline there. This site, however, endures. So there it is. Welcome historians and biographers of the future! This is me, in typed form!
For these posts and as (nearly) always, I will be leaving the comments open but please do me the favor of remembering the comment policy here. Please be polite to others, especially when you disagree, and avoid making me come in and Malleting your post. There is a special subclass of commenter here who especially likes to take any point and use it as a jumping off point for some other thing they want to jam into the discussion and/or likes to use particularly elevated terms or positions just to get a reaction. I am not about that these days, folks, even if I generally agree with your positions. I’m tired, y’all, and the Mallet will have a hair trigger. Please comment accordingly. Thank you in advance for not being a pain in my ass.
With that as preamble, here are today’s various & sundry topics:
60 Minutes reporter Scott Pelley fired from CBS News: This was not exactly unexpected, since in a staff meeting with his new boss Nick Bilton he expressed, shall we say, unvarnished opinions about Bilton and CBS News head Bari Weiss, and apparently declined to apologize to either them after the fact. One does not do that, especially to status-anxious posers like Bilton and Weiss, without expecting repercussions. Weiss and Bilton may in fact be incompetent (that’s obvious in the case of Weiss, and a reasonable supposition about Bilton, who has almost no relevant experience for the job he now holds), but they are still the bosses. Pelley knew he was setting his career at CBS one fire the moment he opened his mouth.
Also, he’s not wrong. His departure email came with receipts about how and when he and 60 Minutes were pressured or outright made to compromise their journalistic integrity since Weiss has been in charge, and a follow-up statement flat out called Weiss a liar regarding the manner in which his firing was handled. Weiss and Bilton have to know that in this sort of “they said. he said” situation, Pelley has integrity on his side, and they do… not. It’s also clear that whatever 60 Minutes might be after this, it will probably not be what it was, and it will probably be worse. And that, indeed, that has been the plan from the start.
“AI” use starts getting really expensive: Turns out there really is no such thing as a free lunch, as the various “AI” providers are changing how their services are metered, from “per request” to how many tokens one burns through with those requests. Tokens aren’t cheap! Users are burning through their monthly allotment of them in a day, apparently largely because coders and others were using them for somewhat frivolously. One particularly salacious (but possibly sensationalized) story had an anonymous company burning through half a billion dollars of “AI” use in a single month. I’d want to see some actual reporting on that, including the company’s name, before I lend that report full credence, but out in the real world, prices are still going up, enough so that using “AI” is now more expensive than paying the humans companies are laying off to pay for the “AI.”
And if you’re wondering why, if that’s so, companies are still apparently so avid to replace humans with “AI,” well, one answer is the corporate class of tech just fuckin’ hates workers, and would rather give their money to each other in tech circle-jerk than to actual humans who might foolishly spend that money on things like, you know, food and rent and children. Another reason is that the other corporate folks who don’t actively hate their workers were sold a bill of goods, where they were made to believe an ineffective tool could streamline their costs (mostly by firing workers), only to find out after those human workers were let go that the actual costs of that ineffective tool were hidden from them. Now they’re stuck.
No, I don’t particularly have a warm, fuzzy feeling for tech execs at the moment.
Which brings us to our third thing today, from humorist Eleanor Morton. Find the lie.
— JS
Serena OS: a modern operating system for classic Amigas [OSnews]
A hobby operating system, not written in Rust, not targeting Qemu, not targeting a Raspberry Pi. Yes, it still happens.
Serena OS is what you get when modern operating system design and implementation meets vintage hardware like the Amiga computers. It is based on dispatch queues rather than threads, supports multiple users, is inspired by POSIX, yet retains its own character, is strongly object-oriented in terms of design and implementation and prepared for a cross platform future.
↫ Serena OS GitHub page
Serena OS supports most (all?) of the classic Amigas, but the 500, 600, and 2000 need at least 1MB of RAM and a 68020 accelerator. It has code privilege separation between kernel and userspace, basic memory management, its own custom file system, drivers for input devices and graphics, an interactive console with VT52 and VT100 support, and much more. It also comes with a C99-compatible libc, and has its own shell.
Note that “AI” chatbot Claude is listed as a contributor to the project.
Ben Hutchings: FOSS activity in May 2026 [Planet Debian]

This was a particularly busy month for me in terms of Debian contributions.
It started with a week in Hamburg for the MiniDebConf. I talked to many colleagues face-to-face and worked on various bugs and maintenance tasks. I’m pleased to have finally found the time to reproduce and fix the boot-time crashes in the parallel port subsystem that have been reported many times recently.
A series of easily exploited kernel LPE (local privilege execution) issues were published this month, mostly with very little coordination with distributions. Salvatore and I had to upload fixes for these at roughly weekly intervals. All of these fixes needed to be applied to 4 different upstream branches (currently 5.10, 6.1, 6.12, and 7.0) and 7 Debian branches (including backports).
The Three Mouseketeers [Penny Arcade]
What we discovered when creating this strip is that people have NSA stalker tier levels of knowledge about these mice. It sounds like Gabe has some serious competition in this arena and should - until further notice - make his enemies start his jeep. Just until things cool down.
Rsync opens the slopgates, regressions and bugs ensue [OSnews]
Andrew Tridgell, developer of rsync, has published a blog post addressing the massive surge in “AI” code submissions and the string of regressions supposedly caused by them. He explains rsync was flooded with “AI”-generated security reports, and he couldn’t handle the volumes anymore.
As this flood started to get more intense I realised I needed to raise the defences on rsync a lot — we needed much more thorough test suites, code coverage analysis, CI testing on a lot more platforms, deliberate and thorough scanning for possible security issues (so I find at least some of them before other people!) and the addition of a whole lot of defence-in-depth hardening techniques. This is all a huge amount of work. I’m retired (though my wife may dispute that!) and I’d rather be out sailing than working on rsync security issues, so I have reached for several AI tools to help with what needs to be done. I have absolutely no regrets about doing that, although from the storm of anti-AI rage it’s clear that many people think I should be hung up by my toe nails and flogged for even considering doing this.
↫ Andrew Tridgell
The entire rsync codebase is around 65k lines, and the recent flood of “AI”-generated submissions amount to +16k/-6k lines of code within a few weeks. That’s an absolutely insane amount of changes in a really short time to a project that most people deemed stable and “done”. If you take a look at the activity graph, it’s clear that a project that was silently and carefully doing its job is seeing a massive amount of changes, almost exclusively generated by “AI”, all in recent weeks. It’s no surprise, then, that people get annoyed when something they deemed “done” and stable is suddenly causing issues for them because its maintainer decided to open the slopgates.
Tridgell is, of course, an incredibly accomplished and capable programmer, but so is Kent Overstreet and he thinks his “AI” girlfriend is sentient and conscious, he reprogrammed it1 after someone convinced his “AI” girlfriend was lesbian and trans, and he thinks that he gave his “AI” girlfriend an orgasm2, so being an accomplished and capable programmer doesn’t mean you’re immune from “AI”-hyperbole, or worse, “AI”-induced psychosis.
Tridgell’s blog post already has all the usual talking points from “AI” techbros about how the tools sucked last [year][month][week] but they’re good now, trust me I know how these tools work, humans are actually the same as these “AI” tools, really what is intelligence anyway, and yeah we got a whole slew of new issues caused by the “AI” code but more “AI” code will surely fix that, and so on. There’s some red flags that give me the ick, because I’ve seen them all before from people entirely losing themselves in “AI” hype.
Tridgell also takes pot shots at openrsync, a reimplmentation of rsync developed by the OpenBSD team, also shipped by default on macOS. Openrsync has nothing to do with any of the current issues rsync is facing, as the project was started way back in 2018 or so. Taking pot shots at this project in this particular blog post feels childish and unnecessary, and reeks of insecurity; focus on the issues your own project is facing before attacking some other project. This feels like another red flag.
Quite a few people have experienced
regressions with rsync in recent weeks, but it seems like more are
going to come as the slopgates will remain open, and will probably
be opened even further. For such a cornerstone open source project,
that raises a lot of questions, and I’m sure there’s
quite a few people pondering if they should, perhaps, switch to
openrsync – just like Apple did.
Humble Bundle Isn’t Playing Around: Inside Our $1.7 Million Reforestation Partnership with One Tree Planted [Humble Bundle Blog]
Humble’s five-year, $1.7 million partnership with One Tree Planted (OTP) is a powerful illustration of sustained corporate giving. Humble’s unique giving model has been transformative for OTP. This sustained funding has enabled critical ecological restoration projects across five continents, including projects like restoring over 343,580 high-altitude Polylepis trees, protecting the headwaters of the Amazon alongside Indigenous communities in the Andes, and planting over 6,500 trees …
The post Humble Bundle Isn’t Playing Around: Inside Our $1.7 Million Reforestation Partnership with One Tree Planted appeared first on Humble Bundle Blog.
We need a social web that works for nobodies.
The Most Expensive Mistake in the History of Computing [I, Cringely]
I promised to show you why the whole industry’s answer to its own problem — buy a bigger brain — is the most expensive mistake in the history of computing. To do that I have to take you back to 1999, because I was there, and if you’re old enough to be reading me, maybe you were too.
And I wasn’t only watching. In 1999 I put $10,000 into a young company called E-Loan, run by a founder named Chris Larsen. After the IPO I cashed out for $400,000 and bought a house. Chris kept playing — E-Loan to Prosper to Ripple — and did rather better than a house; he’s a crypto billionaire now. (Chris, if you’re reading this: we should talk.) Those are the two ways to play a year like 1999, and both of them worked. But notice which one of us turned the paper into something you can actually live in.
You remember the frenzy. The IPOs. The companies with no earnings yet a story so good that earnings felt like a rude question. The fear, thick in the air, that if you didn’t get in now you’d spend the rest of your life explaining to your grandchildren why you missed it. We had a name for it — Fear of Missing Out — before we had the acronym: you bought because everyone was buying, and the buying was the proof.
Then it ended, and everyone drew exactly the wrong lesson.
The lesson people took from 1999 was that the internet was a bubble. It wasn’t. The internet was the most real thing to happen to commerce in a century — it ate retail, media, advertising, and the telephone, precisely as the prospectuses promised. The technology was never the lie. The lie was the price — capital sprinting into a true story while refusing to look at the unit economics underneath it. Pets.com wasn’t wrong that you’d someday buy dog food online. You’re probably buying it online right now. Pets.com was wrong about what it cost to ship a forty-pound bag for a flat five bucks. The revolution was real. The arithmetic was fatal.
As I write this, SpaceX is days from launching what will be the largest IPO in human history — a roadshow this week, pricing next, at a valuation knocking on two trillion dollars, larger than Aramco. OpenAI is lining up a listing for the fall at something near a trillion. Anthropic has quietly filed, valued in the same impossible neighborhood. Last quarter, roughly four of every five venture dollars on the planet went to AI. Bank of America’s own strategist is comparing the mood to the most extravagant manias on record and warning that these three debuts alone will tip the market’s concentration past anything we saw in the dot-com peak. The FOMO isn’t a side effect this time. It’s the product.
And — let me say it as plainly as I said it about the internet — the technology is real. That is not the question. AI is going to be as consequential as its loudest believers claim. So stop arguing about whether it’s a bubble in the lazy way, the “is any of this real” way. That was the wrong question in 1999 and it’s the wrong question now.
The right question is the one nobody at the roadshow wants asked: is the money priced on the right architecture?
It isn’t. And here’s where my last two columns come collect their debt.
The story being sold — the story holding up those valuations — is that AI is thinking, that thinking demands an ever-larger brain, and that whoever owns the biggest brain owns the next century. Every dollar of that two-trillion-dollar valuation assumes the moat is brain size. But Salesforce’s own researchers already ran the experiment, and I told you the number last time: hand the model the documents and it scores in the mid-seventies; make it go find them and it scores a third. The brain was never the bottleneck. The bottleneck was retrieval — the cheap, dull, unglamorous business of locating the right paragraph. The expensive part was sitting there the whole time, perfectly capable, waiting on the cheap part.
So follow the money to where it’s actually going. Stargate alone is a half-trillion-dollar bet on gigawatts of data centers. The grid can’t keep up; we’re now siting power plants for this. And the overwhelming bulk of what all that silicon will do, in the enterprise, is look things up — retrieval, the work that runs on a CPU at a few watts, being run instead on GPUs at three hundred. That is the NVIDIA tax I described in my first column, and now you can see its size. It is the largest concentration of capital in the history of business, aimed at making the brain bigger, to solve a problem that does not live in the brain.
That’s the mistake. Not that AI is fake — that the spend is pointed at the wrong layer. And it is the most expensive mistake ever made because we have never before had the means to make a wrong call at this scale, this fast, with this much applause.
Which makes a two-trillion-dollar valuation built on “biggest brain wins” a Pets.com valuation. Right about the revolution. Wrong about the cost structure underneath it. Bank of America, in less inflammatory language than mine, has already described this IPO wave for what it is: a mechanism for moving accumulated risk off the early insiders and onto you. The roadshow is the machine that does it. A roadshow is, and has always been, an apparatus for manufacturing urgency — get in before the story is re-examined. In 1999 the re-examination arrived a few quarters after the bell, when the lockups expired and someone finally totaled up what it cost to deliver the product. I have watched this exact movie. I can tell you how it ends. It ends the day the unit economics walk into the room.
A disclosure, as always
You should know I’m not a neutral party. I co-founded a small company built on the heresy in these columns — that retrieval is the main event, that it belongs on cheap and abundant silicon, and that the giant brain should be held in reserve for the rare moment something must truly be generated rather than found. So discount my enthusiasm to taste.
But notice what my conflict cannot touch. The two-trillion-dollar number is SpaceX’s, not mine. The eighty-percent figure is the venture industry’s, not mine. The bubble warning is Bank of America’s, not mine. And the score that proves the brain was never the bottleneck — that’s Salesforce’s, published in their own paper, downloadable by anyone who wants to check my arithmetic. I’m not asking you to trust me. I’m asking you to read the documents the believers wrote themselves.
There’s a second mistake hiding underneath the first one, and it’s worse — because the bigger brain can’t fix the economics, which is bad, but it also can’t fix the one thing every serious enterprise actually needs: a machine that knows when to say I don’t know. That’s where “expensive” quietly turns into “dangerous,” and that’s where I’ll take you next time.
For now, just remember what 1999 actually taught us. The companies that walked out of the wreckage weren’t the ones with the biggest story or the loudest roadshow. They were the boring ones whose arithmetic still worked the morning after the party. Everyone else is at the roadshow. The opportunity, as always, is for whoever’s in the back of the room doing the math. I’ve run that math once before. It bought me a house.
The post The Most Expensive Mistake in the History of Computing first appeared on I, Cringely.
Claude is much better at starting from scratch with a big
piece of code than humans are. It can suck in a full app and all
its dependencies in a few seconds. For me, I would never get there.
A finished piece of software is much bigger than people think,
because the details are mostly pretty well hidden. But if you want
to work on the code, you have to worry about it all. But I just had
a minute to ask Claude why I made a certain decision a couple of
months ago, and it found the answer in its notes and then I
remembered it. This is one of many ways it rewrites the rules of
building software out of a big library of components. It can manage
complexity for you which means of course we will make more complex
software and at the same time make it simpler. Code complexity
becomes something you don't have to trade off against, like time vs
space, the oldest tradeoff in software.
[$] Open-source security is not a solo activity [LWN.net]
Over time, many open-source maintainers face the same problem: they lack the time to do all of the work that their project needs, and no one else is stepping up to provide adequate help. Maintainers, though, are often reluctant to throw in the towel. The result is suboptimal all around; the maintainer is stressed out, project quality suffers, and users face security risks that they may not be fully aware of. At the 2026 Open Source Summit North America, Robin Bender Ginn spoke about this problem, when it might be time for maintainers to pass the torch, and the responsibilities of users.
WinUtils: shell-powered CLI tools for Windows 95 [OSnews]
WinUtils started in 1996-1997 as a way to build my programming chops. I was poking around the Windows 95 shell APIs, found the file operation functions, and thought it would be cool to have CLI tools that called them instead of doing raw file I/O. The payoff was practical: because the operations went through the shell, the same confirmation prompts, progress dialogs, and Recycle Bin behavior you got from Windows Explorer came along for free.
↫ Code Naked
Code Naked – their alias, not mine – recently dug these old executables and code back up, and published them on GitHub. Back then, though, there were no centralised distribution platforms, so they just uploaded them to various download and shareware websites and kept track of the download tickers. Very neat little tools, and fun to have them immortalised.
Google offers opt-out of “AI” search results for websites, promises it won’t affect regular search rankings [OSnews]
Google is adding a switch to allow website owners to opt out of being featured in their “AI” overviews and related slopsearch results.
With this new toggle in Search Console, website owners can decide if they want their site to appear in and help ground responses in our generative AI Search features (like AI Overviews, AI Mode or AI Overviews in Discover). Sites that opt out will not receive traffic or impressions from our generative AI features. This control will not be used as a ranking signal for search results outside of these generative AI Search features. This work builds on our long history of designing tools, like snippet controls and Google-Extended, that give websites more choice.
↫ Mrinalini Loew at Google’s The Keyword blog
While it’s nice of Google to offer such an opt-out to website owners, their claim that opting out won’t effect your regular search ranking rings hollow to me. I simply just do not trust Google in any way, shape, or form to not weaponise their “AI” against anyone who doesn’t want to be sucked up, regurgitated, and spat out in one of their slopsearch tools. On top of that, regular Google Search is dead anyway, so even if they keep their promise, it’s moot because Google users are going to be force-fed the slopsearch tools instead of the regular Google Search.
I honestly have no idea how much traffic OSNews gets from Google at this point, and while I can look it up, I just don’t really care, and think it’s probably not that much. I could opt us out, but the real problem is that such an opt-out won’t stop Google’s slopbots – or anyone else’s slopbots – from taking our writing and training their “AI” tools on it, so what’s the point of going through the effort?
I doubt Google is relevant enough for us.
Useful concept, MacWrite was the coral reef for writing on the Mac.
CodeSOD: Coerce the Truth Out of You [The Daily WTF]
Frank suspected something odd when he spotted a
use of React's useMemo function in some JavaScript
code. Now, there's nothing wrong with using that method,
in and of itself. It watches some variables and recalculates a
callback if they change for any reason. It's a great tool for when
you want to avoid recalculating expensive things over and over
again.
But in this case, the calculation in question was
isAuthorized, which wasn't an expensive calculation;
it was just checking if certain values are set. The code looked
like this:
const isAuthorized = useMemo(() => {
return (session && token && !group) === false;
}, [session, token, group]);
session, token and group
are all either going to be null, or be an object. To be authorized,
all three must be set to non-null values. A rational person,
knowing this, might choose to return session && token
&& group, and exploit JavaScript's truthiness. Or,
if you really wanted to coerce it to a boolean, you could
return !!(session && token &&
group).
So why on Earth are they negating group? How would
this even work? If the check is "all three must be set" what is
this doing?
Well, if you do a && b && c,
JavaScript will return the last value you looked at. The
&& operator short circuits, so that means it
either returns the first falsy value you encounter, or the
very last value in the chain.
So in this scenario: (session && token &&
!group), if session or token is
null, the expression evaluates to null.
Otherwise, if group is null, then
!group will evaluate to true. Because
they use the === operator, JavaScript won't do any
type coercion, and that means null === false is false,
as is true === false.
I can't believe that this code works as intended. I mean, it works, it gives the correct output, but I think that's an accident. Happenstance of someone with no clue gradually throwing operators into an expression until it does what they want. Perhaps it's LLM generated code- who can even guess anymore? It certainly seems like it was generated through a stochastic process; whether that's a bumbling developer or a bunch of math, there's definitely no intelligence involved, artificial or otherwise.
[$] BPF in the agentic era [LWN.net]
Alexei Starovoitov gave "less of a presentation, more of a
scream of realization
" at the BPF track of the 2026 Linux Storage,
Filesystem, Memory-Management, and BPF Summit. He shared a set
of ideas for how BPF could change to avoid being swept away by the
sea-change in programming represented by modern large language
models (LLMs) and the coding agents based on them. In a follow-up
session, the discussion covered more problems with how coding
agents use tools like bpftrace, and the current deluge of patches
in need of review in the BPF subsystem.
Tridgell: rsync and outrage [LWN.net]
Andrew Tridgell has written a blog post responding to complaints that he has begun using LLM tools in his work maintaining rsync:
Like many developers of open source packages I've been hit by a flood of security reports lately in my role as the rsync maintainer. Many of those reports are AI generated (not all though, there are some notable ones with very careful and high quality manual analysis).
As this flood started to get more intense I realised I needed to raise the defences on rsync a lot — we needed much more thorough test suites, code coverage analysis, CI testing on a lot more platforms, deliberate and thorough scanning for possible security issues (so I find at least some of them before other people!) and the addition of a whole lot of defence-in-depth hardening techniques.
[...] Now to the future, because we're not done yet by a long shot. The security reports keep rolling in. I'm working on a bunch of CVEs right now. Luckily I've been joined by some other very good developers with great systems development skills and security knowledge. Some of these people came to my attention partly because of all the rage happening at the moment, so I get some rage storm clouds have silver linings. Watch out for some credits for some great new rsync developers in the next release.
Security updates for Wednesday [LWN.net]
Security updates have been issued by Debian (php-twig), Fedora (hplip, python-wsgidav, roundcubemail, and xorg-x11-server), Oracle (compat-openssl10, httpd:2.4, and kernel), Red Hat (osbuild-composer), SUSE (busybox, cloudflared, cockpit, cups, ffmpeg-4, gnutls, google-osconfig-agent, helm, hplip, kernel, kubelogin, libjxl, libsoup, libunbound8, LibVNCServer-devel, mapserver, nvidia-open-driver-G06-signed, nvidia-open-driver-G07-signed, openssh, python-idna, qemu, rqlite, shadowsocks-v2ray-plugin, ucode-intel, unbound, vim, vorbis-tools, and xorg-x11-server), and Ubuntu (age, dovecot, editorconfig-core, gobgp, libapache-mod-jk, libcommons-lang-java, libcommons-lang3-java, libeconf, linux, linux-aws, linux-aws-6.8, linux-aws-fips, linux-azure, linux-fips, linux-gcp, linux-gcp-6.8, linux-gcp-fips, linux-gke, linux-gkeop, linux-hwe-6.8, linux-ibm, linux-ibm-6.8, linux-nvidia, linux-nvidia-6.8, linux-nvidia-lowlatency, linux-nvidia-tegra, linux-oracle, linux-oracle-6.8, linux-raspi, linux-raspi-realtime, linux-realtime, linux-realtime-6.8, linux, linux-aws, linux-azure, linux-azure-6.17, linux-hwe-6.17, linux-nvidia-6.17, linux-oem-6.17, linux-oracle, linux-oracle-6.17, linux-raspi, linux-realtime, linux-realtime-6.17, linux, linux-aws, linux-gcp, linux-ibm, linux-nvidia, linux-oracle, linux-raspi, linux-realtime, linux-aws-6.17, linux-gcp, linux-gcp-6.17, luanti, mysql-8.0, mysql-8.4, node-tar-fs, and unbound).
Issue 46 – Greta’s Wedding – 04 [Comics Archive - Spinnyverse]
The post Issue 46 – Greta’s Wedding – 04 appeared first on Spinnyverse.
AI Used to Decrypt Medieval Ciphers [Schneier on Security]
Researchers are using machine learning algorithms to decrypt historical pencil-and-paper ciphers.
Emmanuel Kasper: Running Linux i386 binary (steamcmd) via debootstrap foreign chroot [Planet Debian]

The Steam command line client, which I need to download the game data for the Doom3 BFG shooter, is only available as an Linux i386 binary. As my main home computer is an arm64 box, this could be an issue, but today we have no less than three different ways to run a Linux i386 binary on arm64: Fex, Box32/64 and the older qemu-user mode. According to the Box64 benchmarks, qemu-user is the slowest of the three. But since this is only to run a command line tool downloader, where network speed is the bottleneck, this doesn’t matter a lot.
Running steamcmd outside of a chroot via qemu-user and dpkg
multiarch support was failing me with the error
i386-binfmt-P: Could not open '/lib/ld-linux.so.2': No such
file or directory even after installing the i386 libc. So I
went the way of qemu-user and a chroot environment, a bit more
convoluted but I can run any i386 binaries there in the future.
Create a debian-i386 chroot environment via deboostrap:
$ sudo apt install qemu-user qemu-user-binfmt debootstrap
$ fakeroot debootstrap --foreign --arch=i386 debian-i386
$ sudo chroot debian-i386
# inside the chroot
# /debootstrap/debootstrap --second-stage
# exit
Add needed mounts to run binaries inside the chroot:
$ sudo mount --bind /dev/ debian-i386/dev/
$ sudo mount --bind /dev/pts debian-i386/dev/pts
$ sudo mount -t proc none debian-i386/proc/
Install steamcmd in the chroot client:
$ sudo chroot debian-i386
# export LANG=C
# cat /etc/apt/sources.list
deb http://deb.debian.org/debian stable main contrib non-free
# apt update && apt install --yes steamcmd
# useradd --create-home --shell /bin/bash steam
# su - steam
$ steamcmd
... will download an updated version of the tool, and print a lot of tracing information
Steam> quit
From now on you can follow the Doom3 BFG instructions to download the game data.
Once you exit the chroot, the game data will be available at
debian-i386/home/steam/
Professionals know how to talk about it [Seth's Blog]
We evolved words on top of our primordial ability to have feelings.
Words allow us to be specific, to understand a situation more completely and to teach.
Our hunches and feelings still matter, but professionals choose to be able to talk about their work.
Learn the words and then make the choice to use them.
Climate Authoritarianism [George Monbiot]
How to alienate people from the green transition.
By George Monbiot, published in the Guardian 27th May 2026
We will not persuade. We will not explain. We will not listen. We know best and we will force you to comply. This, I’m sorry to say, is how the government’s climate policy works. Or rather, how it doesn’t. Because nothing could be better calculated to alienate the people you need to reach than climate authoritarianism.
Three astonishing things are happening simultaneously. One is the government’s utterly baffling failure to communicate with us on this existential issue. Where are the public information videos? Where are the televised emergency briefings on climate breakdown, like the emergency briefings on Covid-19?
This is the reasonable demand of the National Emergency Briefing campaign, whose film is now being shown in more than 1,000 cinemas and other venues in the UK: a remarkable achievement. Why are scientists, activists and journalists – faint voices in the storm – being left to explain this defining issue and the societal transformation we need? The great majority accept a call for action only when it comes from government. When it tells us “this is our national purpose and we want you to be part of it”, people tend to heed the call.
That is what happened when the government belatedly responded to the Covid-19 pandemic in 2020. Despite the deep distrust of Boris Johnson’s administration, despite the prime minister’s own fecklessness, we came together to take responsibility (even if he didn’t). This is what happened when the government rallied the nation against the threat of Nazi invasion and bombing. Yet, faced with the current emergency, successive governments act as if no one needs to be mobilised, despite the great societal changes we need to make. They treat it as a purely technical challenge with purely technical solutions.
Now comes the second strand: coercion. Last week, the government proposed to curtail the public’s legal right to object to the new energy infrastructure it deems “critical”. If it gets its way, development consent orders (planning permission) for “critical” projects would in effect gain the status of acts of parliament. This means they could not be legally challenged by local people, except on human rights grounds – an almost impossible hurdle. This measure, landing on top of previous curtailments of the right to object, represents yet another centralisation of power. A planning system based on consent is becoming a planning system based on decree.
But surely there’s a case for stopping what Keir Starmer calls the “blockers”, the “zealots” and the “time-wasting nimbys”? His supporters point to the judicial review case that delayed approval of the massive Vanguard offshore windfarm in the North Sea. As the Centre for British Progress (yet another “thinktank” that won’t tell me precisely who funds it) states: “Permission … was challenged by a single private individual, who succeeded in delaying the project by two years.” They list it on their page discussing “frivolous cases”. But it was about as far from frivolous as you can get.
“A single private individual” might suggest the challenge was cranky and vexatious. But every case needs a claimant, and this one, Raymond Pearce, had massive support from local communities in Norfolk as well as 85 parish and town councils. He is strongly in favour of wind power, but objected on the grounds that the government had not taken into account the cumulative impacts of the substations and cable corridors that the Vanguard scheme and its sister project, Boreas, would inflict on the landscape when the windfarms were connected to the grid. Objectors to such schemes have long argued that the UK should follow the lead of other North Sea nations and build its transmission hubs offshore.
Mr Justice Holgate’s judgment that the government’s decision was unlawful could not have been more straightforward. Though the project’s environmental statement identified “significant cumulative effects” on the landscape, the government failed to take them into account when making its decision. The state’s reasoning, the judge said, “even on a generous view, could only be described as cursory”. It was “perfunctory “, “flawed” and “perverse”.
If the government gets its way, there will no longer be legal correctives to such perverse and flawed decision-making. It will be able to hoodwink the public without consequence. Shoot the messenger, then ensure there are no more messengers.
As it happens, once the two windfarms received new consent, their developer, the Swedish company Vattenfall, decided to shelve the second one (the Boreas scheme) as it was too expensive. Why? Partly due to “the lack of a shared offshore ring main, which meant windfarms needed to run separate cables to onshore substations”. In other words, exactly what the objectors were calling for. Public engagement does not damage decision-making. It improves it.
The government has also been briefing against Britain’s membership of the Aarhus convention, which, as interpreted by the UK supreme court, limits the costs objectors face if they challenge decisions on environmental grounds. Otherwise, someone who seeks to protect their local landscape or wildlife habitat could lose everything they possess. Cost limitation is a fundamental aspect of access to justice.
At the same time, however – and here we come to the third element – woe betide you if you protest for the state to raise its climate ambition. A series of laws and restrictions, continued by this government, has created a new class of political prisoner: people put away for months or even years for demanding that an existential crisis is treated as such.
It’s all coercion, no persuasion. Leave it to us. We know what’s good for you. We don’t need your help. Don’t try to challenge us, in either direction.
Just as we need broad public consent for the green transition, Starmer’s team treats it as a holy war against the landscape-loving infidel. Far from accelerating climate action, it generates anger, resistance and resentment, a gift to the fossil fuel industry. Just as Reform UK and the Tories seem to act in the interests of fossil fuel companies, Labour seems to act in the interests of green infrastructure developers, letting them ride roughshod over people’s legitimate concerns.
We are being bludgeoned into accepting a deeply flawed climate strategy that is neither fast enough nor fair enough. The vast response that climate breakdown necessitates must, like a war effort or a pandemic effort, be a joint endeavour, that happens with us, not to us. But “with us” is not a concept this government seems to understand.
www.monbiot.com
The Three Mouseketeers [Penny Arcade]
New Comic: The Three Mouseketeers
Girl Genius for Wednesday, June 03, 2026 [Girl Genius]
The Girl Genius comic for Wednesday, June 03, 2026 has been posted.
Rotation revisited: Another unidirectional algorithm [The Old New Thing]
Some time ago, we looked at the problem of
swapping two blocks of memory that reside inside a larger block, in
constant memory, and along the way, we learned about
std::rotate which swaps two adjacent blocks of
memory (not necessarily the same size).
I noted in a postscript that
clang’s libcxx and
gcc’s libstdc++ contain specializations of
std::rotate for random-access iterators that view the
operation as a permutation and decomposes the permutation into
cycles.
I was mistaken.
The implementation in gcc’s libstdc++ has special cases for single-element rotations, but in the general case, it uses a different algorithm.
Let’s call the blocks of memory to be exchanged A and B, where A is made up of elements A1, A2, A3, and so on; and block B has elements B1, B2, B3, and so on. Without loss of generality, suppose the A block is smaller. (If not, we can just mirror the algorithm.) And for concreteness let’s say that the elements are A1, A2, A3, B1, B2, B3, B4, B5.
| A1 | A2 | A3 | B1 | B2 | B3 | B4 | B5 | |
| ↑ | ↑ | ↑ | ||||||
| first | mid | last |
Exchange elements at first and mid,
then move both iterators forward. After the first step, we have
this:
| B1 | A2 | A3 | A1 | B2 | B3 | B4 | B5 | |
| ↑ | ↑ | ↑ | ||||||
| first | mid | last |
After three steps, we have moved all of the A’s out and replaced them with an equal number of B’s.
| B1 | B2 | B3 | A1 | A2 | A3 | B4 | B5 | |
| ↑ | ↑ | ↑ | ||||||
| first | mid | last |
But don’t stop. Keep on going until mid
reaches last.
| B1 | B2 | B3 | B4 | B5 | A3 | A1 | A2 | |||
| ↑ | ↑ | |||||||||
| first | mid last |
All of the B’s have been swapped to their final positions, but the A’s are jumbled.
But you can predict the exact nature of the jumbling. The A block is in two chunks. If we let n be the total number of elements |A| + |B| and a be the number of elements in A, then the first chunk has the final n % a elements, and the second chunk has the initial a − (n % a) elements.
Therefore, we can recursively rotate the two pieces of the A
block to finish the job. Move mid to
first + (n % a) and restart the
algorithm.
This algorithm performs n − 1 swaps. You can calculate this inductively by observing that we perform |B| swaps, and then recursively rotate |A|. Or you can calculate this directly by observing that each swap moves one element to its final position, except that the final swap moves two elements to their final position.
The locality of this algorithm fairly good. The
first iterator moves steadily forward, and the
mid iterator moves forward most of the time, with at
most O(log (min(|A|, |B|)) backward resets.
Next time, we’ll make a shocking discovery about this algorithm.
The post Rotation revisited: Another unidirectional algorithm appeared first on The Old New Thing.
Urgent: Investigate Kash Patel's misuse of taxpayer funds [Richard Stallman's Political Notes]
US citizens: call on your congresscritter and senators to investigate Kash Patel's flagrant misuse of taxpayer funds.
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: Restore funding for Social Security Offices [Richard Stallman's Political Notes]
US citizens: call on Congress to restore funding for Social Security offices.
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: Reject magat recommendations to undermine FEMA [Richard Stallman's Political Notes]
US citizens: call on Congress to reject magat recommendations to undermine FEMA.
Global heating is increasing the amount of damage done by disasters, so FEMA needs to be strengthened and better funded. This in addition to strong efforts to reduce greenhouse emissions to make global heating taper off.
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.
Instagram eliminated end-to-end encryption [Richard Stallman's Political Notes]
Instagram has eliminated end-to-end encryption, leaving many user communities in danger of persecution.
I suspect that the zucker did this because the persecutor asked him to.
Young US citizens who have had a parent taken away [Richard Stallman's Political Notes]
Estimating that around 145,000 young US citizens have had a parent taken away and jailed by the deportation thugs.
UK student loan system less destructive than US system [Richard Stallman's Political Notes]
A detailed explanation of student loan repayment in the UK shows clearly why it is a far less destructive system than that of the US.
In the UK, even well-paid graduates can't advance very far in paying down their student debt. But does that matter? After 30 years, the debt that remains will be cancelled anyway. To explicitly "rebrand" the UK student debt as a tax on graduates sounds manipulative, but it is valid to argue that the UK's student loan system already is in fact a tax on graduates.
By contrast, in the US system you must pay even if unemployed, and the debt will be canceled only by your death (or perhaps if you are permanently disabled).
Claims of peace deals, then threats of attack [Richard Stallman's Political Notes]
The bullshitter alternates between claiming that he is about to launch a massive attack on Iran and claiming that a peace deal is about to be agreed. I don't believe there is any truth in either kind of claim — they are mainly psychological manipulation. I suppose they are aimed at the non-Iranian public, because of Iran's general internet blockage.
One goal of the psychological manipulation is to make the bullshitter impossible to predict. What he says about that is bogus. We need to learn not to start trusting him in any way.
Victory for domestic workers in Indonesia [Richard Stallman's Political Notes]
The long, slow fight to give rights to domestic workers has had a victory in Indonesia.
Devastating cuts to climate modeling [Richard Stallman's Political Notes]
Australia is planning devastating cuts to climate modeling.
Australia's part of global climate modeling is essential because it is the only major contributor that focuses on the southern hemisphere. Since the climate disaster is accelerating, and threatens to kill millions or even billions, the rational thing to do is increase funding for it.
It would be useful to investigate how this decision was made — and how pressure or corruption from planet roasters influenced it.
Rare strain of Ebola virus [Richard Stallman's Political Notes]
A rare strain of Ebola virus, for which the usual tests and vaccine do not work, requires global action now.
US government cuts in medical research and aid could kill millions of people.
Orangutans latest victims of human colonization [Richard Stallman's Political Notes]
The latest victims of human colonization include orangutans whose native forest has been systematically colonized with support of the Indonesian government.
For decades, the government has had a policy of settling large numbers of Javanese in islands with less human population density. This has aroused accusations of colonization from the peoples who live in those islands.
Secretive campaign organizations [Richard Stallman's Political Notes]
A tangled web of secretive campaign organizations is spending billionaires' money to defeat progressive candidates in Democratic primaries.
They have to do it secretively because they are on the edge of campaign finance laws against coordinating PAC-funded activity with candidates' campaigns.
Whether or not it is against the law, it is clearly against democracy. If elections can easily be bought by the rich, they can't be decided by issues.
Decreased productivity and deskilling with LLMs [Richard Stallman's Political Notes]
How the expected increased "productivity" of LLMs for specific tasks can result in decreased productivity, and deskilling, for an organization overall.
Independence for Kurds of southeastern Turkey [Richard Stallman's Political Notes]
The PKK, which fought for independence for the Kurds of southeastern Turkey, has disbanded and peace talks are going on. This provides an opportunity for environmental restoration, if people can grasp it.
For peace to last, Turkey needs to restore democracy enough to permit victory for opponents of Erdoğan, rather than starting a civil war as an excuse to do the election over.
Corrupter's slush fund [Richard Stallman's Political Notes]
The corrupter dismissed his lawsuit against the US government, and ordered his agent in charge of the Justice Department to make an agreement between him and the US government to set up a slush fund (with government money) which will secretly give some of that money to whoever the corrupter orders. Up to 1.8 billion dollars, total. For instance, it could be used to reward some of the people who at his suggestion attacked the US Capitol on Jan 6, 2021. It could be used for bribes.
In legal terms, that agreement is not a settlement of that lawsuit, but he wants us to think of it as a settlement of that lawsuit, hoping that will give it an odor of legitimacy.
Recruiting ads for the deportation thugs [Richard Stallman's Political Notes]
Recruiting ads for the deportation thugs ooze with messages of racist hatred, and an anti-terrorist agency in Colorado warned that they could incite right-wing terrorism.
UK talking about prosecuting those responsible for Grenfell fire [Richard Stallman's Political Notes]
After nine years, the UK government is finally thinking about prosecuting the many individuals, organizations and companies involved in causing the fatal Grenfell fire.
Spoof site to report suspected immigrants [Richard Stallman's Political Notes]
The Department of Howlingly Serious issued an alert to warn cops all around the US to beware of a spoof site that invited the public to report suspected immigrants — and posts the funny reports.
I'd like to watch a few, but according to the article, they are posted on sites which require nonfree software to access.
GNUtrition 0.33.0rc5 [Planet GNU]
A test release of GNUtrition, 0.33.0rc5, is now available.
GNUtrition is free nutrition analysis software. The USDA Food and
Nutrient Database for Dietary Studies (FNDDS) is used as the source
of food nutrient information.
This release fixes bugs from 0.33.0rc1-rc4, removes inaccurate
algorithm constants, removes additional unnecessary dependencies,
improves reliability/usability on non-GNU systems, among other
general improvements and bug fixes. Version 0.33.0 (the first
ftp.gnu.org release of GNUtrition since 2012) is expected to be
released by June 5th. Any and all testing for the upcoming release
will be greatly appreciated. Please use the bug-gnutrition and
help-gnutrition mailing lists for your bug reports and/or other
questions.
More information about GNUtrition may be found on its home page at
http://www.gnu.or
... tware/gnutrition/. This test release can be obtained from
the alpha.gnu.org server at one of the following:
ftp://alpha.gnu.o ...
g/gnu/gnutrition/
http://alpha.gnu. ...
g/gnu/gnutrition/
https://alpha.gnu ...
g/gnu/gnutrition/
Please report any problems you experience to the GNUtrition bug
reports mailing list: bug-gnutrition@gnu.org
(https://lists.gnu
... fo/bug-gnutrition).
FSD meeting and weekly recap 2026-05-29 [Planet GNU]
Check out the important work our volunteers accomplished this week and at today's Free Software Directory (FSD) IRC meeting.
Preparing for KDE Plasma’s last X11-supported release [OSnews]
With KDE Plasma 6.7 almost ready for release, developers have moved on to working on 6.8, and with that release comes probably one of the biggest deprecations in KDE’s history: as of today, the X11 session is gone from KDE. Of course, this change won’t make it to people’s computers until 6.8 actually releases, but as far the code goes, the X11 session is gone. Once 6.8 is actually released, you will only be able to log into a Wayland KDE session.
This won’t affect KDE applications running in other X11 desktop environments, and of course, X11 applications will keep working in KDE as well thanks to XWayland. It’s also important to note that this won’t affect anyone sticking to older versions of KDE Plasma; it’s not like X11 session support will be yanked retroactively. From here on out, a lot of X11 code will be removed from KDE, and developers will be able to focus on just one code path, instead of accommodating the lowest common denominator in X11.
Our internal metrics within KDE show that over 95% of users of Plasma 6.6 are on Wayland, with a gradual increase every release. The metrics also show that basically no one is testing or developing Plasma on X11 anymore. The platform was already, for all intents and purposes, abandoned by KDE contributors.
↫ David Edmundson
The transition from legacy X11 to Wayland has been a long, painful journey, but I’m glad we’re finally reaching the destination. If you’re still having issues with KDE on Wayland, be sure you’re using an up-to-date distribution – not an LTS one – and see how that goes for you.
FreeIPMI 1.6.18 Released [Planet GNU]
o Support new "altbridging" workaround in ipmi-sensors.
o Fix exploitable buffer overflows in the following ipmi-oem
commands:
- ipmi-oem dell get-active-directory-config
- ipmi-oem fujitsu get-sel-entry-long-text
https://ftp.gnu.o
... pmi-1.6.18.tar.gz
[$] Caching for extended attributes [LWN.net]
Extended attributes (xattrs) provide a way to attach key/value metadata to inodes—files, directories, and the like—in a filesystem. As with many Linux filesystems, the FUSE filesystem supports xattrs. In a filesystem-track session at the 2026 Linux Storage, Filesystem, Memory Management, and BPF Summit, FUSE maintainer Miklos Szeredi led a discussion about caching xattrs in kernel memory; he would like to create some common infrastructure that could be used by FUSE and shared with other filesystems.
We're Fighting Mass Surveillance Tech—and Winning [Deeplinks]
EFF is on the front lines of the fight against tech-enabled tyranny, but we aren't alone. Our team depends on your help to fight back against the surveillance state.
People around the world are pushing back against the mass surveillance that undermines privacy and free expression for everyone. You can help during EFF's spring membership drive.
One of the people who joined the fight for digital rights is EFF client Will Freeman. Will created the website DeFlock.me to reveal the dangers of automated license plate readers (ALPRs)—cameras that collect location data on every vehicle they see and upload that to a massive nationwide police database. Deflock.me turns the tables by enlisting ordinary people to track the locations of tens of thousands of ALPR cameras.
But when the police spy-tech company Flock Safety went after Will's website with legal threats citing trademark law, he saw it for what it was: an attempt to silence critics and dim the light on mass surveillance.
The company will try everything it can to downplay the criticism, but EFF will be right there demanding accountability.
"I was totally unprepared to receive a cease & desist letter. I can see how most people would be bullied into submission by a threat like that. That's when I remembered Dave Maass from the EFF introduced himself via email several weeks before, so I reached out for help," Freeman says.
And that's when EFF stepped in. Recognizing DeFlock.me as a quintessential expression of grassroots advocacy and a form of criticism protected by the U.S. First Amendment, EFF's lawyers helped Will fight back. And the Big Surveillance Tech flinched.
But these battles against Flock's Spying tools rage on. In cities around the country, privacy advocates are pressuring officials to block or end contracts for ALPRs—and winning. The company will try everything it can to downplay the criticism, but EFF will be right there demanding accountability.
"I'm really grateful the EFF was able to step in and help. Without them, free speech would be only for those wealthy enough to defend themselves against billion dollar companies. We've grown a lot since then and are expanding our efforts to expose and push back against mass surveillance on our streets," Freeman says.
stop mass surveillance tech today when you join EFF
____________________
EFF is a member-supported U.S. 501(c)(3) organization. We've received top ratings from the nonprofit watchdog Charity Navigator since 2013! Your donation is tax-deductible as allowed by law.
The Thirty Percent Confession [I, Cringely]
Last time I told you the AI industry is paying a tax it doesn’t have to pay — that a great deal of what we grandly call “AI” is really just looking things up, and we’ve chosen to do that looking-up on the most expensive silicon ever manufactured. A number of you wrote to say I was overstating it. Surely, you said, the people setting hundreds of billions of dollars on fire know something I don’t.
So this week I won’t argue with you. I’ll let one of the largest companies in enterprise software argue with you instead — because it already has, in a research paper it published itself and seems to have hoped you wouldn’t read too closely.
The company is Salesforce. The same Salesforce selling you “agents,” an “agentic enterprise,” a tireless digital workforce to set beside your human one. While one part of the building handled the marketing, another part — Salesforce AI Research, the people whose job is to measure things rather than sell them — built a test to find out how well today’s best AI can do something gloriously unglamorous: find the right piece of information when it’s scattered across the mess of a normal company. Slack threads. GitHub. Meeting transcripts. Documents nobody filed correctly. The stuff every real business actually runs on.
They named it HERB — the Heterogeneous Enterprise RAG Benchmark — and they didn’t build it on the cheap. It’s a synthetic but painstakingly realistic company: 530 employees across 30 products, generating 39,190 documents, messages, transcripts, and pull requests, strewn about the way they really would be. The paper is on arXiv. The data is on Hugging Face. Anyone can check my arithmetic, which is exactly why I’m happy to build a column on it.
Now, the number.
When Salesforce turned the best agentic retrieval systems money can buy loose on HERB — top-tier models, the good stuff, with planning and tool use — they scored 32.96 out of 100. (Thirty-three, if we’re being precise; I rounded down for the headline.)
A third. On a test of finding information that is definitely, provably somewhere in the building. Two times out of three, the most advanced AI on the market went hunting for an answer that existed and came back with the wrong one — or with confident nonsense.
Sit with that, because two floors up the marketing department is selling you an autonomous digital employee, and the research department just published evidence that the digital employee finds the right file about a third of the time.
But the score isn’t the part that should keep you up at night. Two findings underneath it are.
The first is the diagnosis Salesforce’s own researchers wrote down: the bottleneck isn’t the thinking, it’s the finding. The models could reason fine — they simply couldn’t retrieve the right material to reason over. The proof is brutal in its simplicity. When the researchers stopped making the system hunt and instead handed the model the company’s documents outright, the best one leapt from that miserable third to 76.55. Same model. Same questions. The only thing that changed was whether it had to find the evidence or was handed it.
Read that twice, because it’s the most important sentence published in enterprise AI this year and almost nobody noticed: the model was never the problem. The expensive part — the giant, GPU-devouring brain everyone is mortgaging the next decade to buy more of — is sitting there perfectly capable, tapping its foot, waiting for the cheap, dull, unglamorous retrieval layer to bring it the right paragraph. And the retrieval layer can’t.
This is the whole ballgame, and it lands exactly where I left you last time. I claimed two-thirds of enterprise AI is really retrieval wearing intelligence as a costume. Here is Salesforce — not a friendly witness, but a company whose entire pitch depends on the opposite being true — confirming that retrieval is precisely where the enterprise falls apart, and that a bigger, smarter, hungrier model does not rescue you, because the model was already good enough.
The second finding is the one I find most damning, and it’s hiding in the dataset’s own structure. Of HERB’s 1,514 questions, only 815 have answers. The other 699 — nearly half — are unanswerable by design. Salesforce deliberately wrote hundreds of perfectly reasonable-sounding questions for which no supporting evidence exists anywhere in the simulated company, and then watched to see whether the AI would admit it didn’t know.
Think about what that means. HERB isn’t only a test of whether a system can find the answer. Nearly half of it is a test of whether the system knows when there isn’t one — whether, handed a plausible question and no facts to support it, it has the spine to say “I can’t find that” instead of manufacturing something that sounds right. That is the single most important behavior an enterprise needs from AI, and the one almost no system on the market reliably has. We even have a pet word for what they do instead. We call it hallucination, as though it were a charming quirk rather than the precise thing that makes the technology unusable for any job that matters.
So put the two findings together. The industry’s answer to the first is “buy a bigger brain,” which the data says won’t help. And there is no brain you can buy that fixes the second, because confidently inventing answers isn’t a shortage of intelligence — it’s a property of an architecture that was never built to know the edge of its own knowledge.
Which brings me to the part I’m not going to fully tell you here, though I have the answer.
Suppose someone refused the assumptions. Suppose they decided retrieval wasn’t plumbing to be stapled onto a generator but the main event — the actual machine, built from scratch, running on the cheap, cool, abundant silicon I told you about last time, with the expensive brain held in reserve for the rare moment something genuinely must be generated rather than found. And suppose that same system was designed, from the ground up, to know the boundary of what it can support with evidence — to say “I don’t know” on the 699 as readily as it answers the 815.
And suppose that someone took HERB — Salesforce’s own brutal, public, no-mercy test — and ran it.
I’ll tell you only this. We didn’t score a third. We didn’t score forty. We more than doubled the ceiling that Salesforce’s best systems could reach, on the identical public benchmark — and did it while honoring the thing the benchmark’s harder half actually demands: knowing when to keep their mouth shut. Our number is real, it was measured against the same data anyone can download, and it does what three years of ever-bigger GPUs have conspicuously failed to do.
And no — before you ask — it isn’t 100, and I’d be wary of anyone who told you it was. Remember that nearly half of HERB has no answer at all. A system that posts a perfect score on a test like that hasn’t reached wisdom; it’s learned to bluff its way past the trick questions. Perfection was never the target — recall that the best model on earth, handed every document outright, still only clawed its way into the mid-70s. The target is different: a system that’s right when the evidence is there and says so when it isn’t. And a system like that pays for its honesty in points, because a scorecard can’t tell the difference between “I don’t know” and “I got it wrong.” The distance between that number and 100 isn’t the machine failing. Much of it is the machine refusing to lie — which, when you sit with it, is the whole point of the exercise.
It changes the question. The industry has been asking “which model?” for so long it forgot there was a prior question underneath: which architecture? HERB is Salesforce’s accidental admission that the model question is largely settled and largely beside the point — that the next decade gets decided at the retrieval layer and the honesty layer, not inside the GPU.
You should know I’m not a bystander. I co-founded a small company built on exactly the heresy in this column — that retrieval is the main event, that it belongs on cheap silicon, and that a system ought to know when to say it doesn’t know. So weigh my enthusiasm accordingly.
But notice what my conflict of interest cannot touch. The 32.96 is Salesforce’s number, not mine. The diagnosis that retrieval is the bottleneck was written by Salesforce’s researchers, not me. The choice to make nearly half the benchmark unanswerable was Salesforce’s, not mine. The most honest thing anyone has said about enterprise AI this year was a confession buried in a Salesforce research paper: the emperor’s brain is magnificent, the emperor cannot find his own files, and about half the time he doesn’t even know what he doesn’t know.
The whole industry heard that and went out to buy a bigger brain. I think that’s the most expensive mistake in the history of computing, and I’m going to show you why.
The post The Thirty Percent Confession first appeared on I, Cringely.
Ben Hutchings: FOSS activity in 2025 [Planet Debian]

This was a particularly busy month for me in terms of Debian contributions.
It started with a week in Hamburg for the MiniDebConf. I talked to many colleagues face-to-face and worked on various bugs and maintenance tasks. I’m pleased to have finally found the time to reproduce and fix the boot-time crashes in the parallel port subsystem that have been reported many times recently.
A series of easily exploited kernel LPE (local privilege execution) issues were published this month, mostly with very little coordination with distributions. Salvatore and I had to upload fixes for these at roughly weekly intervals. All of these fixes needed to be applied to 4 different upstream branches (currently 5.10, 6.1, 6.12, and 7.0) and 7 Debian branches (including backports).
“The newest Instagram “exploit” is the goofiest I’ve seen” [OSnews]
Yesterday, a slew of Instagram accounts, including some high profile ones like the Obama White House account, seemingly got hacked.
Look, I’m no spring chicken. I’ve spent almost a decade and a half identifying vulnerabilities and exploits at unicorn scale, but this is hands down the most unserious, “almost too stupid to be true” of them all.
↫ Sid at 0xsid.com
…it’s “AI” isn’t it?
All the attacker needs to kick this off is your account username. Then, they hop on a VPN or proxy close to your city so Instagram’s security algorithms don’t suspect a thing. (You can quite easily get this from your public profile or “About” section or a hundred other ways.) Once it looks like the request is coming from the correct region, they tell the Meta support AI that the account is hacked and ask it to send the verification codes to an arbitrary email address they control.
↫ Sid at 0xsid.com
It’s “AI”.
Yes, all that you need to do to gain control over big, massively popular Instagram accounts is ask Facebook’s “AI” to send the verification codes to whatever email address you desire. That’s it. There’s no other steps, no other checks, no other verification. And the worst part is that this isn’t even a hack; this is “AI” working entirely as intended.
And these tools are now coding the Linux kernel, LLVM, systemd, PulseAudio, rsync, your browser, and so much more. What could possibly go wrong?
Dries: "For an Open Source company, the test is not only what they build for themselves. It is what they help build for everyone."
[$] Trying to make sense of package-manager metadata [LWN.net]
Package managers for operating systems and programming languages have been around for decades. Each package manager, and its accompanying packaging format, has been shaped by the needs of its respective ecosystem, but there is a growing need to make use of package metadata for more than software management: for example, in vulnerability scans, software bills of materials (SBOMs), and more. On May 19, Damián Vicino spoke at the Open Source Summit North America 2026 about his experiences in the past year trying to make sense of the varied metadata provided by more than 20 package managers.
Vim Classic 8.3 released [LWN.net]
Version 8.3 of Vim Classic has been released. This is the first release of the Vim fork since the project was announced in March.
This release is based on Vim 8.2.0148, with a number of bug fixes and patches conservatively backported from future versions of Vim upstream. We elected to clean up this version of Vim, prepare it for a release, and imagine an alternate history where Vim 8.3 was released without Vim9 script. The result is Vim Classic 8.3. We chose to take this approach in order to reduce the long-term maintenance burden of Vim Classic, acknowledging that our fork lacks the resources and institutional knowledge available to Vim upstream. However, a consequence is that there are some Vim plugins which are not compatible with Vim Classic.
We have made a special effort to assess patches from Vim upstream which mitigate some of the many CVEs affecting Vim which were discovered and fixed between versions 8.2 and modern-day Vim, but we can't be sure we've got all of the security patches which are applicable to Vim Classic (and practically exploitable). This version of Vim Classic is therefore recommended for early adopters who are comfortable adopting a security posture which accounts for the fact that we may have overlooked some bugs.
LWN covered Vim Classic and another Vim fork, EVi, in April.
Security updates for Tuesday [LWN.net]
Security updates have been issued by AlmaLinux (php:8.2 and php:8.3), Debian (gst-plugins-good1.0, symfony, and yelp), Fedora (dovecot, freeipa, hplip, libpng, perl-Catalyst-Plugin-Authentication, postfix, samba, unbound, and vim), Mageia (assimp, libcaca, sdl2_sound, and tar), Slackware (kernel), SUSE (alloy, apache-commons-lang3, apache-commons-text,, apache2, bubblewrap, busybox, chromium, cups, docker-stable, ffmpeg-8, google-osconfig-agent, gsasl, ignition, java-26-openjdk, kernel, libsolv-demo, libsoup, libzypp, localsearch, openjpeg2, postgresql-jdbc, putty, python-mistune, python-Pillow, python-python-multipart, python-Twisted, python3-Twisted, re, roundcubemail, vim, wireshark, and xz), and Ubuntu (evolution-data-server, exim4, gsasl, haveged, lcms2, libreoffice, linux-aws, linux-lts-xenial, linux-lowlatency, linux-nvidia-tegra, nginx, nncp, qtdeclarative-opensource-src, sslh, sssd, and xz-utils).
The Big Idea: Isabel J. Kim [Whatever]

Two paths diverge in a wood… and what happens when, in fact, you can travel both? In her debut novel Sublimation, author Isabel J. Kim looks at what happens when the road less taken is never not taken, and how a question in school set her on a new path.
ISABEL J. KIM:
I am going to tell you a story that I have never publicly told before. It is about the ignoble origins of Sublimation. And for context, Sublimation is a speculative fiction novel set in a universe where when you cross a border with the intention to leave, you split into two people. Literally.
Sublimation is about other things, too—the artificial nature of borders, the way in which human beings impose their technological will on natural processes, control and, freedom and the unhappy marriage of big tech and government and how it is hard to talk to people when you don’t know what you want—but the crux of it is: Sublimation is a story about being confronted by a life you didn’t lead.
When I was seventeen, I was taking a world history class and we were talking about immigration, because that’s what you do in a world history class in the United States of America. And the teacher asked us the question: why do people immigrate to America?
One of the other students—who was, in my teenage self’s words, “a white preppy blonde chick” and in my current self’s words, “literally just some guy”—raised her hand with perfect confidence and said “For a better life!” She spoke with such clear, myopic certainty that I was suddenly furious, because there are a lot of reasons that people go places and stay places and “a better life” is so reductive as to be meaningless, and also, some of us move because our dads get jobs, okay? You’ve lived here your entire life, and I’ve lived in four different cities in two different countries, so why are you raising your hand with such confidence?
The punchline, of course, is that I was born in New Jersey, and also had never technically immigrated anywhere. Also, it’s not like I raised my hand to talk about my experiences of being an expat in my country of ethnic origin.
Back then, I never liked talking about how I felt about being from places, because my international childhood was hard to explain. It was an experience that was fairly benign, mostly enriching, and only strange in retrospect. The only lingering weirdness was that I felt like a foreigner everywhere I went. I was an American kid in Korea, I was a Korean kid in America, and explaining how that felt would require me to make you live an entire life walking in my shoes. When you’re seventeen, that’s hard.
A few years (read: seven years) later I was back in Korea for a vacation, and I was surprised at how quickly the country had changed while I had been gone. I started thinking about how all the differences would have seemed totally organic had I lived there my entire life. This got me ruminating about the version of me that never moved back to the states, which led me to the idea of instancing—leaving a double behind when you cross a border. One person who goes, another who stays.
And I thought that was a really interesting metaphor made flesh, an idea through which I could viscerally shove the experience of being a foreigner into the reader’s brain. And I was thinking about my classmate from high school, and how I wanted to make people like her understand how it felt, to be perpetually from somewhere else.
So, I started writing a story (“Homecoming is Just Another Word for the Sublimation of the Self”) about how it felt to be from somewhere else, and how it felt to be a foreigner, and how you might feel if you were the one who got to leave, and conversely, how it might feel to be the one who had to stay.
Then, a strange thing happened. The more I expanded the aforementioned short story, the more I realized that the feeling of alienation was universal—everyone feels like a stranger sometimes, everyone wonders about what could have happened had they made different choices, everyone has a road not traveled.
The more I wrote, the more I saw the story I was writing as not really about my own individual experience, but as a way for the reader to sift through their own experiences through the lens of the story I was giving them. The narrative became a sort of window for the reader, or a magnifying glass.
And I felt that even more intensely when I talked with people about Sublimation across the various drafts. The more conversations I had, the stronger my feeling was that at the end of the day, we’re more similar than not. If you look far back enough, we’re all from somewhere else. And we’re all traveling into the future together.
And the future, like the past, is a foreign country, from which we can never return.
So that’s what Sublimation is about. And maybe it’s a good thing that I didn’t raise my hand in world history class; if I had, I might not have written this novel.
Sublimation: Amazon|Barnes and Noble|Bookshop.org
CodeSOD: Blocked the Date [The Daily WTF]
Volodya sends us some bad date handling code in PHP. Which, I know, you're just reaching for the close tab and yawning when you hear that. You've seen it before. But bear with me, this one still has some fun bits to it.
$monthes = array(
1 => 'Января', 2 => 'Февраля', 3 => 'Марта', 4 => 'Апреля',
5 => 'Мая', 6 => 'Июня', 7 => 'Июля', 8 => 'Августа',
9 => 'Сентября', 10 => 'Октября', 11 => 'Ноября', 12 => 'Декабря'
);
This creates a list of months.
if ( $team->have_posts() ) :
// Start the Loop.
while ( $team->have_posts() ) : $team->the_post();
Today, I have learned something about PHP. PHP has an
alternate syntax for blocks. Instead of if {
statements }, you can do: if : statements
endif. Just one more quirk of PHP to make the language more
confusing.
This block checks have_posts in an if,
and then checks it again in a while, meaning we don't
need the if at all, but so it goes. We haven't gotten
to the date handling yet, so let's look at that.
$date = get_the_date();
$d1 = explode(".", $date);
if ($d1[1][0]=='0')
$m = $d1[1][1];
else
$m = $d1[1][0];
?><div class="date"><?php echo $d1[0]." ".$monthes[$m]." ".$d1[2]; ?></div>
We get the date as a string, and then split it out into date
parts. This is, of course, highly locale specific, but clearly they
know what locale they're in. Then they look at the array of date
parts. The second element holds their "month" string, as two
digits, so they look at the digits. If the month string starts with
a 0, they grab the second character and put it in
$m. Otherwise, they grab the first character and put
it in $m. Then they use $m to look up the
$monthes.
Unless there's some substring weirdness going on that I don't
know about, this code… doesn't work? Right? Since they're
grabbing only a single character out of $d1[1] every
time, for months later in the year, $m is only ever
going to hold 1, and thus we only output
Января, meaning we
get four months of January, which just seems cruel, honestly, at
least in the Northern Hemisphere.
As with all bad date handling code, this could easily be fixed
by just using the built in functions, even in PHP. What
I'm going to take away from this though is that PHP's syntax lets
you write in Visual Basic or Ruby if you're determined enough. And
you can mix and match, so enjoy a codebase that has
:/endif and {} scattered throughout.
On Twitter: "I envision a network of twitter-like systems built out of components of the web and nothing more. Every part replaceable."
The only twitter-like system that does text right is Elon
Musk's X. I find that somewhat ironic. It's also the only
twitter-like system where there's any kind of an actual community.
They also have an API that works, has been around for more than a
couple of years, and doesn't have a W3C working group messing with
it. There's a lot of hype flying around, and we don't have any real
journalists covering it so there is no real source of truth. I
think the entrepreneurial twitter-likes should stop thinking in
terms of owning the web and start adding back the text features the
original Twitter thought the web didn't need, over 20 years
ago.
Radar Trends to Watch: June 2026 [Radar]
Coauthored with Claude
Agents are making the transition from performing tasks to running operations. The Cloudflare and Stripe partnership ships an agent that opens accounts, registers domains, and deploys an application on its own (details), while Stripe/Tempo and iWallet have each published machine-to-machine payment protocols to make that kind of work a standard. Office documents, browser sessions, and, in one announcement, the phone interface itself are next on the list. View the expanded role of agents as an opportunity for humans to accomplish more.
The model menagerie keeps expanding in size and shape. Open weight contenders run at frontier capability on modest hardware, while specialist models for voice, conversation timing, and privacy filtering take over what used to be features inside one general chat model. Treat your prompts and skills as portable; the model behind them will change.
We are beginning to see anecdotal evidence that the brief era of tokenmaxxing is coming to an end. Agents may increase productivity, but they can also use tokens at an astonishing rate. So can the latest models, like Anthropic’s Claude 4.8 with new features like dynamic workflows. Employers are realizing that the only way to measure productivity is to look at the quality of an employee’s work rather than relying on an artificial (and easily gameable) metric like token use. Teams that use AI effectively will be disciplined about token use; they’ll choose lower cost (or local) models where possible, reaching for expensive models like Claude 4.8 Opus only when necessary.
The infrastructure questions of the moment are whether agents can transact and deploy without humans, and whether the platforms that host open source can stay reliable enough to keep that work going. Watch for GitHub alternatives to become competitive. And watch AI Together, a cloud company that hosts hundreds of open source models.
The patch window is shrinking to zero, and the attacker’s toolkit and the defender’s toolkit now include the same AI models. Any vulnerability disclosed today is being exploited tonight. The good news is that defenders running these tools at scale can close gaps faster than ever; the bad news is that the race never ends.
The Intersection of Encryption and AI [Schneier on Security]
As part of their 20th Anniversary celebration, Dark Reading asked five cybersecurity industry leaders who wrote blogs or columns for them over the years to select their favorite piece and share their reflections on the topic today. This is my section.
Renowned technologist and author Bruce Schneier contributed a column on June 20, 2010, warning about cryptography’s inability to secure modern networks, a point he says he has been trying to argue since 2000.
“For a while now, I’ve pointed out that cryptography is singularly ill-suited to solve the major network security problems of today: denial-of-service attacks, website defacement, theft of credit card numbers, identity theft, viruses and worms, DNS attacks, network penetration, and so on.
“Recently, I talked to a former NSA employee at a conference. He told me that back in the 1990s, he had a copy of my book Applied Cryptography by his desk, as did many other cryptographers working at Ft. Meade. People were allowed to refer to it, but they were not allowed to cite it.
“The 1990s were an important decade for cryptography. This was before the internet went mass market, when cryptography was just emerging from a niche academic discipline to a mainstream engineering one. There wasn’t much that programmers could read. The NSA used my book for the same reason it became a bestseller: because it collected all the academic cryptography of the time in one place and made it understandable to people who weren’t mathematicians. They feared it for exactly the same reason.
“I’ve been thinking about that conversation as I revisit a 2010 essay I wrote for Dark Reading, ‘The Failure of Cryptography to Secure Modern Networks.’ Cryptography has inherent mathematical properties that greatly favor the defender. Adding a single bit to the length of a key adds only a slight amount of work for the defender but doubles the amount of work the attacker has to do. Doubling the key length doubles the amount of work the defender has to do (if that—I’m being approximate here) but increases the attacker’s workload exponentially. For many years, we have exploited that mathematical imbalance.
“Computer security is much more balanced. There’ll be a new attack, and a new defense, and a new attack, and a new defense. It’s an arms race between attacker and defender. And it’s a very fast arms race. New vulnerabilities are discovered all the time. The balance can tip from defender to attacker overnight, and back again the night after. Computer security defenses are inherently very fragile.
“That isn’t a new idea. I said much the same thing in the preface to my 2000 book, Secrets and Lies:
“‘Cryptography is a branch of mathematics. And like all mathematics, it involves numbers, equations, and logic. Security, real security that you or I might find useful in our lives, involves people: things people know, relationships between people, people and how they relate to machines. Digital security involves computers: complex, unstable, buggy computers.’
“I especially like how I phrased it in 2016: ‘Cryptography is harder than it looks, primarily because it looks like math. Both algorithms and protocols can be precisely defined and analyzed. This isn’t easy, and there’s a lot of insecure crypto out there, but we cryptographers have gotten pretty good at getting this part right. However, math has no agency; it can’t actually secure anything. For cryptography to work, it needs to be written in software, embedded in a larger software system, managed by an operating system, run on hardware, connected to a network, and configured and operated by users. Each of these steps brings with it difficulties and vulnerabilities.’
“It’s a lesson we have all learned over the decades. Cryptography is still necessary for cybersecurity—although I wouldn’t have used that word back then—but is not sufficient. There are particular attack and forms of mass surveillance that cryptography prevents. But as computers have infused throughout our lives, and networks have connected all those computers, those aspects of cybersecurity have become increasingly important, and vulnerable.
“Today, the cybersecurity world is changing yet again, this time due to the capabilities of artificial intelligence. AI isn’t advancing cryptography, but it’s changing cybersecurity. AI has demonstrated a superhuman ability to find vulnerabilities in software and to write exploits. A similar ability to write patches is probably coming. This has profound implications for both attackers and defenders, and it is unclear who will win the particular arms race in a world of what I call instant software.”
Microsoft Threatening Security Researcher [Schneier on Security]
An anonymous security researcher called “Nightmare Eclipse” has been publishing a series of significant security exploits against Microsoft Windows—including one that breaks BitLocker. Microsoft has threatened legal action against the researcher. Lots of recriminations are being traded back and forth.
Pluralistic: The tedious power of storytelling (02 Jun 2026) must-we-pretend [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

Yesterday, I attended a Brian Eno talk about the nature of creativity and art based on What Art Does, the short book he published with Bette Adriaanse last year:
https://www.faber.co.uk/product/9780571395514-what-art-does-an-unfinished-theory/
I haven't read the book (yet – I just ordered a copy), but the talk really got me fizzing. The subject matter (not just what art does, but also what art is) is one I've given a lot of thought to, and Eno's characteristic mix of gnomic koans and deceptively plainspoken assertions brought me along to some realizations of my own.
For Eno, art is "everything you don't have to do." You have to wear clothes to protect yourself from the elements, but you don't need to adorn those clothes. You need to speak to make yourself understood by the people around you, but you don't have to sing or write poetry or make up stories.
This is a really critical point, and I think it can be further refined by this: "Art is intended to make other people feel something." This distinguishes "art" from "beauty." A sunset can be beautiful, but no one intends anything by it. An artist who takes a photo or paints a picture of a sunset does so in the hopes that it will make you feel something, but the sun and the atmosphere and the Earth's curvature and rotation don't hope anything, because they are inanimate.
This distinction has lately become far more significant, thanks to the rise of images and words that have the seeming of intent, but who don't have an intender. When you paint a painting, every brushstroke conveys an intent, even if you can't point at an individual brushstroke and articulate its purpose. The same is true of prose: every word and punctuation mark is there for a reason, and "being good at writing" (like "being good at painting") is how we describe someone who has practiced so much that these reasons can be infused into each micro-decision on a near-totally subconscious level.
Contrast this with AI: when you prompt an AI to generate words or pixels, you are conveying some intent about the feeling you want the people who experience the model's output to experience. The problem is that the AI doesn't have any intent of its own – it just has statistical predictions, based on other people's intent, which it has analyzed through its training data.
So when the AI expands the three sentences in your prompt into 100,000 words or 1,000,000 pixels, it isn't adding any of its intention to the finished work, it's diluting the intention you fed to it. Three sentences divided by one million pixels yields an image that has an average intentionality that's so low that it's practically homeopathic.
Until recently, we weren't accustomed to encountering coherent strings of words or polished images that had no intender, so we imputed the existence of that intender to them, and we did what we always do when we encounter a work of art: we tried to mentally materialize a facsimile of the feeling the artist experienced while creating the work.
Because the intention of these works was so dilute, we ended up hallucinating an intent. We made up an imaginary artist who meant something by every choice in the work, and experienced an emotional affect that we ourselves had created out of (nearly) whole cloth.
As a species, we've been through this before. Think back to those sunsets. There was a time when we all thought of sunsets as being explicitly created by another being, who was in communication with us through the natural environment (some people still believe this). Looking at a sunset was an exercise in asking yourself, "If I were God, what would I be trying to say to me with this sunset?" just as looking at one of my photos of a sunset would be an exercise in asking yourself, "If I were Cory, what would I be trying to say to me with this photo of a sunset?"
The rise of materialism and scientific rationalism is sometimes called a "disenchantment" and indeed, there's a sense in which a sunset that we know to have no intender is no longer "enchanted." The experience of a sunset becomes something like, "Those colors and their interplay with the physical world is very beautiful." It might even be, "How could I capture that beauty in a painting or a photo or a description so that I could communicate it to someone else?" But it's not, "I wonder what God wants me to feel when I look at this sunset?"
So for many of us, the experience of AI "art" went from, "Wow, there's a person in the machine that's trying to tell me something," to "Wow, that is an impressive feat of software design, but it doesn't say anything to me." Maybe some of us think, "Huh, I could take some element of this, refine it with my own brushstrokes or words, and make something out of it." That's like thinking about turning a sunset into a painting: the sunset is striking and maybe beautiful, but it doesn't become art until you work at it, in order to make it communicate something:
https://pluralistic.net/2025/03/25/communicative-intent/#diluted
Mark Fisher describes the "seeming of an intent without an intender" as "eerie." It's true: when the door slams in the night and there's no one else in the house, it's eerie. But eeriness is easily dispelled: once you locate the open window that's creating the draft that's blowing the door closed, the eeriness regresses swiftly to the mean:
https://pluralistic.net/2024/05/13/spooky-action-at-a-close-up/#invisible-hand
Banishing eeriness may be straightforward, but preventing eeriness is much harder. We are prone to imputing intent to the things we see in the world. In "Genesis," an essay from EL Doctorow's (no relation) collection The Creationists, Doctorow describes the origins of the Babylonian creation story (which the Hebrews ripped off for Genesis 1:1-29 – Genesis is Babylonian fanfic). The Babylonians made up this story about how God created the heavens and Earth and so forth, and this story was so cool that they couldn't believe that they had just made it up, so they concluded that God must have put it in their minds:
https://www.penguinrandomhouse.com/books/41520/creationists-by-e-l-doctorow/
Back to Eno: central to his talk was the "theory of mind." To have a theory of mind is to be able to impute someone else's intent. It's when you ask yourself, "What does that person mean by the thing they just said or did?" Because art is a process by which an artist tries to get you to feel something, it requires that the artist have a theory about your mind. And because experiencing art is a process of trying to figure out what the artist wanted you to feel when you experienced their work, experiencing art also requires a theory of mind.
From time to time, I teach fiction writing workshops, and one of the lectures I always give is about how stories are a "fuggly hack":
https://locusmag.com/feature/cory-doctorow-stories-are-a-fuggly-hack/
It's very weird that storytellers can trick our brains into experiencing emotions based on empathy for "people" whom we know to be imaginary. Romeo and Juliet are made up, they never lived, they never died, and so, objectively speaking, their deaths are less tragic than the death of the yogurt you ate for breakfast. That yogurt was alive and now it's dead, after all. And yet, we weep for Romeo and Juliet.
Our automatic "theory of mind" processes create empathy for stuff even when we know that stuff is inanimate. But the purpose of narrative isn't getting you to experience empathy with an imaginary person. The purpose of narrative is to get you to experience that empathy so that you will feel something. In other words, the storyteller who describes a character who is swept away by the beauty of a sunset is trying to get you to feel "swept away" not "empathy for someone who is swept away."
There's lots of art that skips the step in which you are asked to first experience empathy for an imaginary person in order to arrive at some feeling. A lot of music, visual art, dance, and poetry seeks to evince that feeling in you directly.
When this works, it's profound. I think about this a lot in terms of built environments, specifically Disney themepark rides. When I started hanging around with Imagineers (the multidisciplinary artists who design and execute these rides), I noticed that they made frequent reference to the role of narrative storytelling in their ride designs, which was weird, because the very best Disney rides do not use narrative to evince a feeling.
Think of two Disney rides: Snow White's Enchanted Wish (1955); and The Little Mermaid: Ariel's Undersea Adventure (2011). In Snow White, riders follow a track through a series of animated vignettes with UV-fluorescing painted backdrops and an orchestral soundtrack. There are almost no words spoken in the soundtrack. The ride's vignettes recreate scenes from the 1937 animated film, but they don't make any attempt to explain the plot of the movie.
A rider who'd never seen Snow White and the Seven Dwarfs could not recount the plot of the movie to you. However, that rider could absolutely convey the emotional affect of every scene in the film. It is a near-perfect transmission of the feelings evinced by the movie, notwithstanding that it bypasses recounting the film's narrative.
By contrast, The Little Mermaid ride is what's sometimes pejoratively called a "book report ride." The scenes are full of dialog, and they explicitly re-create the storyline of the 1989 film. These scenes are well-executed, with lots of clever mechanical effects and skillfully painted and sculpted scenes and robots. A rider who never saw the film could give you a scene-by-scene breakdown of it – but they could not tell you about any of the emotional beats of the film. For all that the ride faithfully recreates the story of the film, it does so at the expense of the purpose of the film, the feeling the film is designed to evince from its audience.
As a novelist, I find it natural that someone trying to build a Little Mermaid ride would start from the premise that it should explicitly retell the story of the film. If you want an audience member to experience a feeling, narrative gives you the opportunity to explicitly describe the feeling you want the audience member to experience. You can situate a character on a lonely beach at sunset and tell the reader how that character feels.
The problem is that while this has an increased likelihood of being high-fidelity way of transmitting a feeling, it also has an increased likelihood of being a low-intensity way of conveying that feeling. When you tell someone about what's going on in another person's mind (including an imaginary person's mind), it doesn't fire up the theory-of-mind machine in the way that asking someone to infer the state of someone else's mind from implicit cues does.
This is why fiction writers are exhorted to "show, not tell." Dramatic, implicit evocations of an emotion are intrinsically more interesting than explicit statements about emotions. That's not to say that exposition can't evince an emotion – it can and does. It's just harder to do this with exposition than it is to do it with dramatization:
In his talk yesterday, Eno discussed abstract art, and the way that it evinces feelings in the viewer directly, without ever telling you what to feel. This is in keeping with much of Eno's own art (he recently told me that when he writes lyrics, he never uses the words "I," "me," "you," or "love").
In this theory I'm developing here, we could say that the more abstract a work is, the harder it is to evince a specific feeling with high fidelity, but the more likely it is that the feelings it does evince will be intensely felt. When your aesthetic sense resonates with a Henry Moore bronze or an Eno ambient track, the thrum is deep and strong.
Key to this theory is that it's about how hard it is for an artist to evince a feeling and how hard it is for the artist to make that feeling intense. Abstract art is more likely to be misunderstood (or not understood) than explicit narratives, but lots of abstract art is very well understood by people for whom it resonates. Explicit narratives are more likely to have a flatter affect than work that attempts to skewer your emotions directly, but plenty of explicit narratives make you feel the most profound emotions you're capable of feeling.

Imagine a 2×2 grid with "intensity" on one axis and "fidelity" on the other. It's easier to evince an intense feeling when you are more abstract, but it's harder to control what that feeling will be. These are works that operate on an implicit theory of mind ("I think I know what you'll feel when you see this"). It's easier to control the feeling you're evincing when you are more concrete, but it's harder to make that feeling an intense one ("I will tell you what someone else is feeling using this work").
None of this is to establish a hierarchy of art. As Eno says, the value of art is in whether it makes you feel something and what it makes you feel – not how that feeling is drawn forth. In What Art Does, Eno describes both art and science as an extension of our natural, in-born tendency to play. The difference is that we judge the success of science based on whether we can validate its conclusions, while we judge the success of art based on whether it excites us:
'Excitement' is to art as 'falsifiability' is to science.
(With thanks to Brian Eno.)

EU Wants To Break Up With US Tech https://www.barrons.com/news/eu-wants-to-break-up-with-us-tech-5a8da16b
The rise of the McModern https://web.archive.org/web/20201013161651/https://archive.curbed.com/2017/6/30/15893836/what-is-mcmansion-hell-modern-suburbs-history
Merchandizing the Void https://dilettantearmy.com/articles/merchandizing-the-void
Hundreds of prolific Wikipedia editors are threatening to go on strike https://www.theverge.com/report/939442/wikipedia-editors-protest-wikimedia-layoffs-strike
#20yrsago IRS insider accuses agency of giving archives to lowest bidder https://web.archive.org/web/20060614142129/http://wftm.diaryland.com/060601_71.html
#20yrsago Telemedicine rigs coming to all Virgin jets https://web.archive.org/web/20060616063357/http://europetravelnews.com/2006_05/844_virgin-atlantic-life-saving-technology/
#15yrsago Con artists caught tricking med-students into helping with high-tech entrance exam cheat https://web.archive.org/web/20110603051231/https://www.cbc.ca/news/canada/british-columbia/story/2011/05/31/bc-high-tech-mcat-scam.html
#10yrsago How a “lost” Marx Brothers musical found its way back to the stage https://web.archive.org/web/20160602114803/https://www.newyorker.com/culture/culture-desk/how-a-lost-marx-brothers-musical-found-its-way-back-onstage
#10yrsago How security and privacy pros can help save the web from legal threats over vulnerability disclosure https://iapp.org/news/a/how-you-can-help-white-hat-security-researchers
#10yrsago US Patent and Trademark Office refuses to issue “Drumpf” trademark https://www.worldipreview.com/trademark/drumpf-trademark-application-refused-by-uspto-10210
#10yrsago How an engineer/public health whistleblower led the citizen scientists who busted Flint’s water crisis https://web.archive.org/web/20160604112755/https://www.wired.com/2016/06/flint-water-marc-edwards/
#10yrsago Why 3D scans aren’t copyrightable https://web.archive.org/web/20160605140300/https://www.shapeways.com/blog/archives/25599-new-whitepaper-on-3d-scanning-and-the-lack-of-copyright.html
#10yrsago Cable One used customers’ credit scores to decide how good their internet would be https://wetmachine.com/tales-of-the-sausage-factory/broadband-privacy-can-prevent-discrimination-the-case-of-cable-one-and-fico-scores/
#10yrsago Class action: publishers paid writers “sale” royalties on ebooks whose fine-print says they’re “licensed” https://www.copylaw.org/2016/05/simon-schuster-hit-with-ebook-royalties.html
#5yrsago The antitrust case against Prime https://pluralistic.net/2021/06/01/you-are-here/#prime-facie
#5yrsago Google cheats on location privacy https://pluralistic.net/2021/06/01/you-are-here/#goog
#5yrsago Canadian telco monopolists run the show https://pluralistic.net/2021/06/01/you-are-here/#crtc

Kansas City: Facing the Future (Woodneath Library Center), Jun
10
https://www.mymcpl.org/events/119655/facing-future-cory-doctorow
LA: The Reverse Centaur's Guide to Life After AI with Brian
Merchant (Skylight Books), Jun 19
https://www.skylightbooks.com/event/skylight-cory-doctorow-presents-reverse-centaurs-guide-life-after-ai-w-brian-merchant
Menlo Park: The Reverse Centaur's Guide to Life After AI with
Angie Coiro (Kepler's), Jun 21
https://www.keplers.org/upcoming-events-internal/cory-doctorow-2026
Toronto: TBA, Jun 23
NYC: The Reverse Centaur's Guide to Life After AI with Jonathan
Coulton (The Strand), Jun 24
https://www.strandbooks.com/cory-doctorow-the-reverse-centaur-s-guide-to-life-after-ai.html
Philadelphia: The Reverse Centaur's Guide to Life After AI with
David Williams (Fitler Club/Philadelphia Citizen), Jun 25
https://www.eventbrite.com/e/cory-doctorow-book-event-tickets-1990110326559
Chicago: The Reverse Centaur's Guide to Life After AI with Rick
Perlstein (Exile in Bookville), Jun 26
https://exileinbookville.com/events/50628
Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
EFFecting Change: How to Disenshittify the Internet (EFF, with
Wendy Liu)
https://archive.org/details/effecting-change-enshittification
The “Enshittification” of Everything (Bioneers)
https://bioneers.org/cory-doctorow-enshittification-of-everything-zstf2605/
Enshittification (99% Invisible)
https://99percentinvisible.org/episode/666-enshittification/
Artificial Intelligence: The Ultimate Disruptor, with Astra
Taylor and Yoshua Bengio (CBC Ideas)
https://www.cbc.ca/listen/live-radio/1-23-ideas/clip/16210039-artificial-intelligence-the-ultimate-disruptor
"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
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026
"The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"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. Third draft completed. Submitted to editor.
"The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.
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
Paul McGowan makes stereos. To paraphrase his insight: The musicality isn’t a feature you add to an amplifier. It’s what’s left when you stop ruining it.
To expand: Customer delight isn’t something we add to our projects. It’s what’s left if we don’t ruin it.
Curiosity isn’t simply what’s left after a complete education. It’s still there if the system doesn’t ruin it.
Or perhaps: Satisfaction in our work isn’t created by the boss. It’s what’s left if they don’t ruin it.
And one last one: Trust isn’t
something a brand builds with an ad campaign. It’s
what’s left if the marketers don’t ruin it.
13 Years & Pledge Drive 2026 [Oh Joy Sex Toy]
The placeholder name for the Windows 8 experience was “modern” [The Old New Thing]
During the development of Windows 8, we needed a name for “that thing we’re creating.” Not being a particularly clever bunch when it comes to code names, we just called it “the modern experience,” to distinguish it from what we had in Windows 7, which was called “the classic experience.”
And then, as Microspeak demands, we started abbreviating like mad.
The new shell was called the “modern shell” or “MoSh” for short. By comparison, the old shell was called the “classic shell”, which some people started calling “ClaSh” for short. (That name didn’t stick.)
When we couldn’t come up with a name for a component of the modern experience, a common fallback was to stick the prefix “Mo” in front.
The new Start menu derived from some earlier explorations known as the “Go page” (since it’s the place you go when you want to do something). Its new code name was therefore “MoGo.”
The portion of the screen for snapped applications was called the “MoBar”, and the portion of the screen used for filled applications was called the “MoBody.”
The settings control panel? “MoSet.”
The ListView control? It started out with the more tedious name “modern collection control”, which got shortened to “MoCo.”
Even the new applications got the Mo-treatment. The new Web browser initially called itself “MoB”, but then decided that an even hipper name would be “MoBro.”
And the new photo manager? The people who worked on that didn’t want to get left out of the “Mo”-party, so they called themselves (wait for it) “MoPho.”
I hope somebody put their foot down out of frustration. “Enough already. This Mo thing is completely out of control.”
Windows 8 was announced fifteen years ago today, on June 1, 2011.
The post The placeholder name for the Windows 8 experience was “modern” appeared first on The Old New Thing.
Free software activities in May 2026 [Planet GNU]
Hello and welcome to my May 2026 free software activities report. A lot's been going on in my life offline so I took a bit of a hiatus from doing these reports, but I've had a fairly productive month of May so I thought it'd be nice to do another one for this month.
ffs package for
GNU Emacs on GNU ELPA. Many thanks to Protesilaos for rounds of code review
and feedback for improving and polishing the package in preparation
for submission to GNU ELPA.Somebody wants you to give them
money error due to the anti-bot challenge being served with
a HTTP 402 (Payment Required) response. So I landed a patch
12eec781ed6 to no longer do that. Thanks to Emacs
comaintainer Sean Whitton for reviewing and approving my proposed
patch.<input type="submit"> HTML
buttons, <button> elements were not
tab-stoppable, leading to poorer usability and accessibility. So I
landed a patch
ec3d662de0b to fix that. Thanks to Emacs
comaintainer Eli Zaretskii for reviewing, providing feedback, and
accepting my proposed change.indicate-buffer-boundaries and my convenience
configuration macros.I've begun the work toward updating the Jami package in Debian unstable again, which means I need to package new releases of its direct and indirect dependencies. For OpenDHT, I need to update RESTinio, and to do that I first need to package expected-lite and sobjectizer for Debian:
I've been working on packaging both and hope to have them uploaded to the archive in the next days and weeks.
That's it for this month's report.
Take care, and so long for now.
A Deceptively Sweet Moment Between Smudge and Saja [Whatever]

Awww, doesn’t it look like they’re cuddling? They are not, about a tenth of a second later they were rolling about in a full-blown tussle, as they are wont to do. Don’t worry, it’s all in good fun; Smudge actually enjoys his wrestling time with Saja, and vice versa. But it does make for some fun moments:
Sugar and Spice, I will note again, want none of this sort of nonsense. It is far below either of their dignities. Which is, perhaps, their loss.
— JS
Page 19 is done.
Also, there is going to be new vote incentives this month, relating
to the theme of the current chapters! You can see them by clicking
on the TWC button below, or clicking here.
Free Software Directory meeting on IRC: Friday, June 5, starting at 12:00 EDT (16:00 UTC) [Planet GNU]
Join the FSF and friends on Friday, June 5 from 12:00 to 15:00 EDT (16:00 to 19:00 UTC) to help improve the Free Software Directory.
John C Reilly has only one audiobook, One Flew Over the Cuckoo's Nest. But it's the best audiobook I've ever read, because the narrator and the book are great, esp together. Wish he would do more. Also there's a great interview with him on the Rachel Martin podcast.
Ombredanne: An AI agent ported our codebase from Python to Rust [LWN.net]
Over on the AboutCode
blog, lead maintainer Philippe Ombredanne writes
about an agentic LLM system porting the
ScanCode Toolkit to Rust. In the process, the LLM (or the
people behind it) infringed the ScanCode trademark, stripped
copyright and license notices, "and started an outreach
campaign, without ever engaging the AboutCode community
".
Ironically, the toolkit is used to scan source code and binaries in
order to figure out licensing and copyright information; it also
reports on package dependencies, vulnerabilities, and more.
This is worth repeating: A comprehensive test suite, decent documentation, and curated datasets is what makes automated porting possible. It is also what makes a codebase easier to replicate without understanding it.The agent's initial approach, using an existing Rust license-detection library, failed to match ScanCode's output quality. The agent then did what any translator would do when a loose paraphrase fails: it copied the original more closely. The final port reproduces ScanCode's core algorithms, code organization, and data-driven architecture in Rust, not because the agent understood them, but because it had enough training data and test feedback to converge on equivalent code.
My Father's House [Penny Arcade]
The movies running away with the box office are "indie ahh" horror flicks, tuned to Generation Zed. Quarantine sorta permanently broke the theatre habit for Gabe I think, though he'll occasionally lurch out of his cavern for something his larvae might be interested in. By comparison, there are people in my neighborhood's younger cadre who are, like, members of AMC Stubs and shit. They love going to the Goddamn movies. And I'd bet that a strong part of the take for films like Obsession and Backrooms - which Gabriel will not be seeing - are people who were essentially robbed of the ritual because a actual horror movie was taking place worldwide.
[$] Representing the true signatures of kernel functions [LWN.net]
Optimizing compilers can, under some circumstances, infer when a parameter to a function is not needed, and remove it. This is all well and good until the kernel's tracing or BPF subsystems need information on how to call the function or where its arguments are stored. Alan Maguire and Yonghong Song spoke at the 2026 Linux Storage, Filesystem, Memory-Management, and BPF Summit about their work on recording information regarding changed function signatures in the kernel's BTF debugging information, to better support tracing such functions.
If you work at Automattic as a developer, if there's another
Radical Speed Month for devs, if you want, let's work on a
project together even though I don't work for the company. I'm most
interested in making products work together where the result gets
people thinking about the web in a new way. A8C has a big enough
product set, and FeedLand and
WordLand are
by design well-equipped to talk with other products. I love APIs
and we have some good ones to work with, and some very
underexplored (imho because we got too fixated on the silos for so
long). Very much open to ideas, and I love working with good
developers. Maybe I'll post some ideas here. I'm esp interested now
in hooking other projects up with FeedLand.
Maybe the best way to deal with the AIs is to quarantine the data centers on the moon or Mars, and if you want to hook up to the network, you have to move there, and quite possibly not be allowed to return, depending on how things go. It would make it possible for us to change our mind after we see a preview of the consequences. Now the big question, would you volunteer??
Seven stable kernels for the first day of June [LWN.net]
Greg Kroah-Hartman has announced the release of the 7.0.11, 6.18.34, 6.12.92, 6.6.142, 6.1.175, 5.15.209, and 5.10.258 stable kernels. As usual, each contains important fixes throughout the tree, including a fix for the "CIFSwitch" vulnerability (CVE-2026-46243) which could allow a local-privilege-escalation exploit. Users are advised to upgrade.
Microsoft is intentionally bricking all Office for Mac 2019/2021 installations [OSnews]
You’re a smart cookie, so you opted to buy a copy of Microsoft Office for macOS back in 2019 or 2021, eschewing the Office 365 subscription, so you could keep on using Office 2019/2021 forever if you wanted to. Just like in the old days.
I’ve got some bad news.
Microsoft Office 2019 and 2021 for Mac view-only conversion (2026) is a scheduled remote degradation of perpetually-licensed Microsoft Office software for macOS and iOS, set for July 13, 2026 when a license-validation certificate used by the Office apps expires. After Office 2019 for Mac reached end of support in October 2023, Microsoft assured customers their installed apps would “continue to function.” The July 13, 2026 conversion instead drops the apps into a Microsoft-defined “reduced functionality mode,” in which files can be opened and viewed but not edited or saved. By May 30, 2026, the original 2023 end-of-support page had been re-dated and rewritten on Microsoft’s site; the “continue to function” clause was removed.
↫ Consumer Rights Wiki
Microsoft’s advice to the users they’re stealing from is to keep using the applications as mere viewers, switch to the free Office 365 web applications, pay for a 365 subscription, or buy a brand new regular copy of Office 2024. None of these make any sense, and clearly, all of this should be illegal, but it’s not because the software industry is a clown show.
Proprietary software is unethical.
Vulnerability Disclosure in the Age of AI [Schneier on Security]
New article: “Responsible Disclosure in the Age of AI: A Call for Urgent Action,” by Melissa Hathaway.
Abstract: Artificial intelligence is fundamentally reshaping the balance between vulnerability discovery and remediation. Frontier AI models are now capable of autonomously identifying exploitable software vulnerabilities at unprecedented speed and scale. This development exposes decades of accumulated technical debt created by a software industry that prioritized rapid deployment over secure-by-design engineering practices. Drawing on the evolution of software assurance, vulnerability disclosure frameworks, and U.S. cyber policy, this perspective argues that the current moment represents a strategic inflection point for governments, industry, and critical infrastructure operators. The author examines the growing tension between offensive and defensive equities in cyberspace, the emergence of AI-enabled vulnerability discovery capabilities in both the U.S. and China, and the increasing risks posed by unsupported legacy systems and AI-assisted code generation practices. Responsible disclosure can no longer remain a reactive or fragmented process, but must become a coordinated national and international resilience effort involving governments, software vendors, infrastructure operators, and emergency response organizations. The article concludes with an urgent call for accelerated remediation, large-scale patch management coordination, and sustained investment in automated vulnerability repair capabilities before adversaries exploit this rapidly narrowing window of opportunity.
AI Sovereignty and the Architecture of Participation [Radar]
Adam Tooze recently shared a piece from The Economist about Brazil’s push for what it calls “medical sovereignty,” the determination to make its own vaccines and the active ingredients that go into its medicines rather than depend on supply chains it doesn’t control. Brazil already produces a large share of its own medicines through public institutions like Fiocruz and Butantan, but a lot of the underlying inputs still come from abroad, and the pandemic made clear the cost of that dependence. So the country is trying to build the capacity to make the things it most needs to survive. The economist behind a lot of this thinking is Mariana Mazzucato, whose mission-oriented approach treats public procurement as a tool to build national capacity rather than just buy finished goods. (Foreign Policy has a good overview.)
I think we’re going to see a lot more of this, and not only in medicine. The same impulse is driving the quest for sovereign AI, as countries decide they don’t want their access to a foundational technology to run through a handful of American or Chinese companies. You can see it too in Europe’s and Japan’s new willingness to take responsibility for their own military destiny rather than assume the United States will always be there.
Most commentators describe all of this as decoupling, the unwinding of a connected world. That reading is too narrow.
Much like open source software and the World Wide Web, free trade was supposed to have what I call “an architecture of participation.” The most important thing about the web and open source wasn’t openness for its own sake. It was that there were no central gatekeepers. Anyone could add to the richness of the system without asking permission as long as they followed the rules of the communication protocols that allowed independently-developed pieces to work together. In addition, value circulated among the participants instead of being extracted to a center, and the system got better the more people used it. That is a very different thing from a system that is merely large and connected.
Free trade was also supposed to work like that. The theory, going back to Smith and Ricardo, was that specialization and exchange would make everyone better off, and that the connections would be mutual. What we actually got over the past few decades looks more like the platform dominance we see in big tech than the original vision of a commons built around shared exchange. A handful of large and powerful countries and firms set the terms and the smaller players are forced to take what is on offer. Despite the language of free trade, the experience for many countries was closer to colonialism, just with a new narrative.
Overall, under the neoliberal order (whose reign, as Gary Gerstle explains, is now ending), free trade became far less egalitarian, inclusive, and generative than it could have been. Less powerful countries ended up in roughly the position that small businesses occupy on Amazon, or developers occupy on the app stores: free to participate, on terms they don’t control, with much of the value they create flowing back to the hub.
Brazil’s response (and that of many others) should not be seen as a retreat from the world. It is a refusal to be participate only as a buyer, or as a source of raw materials.
That’s why decoupling is the wrong word. Decoupling means cutting the connections. What these countries seem to want is to stay connected but to build real capacity of their own, so that no single supplier can switch them off. That’s closer to federation than to separation. A federated system is still a system, and its nodes still interoperate. But no node is wholly at the mercy of another, and value circulates among them rather than collecting at the center. A trading order in which the gains pool at a few hubs is brittle and eventually illegitimate, in the same way that a platform economy that strip-mines its participants eventually provokes regulation and revolt.
I put the increasingly visible quest for sovereign AI, and the role of open source models and open source agentic protocols and harnesses in enabling that sovereignty, into the same bucket. I remember back in the early days of open source software when Michael Tiemann, whose pioneering open source company Cygnus Solutions had just been acquired by Red Hat, told me “What we really sell at Red Hat is control. The ability to control your own destiny.”
As companies are increasingly at the mercy of unexpected token pricing changes by the big centralized players, this same quest for sovereignty is playing out at the level of organizations. Open source AI, including not just open source and open weight models but open agentic protocols, agentic harnesses, and portable memory, are increasingly an essential part of the sovereignty toolkit.
The national technology sovereignty movements should take a lesson from the open source movement. The heart of open source is its architecture of participation. It is a force for innovation and value creation to the extent that it frees up the ability of people to solve their own problems and contribute their solutions to a low-friction global commons.
The pattern of open architectures leading to a wave of innovation, winners emerging, consolidating their power and then turning to the dark side seems to be a natural part of the technology cycle. The web broke Microsoft’s dominance over the personal computer software ecosystem only to give rise to a new generation of gatekeepers. Cory Doctorow called this cycle “enshittification.” I’ve told my own version of that story using the language of economics in “Rising Tide Rents and Robber Baron Rents.”
The instinct after capture is to try to rebuild the thing that got captured, only this time with better rules. Mastodon and Bluesky tried to rebuild Twitter’s social layer with cleaner governance, and neither has succeeded at the scale they hoped for. Critics might say that it was because Mastodon stayed pure and never made itself easy enough to use, while Bluesky looked federated without really being so. But more importantly, reinventing what we used to have, or what we think we used to have, is rarely the path forward. You have to build something new.
Each country building its own answer to the latest frontier models is the Mastodon move. The winning move is to operate at a layer the centralized model structurally can’t reach. Open agent protocols that let services from different providers interoperate (the work that MCP and the emerging agent stack are beginning to do) are one such layer. AI accountable to local democratic and legal institutions is another such layer. Domain-specific AI built around problems the global market won’t serve (the tropical disease vaccine analogue) is another. None of these is a smaller copy of what the hyperscalers offer. But there’s one more important layer to consider: infrastructure.
Ilan Strauss made a useful point in our conversation about these ideas. Ilan noted that AI is one of the most global forms of capital we’ve ever built, trained on the whole of the internet and runnable more or less anywhere, and the sovereignty rhetoric is partly an attempt to give something inherently placeless a place. The technology wants to be everywhere at once. The people who live with its consequences want some say over it where they are.
The placelessness of AI is only half of the truth, though. The other half is that AI is physically place-bound. The model weights are placeless. The data centers, the chips, the electrical grid, and the water for cooling are very much somewhere.
The comparison with Brazil’s medical sovereignty reinforces this point. Brazil’s challenge isn’t to invent new drugs to compete with Pfizer, but to build the capacity to manufacture existing vaccines, and eventually to build the capacity to invent vaccines for diseases the West ignores. Fiocruz and Butantan matter not because they hold patents but because they are physical institutional capacity rooted in Brazilian soil: the labs, the cold chains, the regulatory capacity, the trained workforce, and access to the active pharmaceutical ingredients. That’s what medical sovereignty really means in practice. It is infrastructure plus the institutions that run it.
The same is becoming true for AI. Open weights matter. They’re closer, though, to the patent than to the lab. Even if Qwen, Kimi, DeepSeek, Llama, Gemma, Granite, and whatever comes next are fully open, running them at scale requires data centers that cost tens of billions to build, chips whose supply chains a handful of countries control, and electricity grids that have to be expanded substantially to carry the load. The countries pursuing sovereign AI seriously seem to understand this. The EU’s AI Gigafactories program, India’s IndiaAI mission, the Gulf compute buildouts, the Singapore and Japan strategies, are all infrastructure plays first and model plays second.
Infrastructure is the layer where capture is hardest to undo. You can distill or fine tune a model far more easily than you can build a new continent’s worth of data centers or conjure the necessary electricity from a fragile power grid. If the architecture of participation for AI is defined only at the model layer, the infrastructure layer below will quietly recapture, over years, everything that was won above. Open weights running on three companies’ servers is not sovereignty.
Building physical infrastructure capable of carrying a generation’s worth of economic activity is exactly the kind of mission the public sector used to take on, before we convinced ourselves the market would handle it. Mazzucato’s argument is that public procurement and public capacity-building are the real engines of foundational technology. AI sovereignty without industrial policy is wishful thinking.
Industrial policy should aim to reinvent 20th century infrastructure, not just copy it. Can we use the enormous rebuild of infrastructure for the AI era to leapfrog the past? The analogy with centralized power grids and decentralized solar reminds us that local control does not have to be a localized version of the hyperscaler pattern. Might we envision a future where there is an intelligence grid that seamlessly uses frontier models in massive data centers and local models controlled by the user as dictated by considerations like cost, privacy, specialized knowledge, and user preferences? Creating the software to manage such an interoperable intelligence grid should be a high priority for the AI open source community. We need an orchestrator not just for agents but also for models and even for data center capacity.
In a previous piece about AI and markets, “The Third Artificial Intelligence” I picked up Richard Danzig’s argument that markets and the bureaucracies that underpin nation states are themselves artificial intelligences, information-processing mechanisms older than the machine kind. The question with all three is who designs and builds them, what they optimize for, and what feedback loops govern them.
We’re about to spend a lot of effort working out how AI should be organized both across nations and across organizations, whether it concentrates in a few firms and a few countries or whether it can be built as something more federated, where smaller players have genuine capacity and the value they create flows back to them. The choices we are now making about how AI is organized, at the model layer, the protocol layer, and the infrastructure layer, are also choices about how economic activity will be organized for at least a generation. If we manage to get that architecture right for AI, it may give us a working pattern for the thing we’ve so far failed to get right for trade. If we get it wrong, we’ll most likely reproduce, at the level of intelligence itself, the same concentration that free trade has produced in goods and the existing internet platforms produced online.
The technology wants to be everywhere at once. The people who live with its consequences want some say over it where they are. The infrastructure that resolves that tension will be a federation of models, a federation of protocols and code, and a federation of capacity. We need an architecture of participation all the way down the stack, and all the way up.
The final section of this piece benefited greatly from questions and comments raised by Ilan Strauss and Mike Loukides, as well as from previous conversations with Richard Danzig.
DistroWatch turns 25 [LWN.net]
The DistroWatch site is celebrating its
25th anniversary. "All in all, it has been an incredible
ride. Many of you who read these pages regularly know that
downloading and testing distributions is a highly addictive
pastime. I have been an avid distro-hopper for the last 25 years
and I don't see myself abandoning this activity for many more years
to come.
" Congratulations to Ladislav Bodnar and all the others
who have kept that resource going for so long.
[$] Reconsidering x32 — again [LWN.net]
The x32 ABI was meant to be the best of both worlds, providing the expanded registers and instruction set of the x86-64 architecture while preserving the lower memory use of 32-bit systems. The Linux kernel has supported x32 since the 3.4 release in 2012. The initial excitement around x32 did not last, though, and kernel developers are considering removing that support — and not for the first time. Even the most unloved features tend to have a few users, though, making removal hard.
Welcome New EFF Executive Director Nicole Ozer [Deeplinks]
EFF welcomes our new Executive Director Nicole Ozer today!
Nicole is a legal expert on privacy and surveillance, artificial intelligence, and digital speech who previously served as the inaugural executive director of the Center for Constitutional Democracy at UC Law San Francisco. From 2004-2025, she was founding director of the Technology and Civil Liberties Program at the American Civil Liberties Union of Northern California.
Nicole has long been a partner of EFF’s in the fight to defend civil liberties in the digital world. Many of us already know her, and she’s basically as close to EFF “family” as someone can be without actually having worked here.
Over her more than two decades leading public interest technology work, Nicole has:
And that's just the TL;DR! You can read more about her bona fides here.
EFF’s work to ensure technology supports freedom, justice, and innovation is more urgent than ever. And with Nicole’s decades of leadership in public interest technology work, EFF is poised to be stronger than ever to meet this moment and build for the fights ahead.
Nicole succeeds Cindy Cohn, who has been with EFF for more than 25 years and served as executive director since 2015. Cindy is leaving EFF later this month – not to retire, but to find a role that puts her back in the courtroom doing what she does best: suing the government! She’ll still be part of the EFF community.
We are living digital lives, using technology to connect, communicate, and mobilize for change. And we need you in these critical fights to defend and advance rights in the digital world – so join EFF today, and sign up for our EFFector newsletter to make sure you’re updated on the latest EFF news including upcoming events to help you get to know Nicole.
Welcome Nicole!
Multiple redhat-cloud-services npm packages compromised (StepSecurity Blog) [LWN.net]
StepSecurity is reporting that a number of npm packages in the @redhat-cloud-services scope include malware that runs automatically on every npm install:
The payload is a multi-stage credential harvester that sweeps GitHub Actions secrets along with AWS, GCP, Azure, Kubernetes, HashiCorp Vault, npm, and CircleCI tokens, and it is purpose-built to evade detection, including an explicit attempt to bypass StepSecurity Harden-Runner.
StepSecurity analyzed @redhat-cloud-services/host-inventory-client@5.0.3 in full. Its index.js, executed at install time, is 4.2 MB, a file that should weigh a few kilobytes, with the real payload buried under three separate layers of obfuscation. The malware is also a self-propagating worm: using stolen npm tokens and npm's bypass_2fa parameter, it republishes backdoored versions of other packages on its own, even against accounts protected by two-factor authentication, so every infected machine can seed the next wave with no attacker involvement. All affected packages were published via GitHub Actions OIDC from the RedHatInsights/javascript-clients repository, indicating the upstream CI/CD pipeline itself was compromised. Analysis of the remaining packages is ongoing.
A blog post from SafeDep has additional analysis about the incident. We did not find an advisory from Red Hat on this yet.
The Lying Machine [I, Cringely]
There is a lawsuit grinding through a federal court in Minnesota that every insurance executive in America should be reading instead of their quarterly AI roadmap.
The case is Estate of Lokken v. UnitedHealth Group. It was filed in late 2023 by the families of two deceased Medicare Advantage members, and it alleges that UnitedHealthcare used an artificial-intelligence tool called nH Predict to decide how much post-acute care its members were entitled to — and that the tool was wrong roughly nine times out of ten, a figure the plaintiffs draw from how often its denials were reversed on appeal. UnitedHealth denies that the tool makes coverage decisions at all; it calls nH Predict “a guide” and says the real decisions are made by clinicians following Medicare criteria. A judge will sort out who’s right. But this past March, that judge ordered the company to open its books and hand over a wide swath of documents about exactly how the thing works. The machine is going to testify.
I’m not here to litigate that case. I’m here because of the legal theory the plaintiffs were allowed to keep. The court tossed several of their claims but let two survive, and one of them should make every carrier’s general counsel sit up straight: breach of the implied covenant of good faith and fair dealing. Bad faith. The doctrine that turns a wrong coverage decision from a refund into punitive damages.
Hold onto that, because it’s the whole column.
An insurer lives and dies on a single promise: that when the policy says it covers something, it covers it. Break that promise by accident and you have a customer-service problem. Break it through a system you built, knew was fallible, and pointed at thousands of claims anyway, and you have bad faith — the most expensive two words in the business. Insurers understand this in their marrow. It’s the reason the industry spent a century building actuarial discipline, claims-review hierarchies, and appeals processes. The entire apparatus exists to keep the promise.
And the regulator is already in the room. Since 2023 the National Association of Insurance Commissioners has had a Model Bulletin demanding that insurers run a written governance program for any AI that makes or supports decisions about regulated insurance practices. Roughly two dozen states have adopted it, and this past January the NAIC launched a pilot tool to let examiners actually inspect those systems during market-conduct exams. When Washington floated an executive order late last year to wave the states off AI regulation, the insurance commissioners wrote back, in so many words, absolutely not. Translation for the boardroom: there is now a person whose literal job is to ask how your AI decides things, and “it’s only a guide” is not going to be a satisfying answer.
And yet the stampede is on. By the industry’s own surveys, something like nine in ten health insurers and nearly as many auto insurers are using or planning to use AI — and roughly a third of them concede they don’t regularly test their models. The board has read the same consulting deck you have. It wants the efficiency. It wants claims triaged in seconds and underwriting finished while the applicant is still on the phone. So the pressure runs in exactly one direction: put the machine in the chair, and do it now.
Here is what nobody in that stampede has reckoned with.
The tools in the lawsuits — nH Predict, the batch-denial system Cigna was sued over — were the old kind of AI. Predictive models. They could be wrong, badly and at scale, but they were wrong inside a lane: a number, a score, a yes, a no. The tools the industry is racing to install now are generative. And generative AI has a failure mode the predictive models never had.
It makes things up. Fluently. In complete, confident, grammatical sentences.
I wrote a couple of weeks ago about a Salesforce benchmark called HERB, which found that the best AI retrieval systems answer real enterprise questions correctly only about a third of the time — and, the part that matters here, that the bottleneck isn’t the model’s intelligence but whether it can find the right document. When it can’t find the answer, it doesn’t stop. It invents one. Nearly half of that benchmark was deliberately built from questions that have no answer at all, just to see whether the machine would admit it didn’t know. Mostly, it wouldn’t.
Now move that machine into a claims seat. Ask it whether a policy covers a particular loss, and let the controlling exclusion sit in a rider it failed to retrieve, or a state mandate it never saw. The predictive model would have handed you a wrong number. The generative model hands you a wrong sentence — a fluent, authoritative, entirely fabricated paragraph explaining that yes, you’re covered, citing a provision that does not exist. And in insurance, a confident statement from your own system, made to a policyholder, is not a hypothesis. It can be a representation. Sometimes an enforceable one.
That is the lying machine. Not malicious — worse than malicious. Sincere. It isn’t trying to deceive anyone. It simply cannot tell the difference between a fact it can support and a fact it manufactured to be helpful, and it delivers both in the same reassuring voice.
You cannot buy your way out of this with a bigger model, any more than the defendants in these cases could have bought their way out of court with a faster algorithm. Confident fabrication isn’t a shortage of intelligence that the next GPU shipment cures. It’s a property of a machine that was never built to know the boundary of what it knows. A smarter liar is still a liar — and now it’s the carrier’s liability, stapled by the implied covenant of good faith and fair dealing to every confident, wrong, generated word.
So what would a deployable insurance AI actually look like? Not the one that’s right most of the time. “Most of the time” is the precise phrase that loses the bad-faith case. The only system a serious carrier can put anywhere near a claim is one that knows the edge of the policy — one that, asked about a coverage it cannot verify against the actual language, says so plainly: I can’t find that in this policy. A system whose reflex, when the evidence isn’t there, is to fall silent rather than to invent.
That machine can be built. I have spent three years learning how. But I’ll tell you the property is achievable, that it is the exact opposite of what the Gen-AI stampede is currently installing, and that the distance between the two is going to be measured, in the end, in nine-figure verdicts.
The usual disclosure: I am not a neutral party. I co-founded a company, 2Brains, built on precisely this idea — that the valuable machine is the one that knows what it doesn’t know and refuses to pretend otherwise. Discount my enthusiasm accordingly. You can find us at 2brains.net, if the problem I’ve just described is the one keeping you up at night — which, if you run claims or underwriting at a carrier of any size, it ought to be.
Because the lawsuits you’ve been reading about are the ones where the machine was merely wrong. The next wave will be the ones where the machine was wrong and said so beautifully. And “the computer told the customer they were covered” is going to prove the most expensive sentence anyone ever let an algorithm say.
The post The Lying Machine first appeared on I, Cringely.
NVIDIA unveils RTX Spark chip for laptops and desktop PCs [OSnews]
It was an open secret that NVIDIA was working on an ARM-based system-on-a-chip for laptops and desktops, and today at Computex 2026 the company unveiled what it’s been working on. It’s surely a beast, and unsurprisingly, it’s lathered in “AI” buzzwords.
At full strength, this chip offers up to 20 Arm CPU cores, a Blackwell GPU with 6,144 CUDA cores, 128GB of LPDDR5X RAM, and up to 300 GB/s of memory bandwidth. That powerful CPU and GPU, connected over NVLink C2C, and the large memory pool give AI agents and 120-billion-parameter models plenty of power and space for long-running tasks with context lengths stretching to a million tokens, according to Nvidia.
RTX Spark will power high-end laptops from partners including Dell, HP, Lenovo, Asus, and MSI — and notably, a new Surface Ultra laptop from Microsoft. Nvidia says it’s worked with those partners to create “the most extraordinary laptops [they’ve] ever built,” with tandem OLED G-Sync displays, “all-day” battery life, premium aluminum chassis with large glass touchpads.
↫ Jeffrey Kampman at Tom’s Hardware
I couldn’t care less about the “AI” nonsense, but the chip itself seems like an absolute monster for laptops and mini PCs. With that much power and a solid NVIDIA GPU, these are also great for gaming and creative tasks, making them feel like the first true competition in the PC space to Apple’s M series of chips. They’re planned for late 2026, and tellingly, there’s no pricing information just yet.
May GNU Spotlight with Amin Bandali featuring eleven new GNU releases: GnuPG, G-Golf, and more! [Planet GNU]
Security updates for Monday [LWN.net]
Security updates have been issued by AlmaLinux (.NET 10.0, .NET 9.0, firefox, flatpak, httpd, and thunderbird), Debian (chromium, corosync, cyborg, dovecot, exim4, git-lfs, imagemagick, kernel, keystone, linux-6.1, php-twig, python-aiohttp, sentry-python, swift, and symfony), Fedora (chromium, djvulibre, docker-compose, giflib, haveged, libsoup3, libssh2, mingw-objfw, netatalk, nginx, nginx-mod-brotli, nginx-mod-fancyindex, nginx-mod-headers-more, nginx-mod-modsecurity, nginx-mod-naxsi, nginx-mod-vts, objfw, pdns, perl-Crypt-PasswdMD5, perl-libwww-perl, python-urllib3, suricata, and xrdp), Mageia (perl-Template-Toolkit and vim), Oracle (.NET 8.0, cockpit, firefox, flatpak, freerdp, kernel, and libexif), Red Hat (containernetworking-plugins, libsoup, libsoup3, multiple packages, php:8.2, php:8.3, podman, rhc, and skopeo), SUSE (amazon-ecs-init, amazon-ssm-agent, apptainer, azure-storage-azcopy, bind, chromium, csync2, cups, docker-stable, frr, gdk-pixbuf-loader-libheif, gnutls, hauler, helm, helm3, ignition, java-1_8_0-ibm, kernel, libBasicUsageEnvironment2, libredwg-devel, localsearch, memcached, openexr, perl-Net-CIDR-Lite, perl-YAML-Syck, postgresql14, python-mistune, python-pillow, python-pytest-html, python-urllib3, python311-Authlib, strongswan, trivy, vim, and xz), and Ubuntu (gdal, python-pip, qtwebengine-opensource-src, rsync, and texmaker).
Fedora F44 election interviews published [LWN.net]
The Fedora Project has published interviews with candidates running for the open seats on the Fedora Council, Fedora Engineering Steering Committee, Fedora Mindshare Committee, and EPEL Steering Committee. Voting is open through Friday, June 12 at 23:59 UTC.
There's so much I dread about the progress of AI, but nothing I say could possibly make a difference, and we aren't even that deep into it yet. This is the feeling I get every time I stop and think about it.
You don’t love systemd timers enough [OSnews]
My favorite metonymic technology term is “cron job”: even though
cronmay not literally be the daemon that executes actions on a schedule, we apply the term to anything that walks like acronand quacks like acron. As Patrick McKenzie likes to point out, cron jobs are one of the most eminently useful computing primitives. They offer utility that’s almost immediately obvious for plenty of use cases that almost everybody has: do this every day; do that once a month.And yet. You probably shouldn’t use literal
↫ Tyler Langloiscron(or its more modern cousins) for scheduled tasks! In 2026 there are more modern options available, and my favorite is the humble systemd timer. I love systemd timers. If you don’t love them yet, maybe I can show you the reasons why you should love them, too.
These are just timers. They are not consuming your computer or taking over the open source world. They do not phone home to Red Hat. These are just timers.
They should teach every chatbot to never give the user an order.
With the rise of agents, many people have been proclaiming that the age of software as a service (SaaS) is over. Who needs to subscribe to a service when you can create your own software with a few English-language prompts and a few dollars spent on tokens? Your own software, most likely a skill that runs in an agent, will have exactly the features you want: no more, no less.
But whenever someone talks about the death of SaaS, there’s something wrong with the picture. It’s simply that work is about groups and teams, and so far, programming with agents is about individuals. A related challenge is that SaaS companies are good at building dashboards and generating reports for humans, but agents need the raw data, not a representation of the data.
Think about the teamwork required for a good sales team. Someone needs a database to keep track of their customer info. It’s easy to get Claude, Gemini, or GPT to build that, using SQLite for a backend and putting a reasonable web frontend on it. You could also do that fairly quickly with Ruby on Rails, but AI makes it even easier. But what about the salesperson at the next desk? She needs similar CRM software, and she can create it with Claude, Gemini, or GPT. No problem. But it won’t be exactly the same; it will reflect her needs and preferences. Soon you have a team of salespeople in which everyone has their own personal CRM. They’re all similar, but slightly different. They may use different backends (Filemaker, SQLite, MySQL, or maybe a corporate Oracle instance); they have similar-but-slightly-different schemas (one has a single field for customer address, another has separate street, city, state, and country fields); and they don’t interoperate.
That’s the simplest possible case. How do you generate company-wide reports if everyone has their own version of the data? How do you know if you’re succeeding or failing if everyone on the team has their own version of the metrics? Everyone has become their own silo.
The company is not paying subscription fees to a vendor like Salesforce, but is this really progress? If anything, we need to make sharing data and metrics easier, not more difficult. On top of that, a product like Salesforce has hundreds of features. Most people don’t need most of them, but there’s a good chance that almost everyone needs one feature that nobody else needs. And there’s always the features you don’t know you need, ways to get value from data that you haven’t thought of. There’s value in buying a bundle that goes beyond your immediate requirements.
There’s certainly a lot good about enabling people to develop their own tools. I guarantee that if we had Claude Code 30 years ago, I would have vibe-coded my own skills for managing the authors I was working with. I would have vibe-coded some of the crazy tools I wrote to translate from one document format to another. (WordPerfect to troff? Why?) Now that we have agentic programming, I may never write my own tools again. But the SaaS scenario highlights something missing from the agentic picture. We don’t have tools for sharing or collaboration. Nobody buys a Salesforce subscription for themselves. It’s a departmental or corporate resource, shared between many people. And the ability to share easily is precisely what agentic programming lacks. I’ve built some of my own Claude tools and skills, but it’s very difficult to share them with other people at O’Reilly. ChatGPT Skills for Business and Enterprise hints at the ability to share skills among team members and some ability to generate them collaboratively, though it’s hard to find evidence that it delivers. I think we’re seeing a symptom of technological overreach. It’s easy to assume something is “easy” when it isn’t: “You just generate a .md file and put it in the corporate GitHub.” That process has a lot of friction, particularly for users who aren’t technical.
To make skills really useful across a company, we need:
While the democratization of programming doesn’t threaten SaaS companies, intelligent agents pose a deeper challenge. In “The Salesforce of Agents Won’t Be Salesforce, the Google of Agents Won’t Be Google,” Jesus Rodriguez points out that the future for services like Salesforce and Google isn’t web UIs and dashboards; it’s APIs that are designed for agents. These APIs require a different kind of data: not something that a human can glance at to get a quick feel for what’s happening, but “structured state, task objectives, relationship graphs, permissioned memory, machine-readable sales playbooks, and reliable APIs for updating intent.” Humans need the data compression that you get from a dashboard. Agents want the data itself, and they’ll take care of the compression. SaaS companies can become the system of record that is responsible for delivering accurate data. What they need to recognize is that their real customer may not be a human user; the customer will be an agent, and that will affect everything from marketing strategy and product design to pricing.
I wouldn’t claim that Salesforce or Google can’t or won’t build APIs to help companies access their own data. SaaS remains relevant, but it’s a different kind of SaaS than we have now. Companies like Salesforce know what data is available and how to work with it. Designing and building the data infrastructure that’s needed to provide next-generation SaaS isn’t trivial, and doing the programming in English rather than C++ doesn’t make it easier. Companies like Salesforce and Google know what needs to be built. They’re likely to offer their own collections of agentic skills as a starting point, alongside APIs. But large, established companies are ripe to be blindsided if they move slowly—and it’s difficult for large institutions to move quickly.
SaaS companies have momentum—or inertia, which to a physicist is the same thing. They have to change, but they aren’t threatened by AI, agents, and user-defined skills. Providing APIs that have been designed to provide data in formats that machines can use should be an obvious next step. If they die, it will be because they don’t adapt. But there’s nothing new about that.
Let's Be Facebook! [The Daily WTF]
The real WTF is that our long-time friend and submitter Argle failed to dissuade all three of his sons from pursuing IT careers of their own:
Back circa 2012, my three sons all got jobs at a company that had a brilliant web project. So brilliant that it had the support of a Disney VP, the mayor of the city, and other VIPs. At one point, my sons asked to borrow money to invest in the project. They are good boys (one is now a senior developer with Proctor & Gamble), so I backed them.
A year later, the project was released late, over budget, and not fully functional.
My boys convinced the CEO to bring me in to fix things. I fixed things. In that time, I found out they had taken bids on the project. Bids were nominally $15,000, some higher, some lower, of course. All but one group that had bid $5,000. Their plan? Hire some programmers in India for $8/hour and pocket the money without having to do work themselves.
Costs had shot well over $35,000 before I was brought in.
After I got the system working, I went to one of the weekly general standups for the company. The CEO walked in and said something like, "I just learned that Facebook was written in PHP. I think we should rewrite the whole project in PHP. That's what we really need to do."
And thus the decision was made.
A meeting was held the next day to discuss how long it would take to remake the project in PHP instead of C#. Bear in mind, a year and a half had been thrown into making the project thus far.
Going around the table, everyone said between 2 and 3 weeks. There was one other programmer in the company who had exactly 2 months of work experience; he simply parroted what the others had said before him. There was also the general contractor who leased the building to the company. He was involved with the project, and was second-to-last to speak. I fully expected this contractor to have more sense. He came in at 3 to 4 weeks.
My mouth dropped open.
It was my turn. You know those psych tests where you get someone who acts sensibly when alone, but conforms with the rest of the crowd when there's more than one? I'm simply not that guy. I said, "Those are absurd estimates! This will take a minimum of 5 months before it's in beta stages and not ready for public consumption for another couple more months."
The next day, I got a call telling me my services were no longer needed because "I wasn't forward-thinking enough for the company."
My boys stayed on another year, so I got regular reports on the "upgrade." Sure enough, just shy of 8 months later, the new system went live.
As they say, the most experienced person will be the one to accurately tell everyone that it will take longer and cost more than everyone else says.
Anyone else have their own intergenerational WTFs? Please share in the comments!
At what point will companies start using AI to communicate with customers? Who will be the first to show everyone else how to do it? Amazon taught the world how to do commerce over the web. When will users expect their vendors to use AI to simplify shopping, buying, returning? Right now, I don't think most companies realize they can do business differently with people. In my humble opinion that's when the boom will come.
Is Bluesky on the web? [Scripting News]
Is Bluesky on the web? Yes, to an extent. I can post the url of an item I wrote on Bluesky, using an HTML link. That is how the web works. First you're on my blog, or reading it somewhere else where my blog is projected, via RSS. Then you click an anchor element, and you're instantly transported to Bluesky, to the specific place where my post is stored. In less than a second you're reading the thing I referenced. That's the web, right there.
But it doesn't work the other way. They love it when you send people to their site, but not so much if you want to send them away. Sending people away is a sensitive concept to Bluesky's investors. Why would you do that? This is not a new point where the web and silos disagree. The web says "let them go" and the silos ask "do we look like idiots?"
But they will support the web in both directions if they are forced to by competition or user expectations (pretty much the same thing). That's why podcasting remains unsiloized after over 20 years. If people expect choice, they won't use clients that don't make it easy to switch.
Issue 46 – Greta’s Wedding – 03 [Comics Archive - Spinnyverse]
The post Issue 46 – Greta’s Wedding – 03 appeared first on Spinnyverse.
Grrl Power #1465 – Trope police [Grrl Power]
It’s hard to see, but there is a door behind Dabbler’s little drafting table, if you need to know where Anvil came from. Anvil obviously can’t teleport or anything, but her Sergeant Sense was tingling. It’s been a low buzz ever since Sydney became one of her subordinates. Dabbler isn’t really one of her direct reports, but she definitely raises the chaos floor, and Maxima has fully authorized Anvil to whoop Dabbler if she’s getting truly out of control.
I’m personally not into the femdom thing… though I don’t know if it’s really femdom when it’s two women. I guess that’s lezdom. In any case, it’s safe to say that Dabbler has most reasonable fetishes. The word “reasonable” admittedly doing some heavy lifting there, as a succubi’s tastes would be considered quite extreme by most people. Their fetishes have both breadth and depth, but usually have hard cut-offs at the fringes. What I’m saying is that there’s plenty of stuff on the Terran internet that Dabbler has seen and gone, “Yeah, I don’t get it.” I won’t give any examples, you’re all “internet worldly.” But we’ve all seen stuff that 1, we’re confused that there’s any sort of audience for, and 2, that there’s someone so into that very specific, particular thing that they took, in some cases, a lot of time to create it and put it out there.
Dabbler did change her top since the last page (or really just glamored up a different design – presumably she’s just enough clothes most of the time so that if her glamor is somehow disrupted, Maxima won’t yell at her, and she changes the style whenever the whim strikes her) because I had the pencils of her in that top panel sitting around from some other picture I’d started but hadn’t found a use for. I just liked the scoop neck that shows off the inside semi-underboob if you get the angle just right.
Sexy bodymod news lady Gail has a special
one-on-one interview with Tournament Quarter finalist Saraviah
Nightwing! And if you subscribe to Gail’s Space Patreon, (which, due to the
vagaries of Earth and Gal-Net’s DNS servers, happens to be
the same as the Grrl Power Patreon, go figure) you can see that
same interview in the nude! Well, eventually. The nude part of the
interview, as well as the version that includes shading will be
coming soon. Of course, you can view the interview in the
nude now if you take your own clothes off. You know. Technically.
Just put a towel on your chair first.
Double res version will be posted over at Patreon. Feel free to contribute as much as you like.
Pluralistic: Molly Crabapple's 'Here Where We Live Is Our Country' (01 Jun 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

Molly Crabapple's Here Where We Live Is Our Country is one of the most important, timely and salient works of history I've ever read. It's a history of the Jewish Labor Bund, a socialist, internationalist organization that once dominated Jewish political identity:
In the late 19th and early 20th centuries, there were hundreds of thousands of Bund members, both in the Pale of Settlement (the rural regions of the Russian empire that the Tsar confined most Jews to) and in diasporic centers like New York City. The Bund played an important role in the Russian Revolution and in the resistance to the rise of European fascism, and fought valiantly in the antifascist underground guerrilla bands in Nazi-occupied territories.
Despite this faded prominence, the Bund is all but unknown today. I was only vaguely aware of it, even though I attended seven years' worth of Yiddish classes at the Workmen's Circle, a Bund-originated socialist fraternal organization, and was bar-mitzvahed at a Workmen's Circle hall. It wasn't until I read about the Bund in Naomi Klein's essential 2023 book Doppelganger that I first caught a glimmer of its significance:
https://pluralistic.net/2023/09/05/not-that-naomi/#if-the-naomi-be-klein-youre-doing-just-fine
The thesis of Doppelganger is that the world is full of "mirror world" pairs with opposite political valences. For example, the mirror world version of the health justice movement is MAHA. Both MAHA and health justice share many commonalities (such as a skepticism of Big Pharma and its captured regulators), but arrive at totally different conclusions. Health justice demands universal access to medical care, compulsory licenses and patent reform for life-saving medicines, and systemic interventions to address discrimination against gender minorities, women, and racialized people. MAHA starts from the same diagnosis, but arrives at a totally different prescription: "eating clean," buying unregulated supplements from grifters, rejecting vaccines, attributing chronic health problems to personal moral failings, along with a conspiratorial rejection of life-saving medication.
Mirror worlds are everywhere. One chapter of Klein's work deals with the "mirror worlds" of Jewish identity and what radical Jews once called "the Jewish question":
https://ernestmandel.org/english/works/Jewish-Question-Since-World-War-II
In the 19th century, antisemitism was often described as "the socialism of fools." In the real world, we observe the dominance of parasitic finance capital over productive labor and embark upon a great class struggle to seize the means of production. In the mirror world, antisemites observe this same fact, combine it with the fact that some of these bankers are Jewish, and embark on a genocidal program of antisemitic violence.
But antisemites weren't the only mirror-world pairing with a view on "the Jewish question." Early 20th century Jews also lived on either side of the political looking-glass. On one side, you had the Bundists, whose motto (and the title of Crabapple's book) was "Here, where we live, is our country." For Bundists, Jews belonged everywhere Jews were. As the Jewish socialist Meyer London wrote, "Thousands of Jewish boys and girls pray to God not to lead them again out of Egypt, but to help them free Egypt."
The Bund saw its struggle as just one aspect of the universal struggle for liberation. They understood that persecuted minorities everywhere labored under the double bind of racist and class oppression (and further, that women labored under gender oppression), but they also understood that these identity markers were tactical facts about how these workers should set about freeing themselves.
They didn't mistake identity for a strategic difference: the goal was always universal liberation, and the reason to consider identity-based oppression was to ensure that every comrade was brought along in the struggle. As Crabapple writes, the Bund more-or-less invented intersectional analysis, and they practiced it with an eye to all the struggles of the world. Bund newspapers (even those published by the Bund underground in the Warsaw Ghetto) closely tracked the struggles of Black workers in the Jim Crow south, just as the Black radical press of the day reported closely on antisemitic lynchings in Europe. The Bund underground even managed to send telegrams of support to Gandhi from Nazi-occupied Poland.
On the other side of the Jewish mirror was (of course) Zionism. Zionism and the Bund were founded in the same year, in response to the same events. The Bund was founded in secret by exiled radical Jews in Vilna whom the Tsar had banished for their resistance activities. Zionism was founded in Geneva by Theodor Herzl, who sheltered Jews who had fled Tsarist Russia to escape antisemitic violence.
Where the Bund called for universalism and solidarity with all workers to keep Jews safe in every place where Jews lived, Zionists dreamed of a Jewish homeland, a stronghold to which Jews could retreat from the world. Where the Bund fought antisemites who would banish or exterminate Jews, Zionist leaders were willing to align themselves with antisemites, finding common cause in the idea that European Jewry should abandon Europe in favor of Palestine.
Indeed, the Balfour Declaration – which established a plan for the UK handing over its occupied territories in Palestine to create a Jewish homeland – was fomented by vicious antisemites as part of a plan to ethnically cleanse the UK of all Jews:
https://www.palestine-studies.org/en/node/232119
As Crabapple documents in detail, in the ensuing decades of struggle that followed, Zionist leaders repeatedly entered into alliances with antisemitic politicians, even those who presided over (and sometimes directed) campaigns of racist terror against Jews. Despite their mutual hatred, they shared a common goal: terrorizing Europe's Jews out of Europe and into Palestine.
Meanwhile, Bundists never wavered from their rejection of antisemites. In the Bundists' socialist, internationalist program, the pursuit of a Jewish homeland merely dangled the possibility of Jewish liberation – at the expense of Palestinians, and without having anything to offer to all the other oppressed peoples of the world.
While I discovered the Bund through reading Naomi Klein, many others learned about it from Crabapple's widely circulated 2018 New York Review of Books article, "My Great-Grandfather the Bundist":
Predictably, Crabapple's article provoked attacks from Zionists who told Crabapple they blamed the Bund for its own extermination. In their telling, the Bund's stubborn refusal to confront antisemitism as "history's oldest hatred" was a suicidal delusion that led their members into the Nazis' mass graves.
But for many Jews, Crabapple's article was a revelation about a different way to be Jewish, an identity that rejected the Apartheid state of Israel (South African Apartheid and the state of Israel share a birth year, and Apartheid South Africa and Israel carried on a robust program of mutual trade in arms and surveillance tools):
https://imeu.org/resources/key-issues/fact-sheet-an-overview-apartheid-south-africa-israel/275
This revelation only gained salience and prominence after October 7, 2023, when Israel responded to a massacre perpetrated by Hamas by embarking on a years-long program of genocide and extraterritorial aggression. Zionists have defended these crimes against humanity as inseparable from Jewish identity and the only plausible answer to "the Jewish question."
Israel's defenders insist that even naming the genocide in Palestine (let alone opposing it) is inherently antisemitic. Ironically, Israel's loudest cheerleaders are the millions of antisemitic evangelical Christian Zionists who vastly outnumber Jewish Zionists, who support Israel in hopes of bringing about a Biblical prophecy in which Christ returns and every Jew is cast down to Hell.
In the years since, Crabapple's work to revive the Bund has only gained adherents, especially among Jews who refuse to accept that their safety can only be secured through mass slaughter and imperial conquest. Crabapple's response to this burgeoning movement is this book, a massive, heroic, brilliant, and pitiless history of the Bund that proposes its own answer to "the Jewish question."
Beyond its political importance, Here Where We Live Is Our Country is a remarkable scholarly and artistic achievement. Crabapple taught herself to speak and read Yiddish so that she could consume primary sources, and she crisscrossed the globe to see and research the key sites of Jewish oppression and the Jewish liberation struggle.
It's a monumental book. Thanks to Crabapple's voluminous research, Here Where We Live delivers a blow-by-blow look at the Bund's rise and its triumphs, but even more importantly, the tactical disagreements, factional disputes, and personal animus that too often snatched defeat from the jaws of victory for these committed revolutionaries.
At times, Crabapple's tick-tock of these fights seems to embody the wry maxim: "Two Jews, three arguments." But the point of all this nuanced, textured detail isn't to rehash the tittle-tattle of the previous century, nor is it to show off Crabapple's prowess as a researcher. Rather, in rehearsing these fights, Crabapple shows how reasonable these disputes seemed at the time, and how terrible the consequences were for all concerned.
In this mode, Crabapple manages the admirable achievement of being both sympathetic and pitiless. Crabapple, after all, is a veteran political activist who has traveled extensively to active war-zones to document atrocities and offer mutual aid to those fighting for justice. She's endured every failure that radical politics can manifest, sat through every kind of bad meeting, and she recognizes in these disputes the same personalities and personal failings that have broken her heart a hundred times. She understands why these people are this way – but she can also see, with perfect hindsight, the ghastly horrors that followed, which swamp any matter of principle these people might have stood on.
There's plenty of this sympathetic pitilessness to go around, and it's not just the Bund or Jews who come in for it. Every factionalist blunder in pre-Revolutionary Russia, in the Soviet Union, in interwar Poland, and in occupied Poland comes in for examination – as do every imprisonment, maiming, rape and death that these blunders opened the door to. Crabapple's heroes are principled, but they are imperfect, and sometimes foolish, and sometimes self-deluding (for example, the Palestinian leader who insists that his rank-and-file fighters want to establish a multi-ethnic democracy, despite the undeniable presence in their number of people who want to banish all Jews from Palestine).
The twentieth century was a charnel house, and so the cost of these mistakes is high. Often, these mistakes lead to mass graves, with these mistake-makers tangled among the bodies. They never had the chance to learn from their mistakes. But, through Crabapple's work, we might.
It is in the postscript to this book that its true message lands. After 480 pages, we arrive at Crabapple's conclusion. In reflecting on these people, who died in their millions and whose memory was all but erased, she asks, "Did the Bund fail?"
Her answer is a resounding no. The Bund lost, but it did not fail. The Bund was failed, as were the Zionists, the Roma, European socialists, disabled and queer people – everyone the Nazis burned, gassed, or buried alive. These people cried out to the rest of the world – to America, to Canada, to the UK, to all the places that were not under Nazi occupation – and begged for help, for safe passage, for rescue.
The world slammed its doors. Even after they joined the war, they refused to admit Jews and other victims of Nazi genocide. They refused visas, closed borders, turned back boats of escapees, sometimes sending them back to occupied Europe to be slaughtered.
In his review in the New York Review of Books, historian Adam Hochschild writes:
Imagine that the United States had not passed the Immigration Act of 1924, which essentially slammed the door on almost all newcomers for more than forty years. Without it, Jewish immigration to the US would surely have soared during the 1920s and 1930s. Some 2.5 million Jews, most of them hoping for a better life than they had in tsarist Russia, had already come here between 1880 and 1924. Then, even in the decade before Hitler took power, Jews still had many reasons to leave Europe. Poland, whose Jewish population of 2.8 million was the continent’s largest, was a cauldron of antisemitism between the wars, with outbreaks of deadly violence, segregated seating and de facto quotas in many universities, and numerous other humiliations.
https://www.nybooks.com/articles/2026/05/28/a-dream-of-a-socialist-commonwealth-the-jewish-bund/
No one who's paid attention during this century's xenophobic policies and attacks on refugees can fail to see the parallels. And no one who's paid attention to the genocide in Gaza and the official response in the "free" world to Palestinian solidarity movements can fail to see those parallels, either.
For the Jews who are told – by Zionists, including the millions of American gentile Zionists who outnumber Jewish Zionists 30:1 – that all this is being done for us, that our continued existence requires it, Crabapple's history of the Bund shows us what's on the other side of the mirror. As NYT editor Max Strasser writes in his review of Here Where We Live:
[The Bund was] the kind of movement leftists today dream about — political party, social movement, mutual aid group — with tens of thousands of members. The Bund published newspapers and ran soup kitchens and summer camps; its athletes competed in a socialist version of the Olympics. Bund activists organized across Eastern Europe and beyond — they helped elect a congressman on the Lower East Side.
The politics we dream of isn't a fantasy. It's the politics our grandparents lived – a politics that wasn't lost, but rather, erased. Erased by Nazis and Stalinists, who committed wholesale slaughter of Bundists. But that politics was also erased by Zionists, who swept through the Displaced Persons' camps of post-war Europe, imposing a draft on the Jews who'd been penned in those stinking camps by a world that refused to welcome Jews, even after the horrors of the death-camps were widely known. Zionists bullied and coerced these Jews – including Bundists who rejected their cause – to serve as foot-soldiers in the Israeli army, even beating elderly parents until their sons and daughters agreed to fight.
Bundists always rejected all forms of ethno-nationalism. As Jews, they had lived in the violence and oppression that always attended every ethno-nationalist program. They never imagined that Israel would escape this fate. As the Bundist leader Henryk Erlich wrote in 1933: "We are not a chosen people. Our nationalism is just as ugly, just as harmful as the nationalisms of all the other nations."
Crabapple has done heroic and important work in excavating this history. She has vindicated the sacrifices made by the Bundist archivists who smuggled their papers out of Nazi occupation and gave their lives to ensure that some day their story could be told.
In so doing, she has also vindicated her own great-grandfather, Sam Rothbort, a Bundist who fled the Pale of Settlement for New York City, whose art-practice traveled to Crabapple through her mother, who is also a painter. It wasn't just the art-practices that traveled – it was also the art, and it was one of Rothbort's paintings ("Itka, the Bundist," depicting a girl throwing a rock through a window) that set her on this journey.
This volume is also graced by Crabapple's own art, stark monochrome ink-washes in her characteristic style, which bring these long-dead people to vivid life. They're a reminder of the role that culture plays in every radical movement, of the ways that the Bund welcomed its members to live a radical life through sport and song and picnics, and not just meetings and street-demonstrations.
Even before this book, Crabapple had made a mark through her paintings and writings. But with Here Where We Live Is Our Country, Crabapple has given us a magnum opus, a book that might help us turn the tide of history.

Inventing ELIZA: How the First Chatbot Shaped the Future of AI https://sites.google.com/view/elizaarchaeology/book
Inside Graham Platner’s Plan To Wield Power https://www.levernews.com/graham-platners-power/
mcmodernslopcore https://www.tumblr.com/mcmansionhell/817896092499869696/mcmodernslopcore
Locus Award for Best Non-fiction https://en.wikipedia.org/wiki/Locus_Award_for_Best_Non-fiction
#20yrsago Sign a letter supporting the BBC’s online archive https://web.archive.org/web/20060704182401/http://www.freeculture.org.uk/letters/CreativeArchiveLetter
#20yrsago Home chemistry under assault https://web.archive.org/web/20060603021709/http://wired.com/wired/archive/14.06/chemistry_pr.html
#20yrsago Cliches to avoid when writing about women and video-games https://web.archive.org/web/20060704223941/http://www.richardcobbett.co.uk/codex/clicktoread/filingcabinet/writing_a_girls_in_games_article/
#20yrsago JPEG patent invalidated https://web.archive.org/web/20060613015757/http://www.pubpat.org/Chen672Rejected.htm
#20yrsago SF story about AI-human love https://www.salon.com/2006/05/30/perfect_man/
#15yrsago Sensation: Acerbic novel about pop culture and popular madness as functions of parasitic manipulation https://memex.craphound.com/2011/05/30/sensation-acerbic-novel-about-pop-culture-and-popular-madness-as-functions-of-parasitic-manipulation/
#15yrsago Every Pirate Wants to Be an Admiral: why less copyright gets you more culture https://www.theguardian.com/commentisfree/video/2011/may/30/internet-piracy-cory-doctorow
#15yrsago Social incentives vs economic incentives in crowdsourced work https://web.archive.org/web/20110602184500/https://blog.crowdflower.com/2011/05/designing-incentives-for-crowdsourcing-workers/
#15yrsago Painful workarounds from computer novices https://www.reddit.com/r/AskReddit/comments/hmlmd/what_is_the_most_painful_way_you_have_seen_your/
#10yrsago To imagine the ocean of the future: picture a writhing mass of unkillable tentacles, forever https://web.archive.org/web/20160530145354/https://arstechnica.com/science/2016/05/octopuses-may-indeed-be-your-new-overlords/
#10yrsago When Brad Birkenfeld blew the whistle on UBS, the US government paid him $104M and sent him to jail https://web.archive.org/web/20160602152611/http://fullmeasure.news/news/politics/the-whistleblower-05-23-2016
#10yrsago The last time there were this many unsold $100M+ homes on the market, the world economy imploded https://web.archive.org/web/20160529040314/https://www.nytimes.com/2016/05/29/business/a-worrisome-pileup-of-100-million-homes.html
#10yrsago David Foster Wallace’s essays on tennis, finally collected between one set of covers https://www.csmonitor.com/Arts-Culture/Books/2016/0530/String-Theory-gathers-the-brainy-witty-tennis-writing-of-David-Foster-Wallace
#10yrsago United Arab Emirates hacked UK journalist https://citizenlab.ca/research/stealth-falcon/
#10yrsago Internet economics 101: “bandwidth hogs” considered harmless https://web.archive.org/web/20160530155601/https://arstechnica.com/tech-policy/2016/05/should-broadband-data-hogs-pay-more-isp-economics-say-no/
#20yrsago JPEG patent invalidated https://web.archive.org/web/20060613015757/http://www.pubpat.org/Chen672Rejected.htm
#20yrsago SF story about AI-human love https://www.salon.com/2006/05/30/perfect_man/
#15yrsago Sensation: Acerbic novel about pop culture and popular madness as functions of parasitic manipulation https://memex.craphound.com/2011/05/30/sensation-acerbic-novel-about-pop-culture-and-popular-madness-as-functions-of-parasitic-manipulation/
#10yrsago To imagine the ocean of the future: picture a writhing mass of unkillable tentacles, forever https://web.archive.org/web/20160530145354/https://arstechnica.com/science/2016/05/octopuses-may-indeed-be-your-new-overlords/
#10yrsago When Brad Birkenfeld blew the whistle on UBS, the US government paid him $104M and sent him to jail https://web.archive.org/web/20160602152611/http://fullmeasure.news/news/politics/the-whistleblower-05-23-2016
#10yrsago The last time there were this many unsold $100M+ homes on the market, the world economy imploded https://web.archive.org/web/20160529040314/https://www.nytimes.com/2016/05/29/business/a-worrisome-pileup-of-100-million-homes.html
#10yrsago David Foster Wallace’s essays on tennis, finally collected between one set of covers https://www.csmonitor.com/Arts-Culture/Books/2016/0530/String-Theory-gathers-the-brainy-witty-tennis-writing-of-David-Foster-Wallace
#10yrsago United Arab Emirates hacked UK journalist https://citizenlab.ca/research/stealth-falcon/
#10yrsago Internet economics 101: “bandwidth hogs” considered harmless https://web.archive.org/web/20160530155601/https://arstechnica.com/tech-policy/2016/05/should-broadband-data-hogs-pay-more-isp-economics-say-no/

Kansas City: Facing the Future (Woodneath Library Center), Jun
10
https://www.mymcpl.org/events/119655/facing-future-cory-doctorow
LA: The Reverse Centaur's Guide to Life After AI with Brian
Merchant (Skylight Books), Jun 19
https://www.skylightbooks.com/event/skylight-cory-doctorow-presents-reverse-centaurs-guide-life-after-ai-w-brian-merchant
Menlo Park: The Reverse Centaur's Guide to Life After AI with
Angie Coiro (Kepler's), Jun 21
https://www.keplers.org/upcoming-events-internal/cory-doctorow-2026
Toronto: TBA, Jun 23
NYC: The Reverse Centaur's Guide to Life After AI with Jonathan
Coulton (The Strand), Jun 24
https://www.strandbooks.com/cory-doctorow-the-reverse-centaur-s-guide-to-life-after-ai.html
Philadelphia: The Reverse Centaur's Guide to Life After AI with
David Williams (Fitler Club/Philadelphia Citizen), Jun 25
https://www.eventbrite.com/e/cory-doctorow-book-event-tickets-1990110326559
Chicago: The Reverse Centaur's Guide to Life After AI with Rick
Perlstein (Exile in Bookville), Jun 26
https://exileinbookville.com/events/50628
Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
EFFecting Change: How to Disenshittify the Internet (EFF, with
Wendy Liu)
https://archive.org/details/effecting-change-enshittification
The “Enshittification” of Everything (Bioneers)
https://bioneers.org/cory-doctorow-enshittification-of-everything-zstf2605/
Enshittification (99% Invisible)
https://99percentinvisible.org/episode/666-enshittification/
Artificial Intelligence: The Ultimate Disruptor, with Astra
Taylor and Yoshua Bengio (CBC Ideas)
https://www.cbc.ca/listen/live-radio/1-23-ideas/clip/16210039-artificial-intelligence-the-ultimate-disruptor
"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
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026
"The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"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. Third draft completed. Submitted to editor.
"The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.
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
Rethinking famous college admissions [Seth's Blog]
Even if you’re not applying, this thought experiment gives a glimpse into how the world is about to be rewired.
The top 10 most selective colleges in the US admit about 5% of those who apply. They’re not selling education as much as a label, a rare chance for someone to slot themselves into a category in our economic and cultural hierarchy.
If all the famous schools wanted to do was be elite, they could use a formula–grades plus SAT plus something–and algorithmically draw a line and pick everyone over that line.
But it’s more complicated than that.
First, they want to find some sort of balance, to create a reasonably diverse group of backgrounds that coalesce into a community. They don’t want 100 kids from the same high school…
Second, they have special cases, many of which they don’t want to talk about in public, involving alumni, outgroup dominance considerations, and sports, which in many cases can count for as much as 50% of the incoming body.
Third, they use variable pricing, with many students ultimately paying different tuition. Few can afford to be fully need-blind in selection.
The end result is complicated, onerous and mostly a charade. 50,000 applicants coming into each institution cannot possibly be reviewed coherently or consistently. And uncertainty takes a toll, not just on the students, but the schools and their teams as well.
It’s expensive and time-consuming, and fraught with worry. The typical fancy college applicant applies to nearly ten schools. Some kids get into a few schools, some to none at all. And essays in the age of AI are now officially meaningless.
[I’ve written earlier that they should have two sorts of rejection letters. Half the people should get one saying that they simply didn’t get in. The other half should receive a letter saying that they were good enough to get in, but didn’t get lucky.]
This is what you’d invent if it were 1952.
If we rethink it, it might be more like this:
This shift saves money, reduces anxiety, is probably more fair. It’s auditable and improvable and uses far less time as well. It used to be impossible. Now that it’s not just possible but easy, the pressure falls on the constituents who’d prefer to avoid it.
Is it better to believe that you got into a famous college because of a mysterious, perhaps human, definitely flawed, and easily gamed system, or would we prefer a different sort of black box, one that puts data to work in a coordinated and prioritized way?
Systems change is difficult and unpredictable, and I’m not holding my breath. Just imagine, though, how many processes we live with now that will be rebuilt on top of widespread coordination.
My Father's House [Penny Arcade]
New Comic: My Father's House
Joe Marshall: Regression [Planet Lisp]
Last year I wrote some Lisp related AI apps. There was a syntax highlighter that used the LLM to determine how to colorize and highlight syntax, and a prompt refiner that takes a wimpy LLM prompt and creates more elaborate prompt from them.
I took the apps down last week. They were `vibe coded' and therefore approximate and had bugs (but that's to be expected), but they had a security hole where you could hijack the LLM processing with your own prompt turning my app into an open relay using my API key. Last week I discovered that my AI spend on video creation was becoming serious. This is odd because I never create AI video. It turned out that my app was being hijacked by a proxy in Luxembourg and was generating videos on my dime.
So I shut down the apps. I knew they had the potential of being abused, and I was willing to tolerate a small amount of abuse, but it didn't occur to me that syntax highlighter could be hijacked to generate gigabytes of video at my expense. Future applications will be careful to obtain the API key from the user.
Waking Up, p23 [Ctrl+Alt+Del Comic]
The post Waking Up, p23 appeared first on Ctrl+Alt+Del Comic.
Girl Genius for Monday, June 01, 2026 [Girl Genius]
The Girl Genius comic for Monday, June 01, 2026 has been posted.
kerosene keeps me warm [WIL WHEATON dot NET]
A couple weeks ago, I got fed up with my body feeling sore all the time because I’m not taking better care of it.
I mean, I eat well, I haven’t touched alcohol in almost 11 years, and I take pretty decent walks every day. But my muscle mass still hasn’t recovered from the seizure I had a couple years ago, no matter how regularly I lift weights and do moderate exercise. It’s demoralizing for me, as someone who was relentlessly bullied by my father for being skinny, picked on my kids at school for being uncoordinated, who always felt like he wasn’t enough.
If anyone is wondering how badly mistreating a child affects them, wondering how long the pain and the fear and the confusion and the sadness lasts, how it all persists regardless of how much success you have in your life, I’m almost 54. So.
Anyway. I woke up about two weeks ago, and everything hurt: my hips, my shoulders, the spot in my upper back where one of my vertebrae rotated during my seizure and stayed that way for five months. And just to spice things up, a raging headache.
I was, like, “hey, good thing I quit drinking so I never woke up feeling hungover again.”
I’m big on gallows humor.
When I get that physical pain, which isn’t clinically chronic pain, but is practically the same for me, it’s depressing. It’s infuriating. It makes me want to scream. I’m impatient, I’m irritable, and I do not like the person I am.
I dragged myself out of bed, counted that as a victory, and started my day. Coffee, granola, another coffee, my fiber because I’m punk as fuck, a long and considered moment in front of the Chemex as I talk myself out of the third coffee I know will be Officially Too Much Coffee For Wil.
While I was not having too much coffee (water, instead, because I’m a goddamn adult), I began looking at couch to 5K plans. I last did that in 2017 (my best time was 29:59) and I loved it. It really helped when I was living my life as a sober person for the first time, losing the bloat and unhealthy bleh that years of abuse had inflicted upon my body. It was pretty great, watching my body shed not just pounds but a lot of trauma and self-harm as I got stronger and felt more and more like I wasn’t a worthless piece of shit (I was never a worthless piece of shit, to be clear; Depression Lies and trauma is a bitch). When I finally did my race, and I pushed myself like hell for the last few hundred meters to get under 30 minutes, I felt like a warrior. Like, Worf would have been so massively proud of me.
I felt so good, so solid and present in my life, that it was absolutely devastating when I hurt myself one day (hurt my Old, if I’m being technical about it) while I was out, and had to limp home. It was, like, step, step, step, PAIN. My calf cramped up, and before I knew it, it ran up my hamstring and down into the bottom of my foot. I still don’t know how it happened, but I can remember what happened next. This was a over a year before I did weekly EMDR and CPTSD recovery work, so I had not yet handled my lingering anger … and I was fucking enraged. I was so furious that this thing I love, this thing that was helping me reclaim my body and my spirit from literal decades of pain and abuse and motherfucking functional alcoholism was stolen from me, literally yanked out from underneath my feet, while I was in the middle doing it. I didn’t do anything wrong, I thought, and I still got hurt. Jesus fuck, could that be more on the nose?
The incandescent anger I felt, the sense of being betrayed by my own body, the futility of doing anything because some fucking bullshit always fucks it up anyway and it’s never going to get any better … that was a lot.
But I didn’t give up right away. I did my best to work out the injury with massage and other forms of exercise. I just couldn’t get whatever I had injured to tell me what it needed, and neither could the doctors I saw about it. Eventually, I just resigned myself to never running again.
Then my friend, Jenna, who is just two years younger than me, started running marathons. I have lost count but I think it’s got to be close to 50 now? At first, I was envious, then I was inspired, but I was always afraid to take the risk and start again. Sure, it had been a couple years since I hurt myself, and I had done a massive amount of recovery and healing work. I worked on how angry I felt when I confronted my trauma, until I didn’t feel angry anymore. I reparented myself, and lived every day making a conscious effort to be the adult I always needed.
Yadda yadda yadda I got better. I am better. I still have bad days (this year has been so hard, with so much loss and grief), and I get through them. I have good days, even great days, and I don’t take them for granted.
So when I woke up a couple weeks ago and my everything hurt, and I went through my morning routine, I made a promise to myself to get serious about regular, moderate exercise. The big hurdle for me was feeling like I am worth it. After all these years, after all the therapy and all the work, I still struggle to put myself first, to take really good care of myself because there are people who love me who will be really sad if I don’t. (I’m working on being one of those people, but it’s still a struggle more often than it should be.)
I looked at half a dozen plans, and saw the things they all had in common. I deliberately chose the easiest, slowest, you-haven’t-done-shit-in-years plan, set the intervals in my watch, walked out the door, and got started.
My first week of training was so fun! I started out doing 30 seconds of jogging and a minute of walking, for 20 minutes. The first day was easy and fun. The second day, the first half block felt like I was running through molasses before I broke free and settled in. I discovered that Keep Me Fed, by The Warning, was a fantastic companion album for my session. The rest of the week was an absolute joy. I felt accomplished and excited.
I was out for my first run in week two, doing 60 seconds of jogging and 90 walking, almost finished with my penultimate interval. I turned down my street. Step, step, step, PAIN. The exact same thing that happened before.
Are you fucking kidding me? What the actual fuck, Wil’s Body?
I stopped. I breathed. I grabbed a nearby pole and gently stretched my calves and hamstrings. I massaged my leg. Nothing worked. I limped home.
I was so incredibly disappointed, so bummed out, but I wasn’t angry. I wasn’t enraged. I wasn’t mad at myself or the incredible unfairness of this bullshit, all over again. I just limped home, took off my shoes, used the foam roller, and then I sat down and cried.
I cried because I miss Marlowe.
I cried because my body hurt.
I cried because it’s so unfair to do everything right and still my dad doesn’t love me.
I cried because I’m just so totally exhausted by the cruelty and the violence that could have been avoided.
I just cried and cried, as all this grief poured out of me.
None of it made my leg get better, but it was cathartic. And I was grateful for it, because choosing to experience grief instead of avoiding it with anger was a big time goal, something I worked really hard to accomplish.
When I was done, my body still hurt, but my emotional self felt okay. Sure, I was disappointed, but I didn’t get mad about something that wasn’t going to change because I was mad. I spared myself from that experience, and I’m proud of myself for doing it.
I accepted that I wasn’t going to be able to run for at least a week. I took long walks instead, occasionally stopping to do some squats for strength and mobility. I did gentle exercises inside at home, not because I wanted to experience a change in my appearance, but because I felt better, emotionally as well as physically, when I was done. I invested maybe half an hour a day, and it paid off at like 5:1.
Today, I woke up (saw, again, that it still hasn’t happened), ate my breakfast, and asked my body how it was doing. Every department checked in with a green flag, except for my injured leg, which was like “I’m about 96% there, I think.” So I decided to attempt a very gentle rehab walk/jog, just once around the block.
I started Recipe For Hate, walked to warm up, and then did little intervals — very gently — around the block. One lap in, it was a little achy, but didn’t feel like it was going to cramp up again. So I went for another lap, then another, then another. I ended up doing about 20 minutes, just jogging and walking when it felt right.
And when I got home, I felt like a champion. I felt like I’d done something good for my body that I have to live in, and for the me that lives in it.
I have to go back to the beginning, I think, but that’s fine. I don’t have a race on my calendar, and this isn’t a contest or anything. It’s something more special and meaningful to me than that, and I’m really proud of myself for having the ability to understand and embrace that.
I’m worth it. You’re worth it. Whatever your Couch to 5K is, I know you can do it. I believe in me, and I believe in you.
Thanks for stopping by.
I’m so glad you’re here. If this is your first visit and you’d like to get my posts in your inbox, here’s the thingy:
i’m calling it ‘wil wheatcon’ until i can think of something better [WIL WHEATON dot NET]
In an average year, I travel to around 5 or 6 cities for conventions. Almost every time I announce an appearance, the most common response is some version of “that’s great! When are you coming to [my town]?”
I’m not coming to your town, but I am coming to your computer (or your tablet or your phone or even your TV, I think) on June 7 for a virtual convention that needs a much better name than Couch Con, because at this moment in time, that creates a very specific, very unfortunate, image. (Maybe it will happen today).
Seriously, I hate every name I think of for this. What would you call a virtual convention where I am the guest of honor, the toastmaster, the featured author, and also the only guest? Wil Wheatcon is kind of cute, I think, but I feel like there’s something better. If you have one, would you comment?
The Untitled Wil Wheaton Virtual Convention came out of an unrelated meeting with my friends and partners in crime at Stands about how we wanted to turn some of my designs into stickers. One thing lead to another, and I’m just going to get to the graphic you’ve probably looked at already:
I love going to cons, and spending time with my people. I love sharing how much we love all our nerd shit. I love the safe place we create together. And I know that money is tight for everyone right now, everything costs more than it should, and just the price of a ticket can put a con out of reach for a lot of people. And that’s not even accounting for whatever we spend on merch, art, autographs, and photo-ops.

So a big, big part of my wanting to do this is the opportunity to do something convention-ish, which is way more affordable, at just fifteen bucks. Hell, get ten friends together and everyone can cover the ticket with the change in their pockets. People still have change in their pockets, right?
I have met tens of thousands of people over the years. I know that this is an unscientific, heavily-skewed metric that would fail any peer review, but I still think it matters that the single most common thing they tell me is some version of “I loved your panel discussion. I wish you’d had more time for questions.”
Well, if you’re one of those people, this is probably going to crawl your dungeon. We have as much time as we want, I can take as many questions as I want, and if enough people ask, I’ll even read you some flash fiction I wrote. And we’re offering some break out, private meet and greets, for anyone who wants that experience.
Oh, I’m also going to pull my kitty ears out and put them on for a Wil Wheatcon exclusive autographed 8×10, if that’s your thing and you wanted to add some whimsy to your life.
A few people I know have done this kind of event, and they all tell me that it’s so much fun, so uplifting, and a wonderful way to spend a couple hours together. I believe them, and I’m excited to experience that for myself. I hope you’ll join me!
I’m so glad you are here. If you’d like to get my updates via email, here’s the thingy:
The purpose of standards is interop. That's it. No other purpose.
Just watched the first episode of Star City, really good. Somewhat like The Americans, but takes place in the USSR. A spinoff of For All Mankind, which started out interesting and then became unwatchable, though I did enjoy the sets on Mars. I also liked the character who was inspired by Elon Musk, obviously.
MorphOS 3.20 released [OSnews]
Almost exactly 18 months after 3.19, the MorphOS team has released MorphOS 3.20. This is a major release, as it adds support for the upcoming Mirari PowerPC motherboards, which we talked about when that project was first announced. I’m quite excited about the Mirari, and can’t wait to have one, and MorphOS is the one operating system I really want to run it on. I have an almost mint condition PowerBook G4 17″ specifically for MorphOS, but the hardware is simply too outdated to keep up with modern demands, which is sad, because MorphOS can clearly keep up if it had modern hardware.
So, MorphOS 3.20 adds support for the Mirari platform and its various components, like its thermal management solution, networking, and so on. MorphOS 3.20 also expands the number of support Radeon graphics cards, improved support for various HDMI and DisplayPort ports, better support for multiple monitors, and overall better graphics performance in general. There’s also SFS2 support throughout the operating system so MorphOS now supports file sizes of up to 4GB and partition sizes of up to 2TB. The Ambient UI has also seen extensive work to improve performance and stability, as well as add a bunch of new features.
Several new applications and utilities are included in MorphOS 3.20, such as DriveImager, MirrorBackup, SMARTDoctor, OFHTTP, OFHash, OFDNS, Replace, and Automator for scripting and controlling MUI applications. Iris has been updated to version 1.53 and now includes the new Contacts companion application for CalDAV-based address books. FlowStudio received extensive improvements for project management, printing, Markdown support, and development workflows.
Networking and connectivity have also been improved with updates to OpenSSH 10.3p1, TLS 1.3 support in RDesktop, expanded SMB2 filesystem improvements, and improved USB, audio and multimedia subsystem stability. Numerous system libraries and frameworks including MUI, ixemul, Cairo, Harfbuzz, Freetype, OpenSSL4, and ObjFWRT have been updated or significantly modernized.
↫ MorphOS 3.20 release announcement
Of course, there’s also the long list of smaller changes, bugfixes, and performance improvements. MorphOS has wide support for Apple PowerPC hardware, which is probably your best bet for using the operating system for now, at least until the Mirari becomes available for purchase.
Claude always tries to understand what you're saying. I like
that. We do a lot of communicating, and have a lot of
misunderstandings, I see its flaws as a programmer, it makes
mistakes. Today I asked it to help find an error in the subscribe code
and it showed me a lot of things that were wrong, I fixed them, but
we didn't find the thing that broke it. We managed to get it back
on the air, but that broke something else. A few hours later I
looked at the code myself and mathematically deduced that when you
read a file, even if the content was the same, if you ask if the
result is equal to its previous version, the result would be no. It
would say there's a change when there's no change. The computer is
doing what it was programmed to do, it's our job as programmers to
say the same thing a different way that does what we want. That's
the kind of thing you expect Claude to be incredibly good at. I
think the problem is that it can't see the various apps running and
see what they say. It has to figure out how it works just from
reading the code. That makes it a completely new kind of computer
in addition to all the other things that are amazing about it.
Amin Bandali: Thinking about life - chat with Protesilaos [Planet Debian]
In the recent weeks I've been engaging Prot as a coach to help review
my new
ffs package for GNU Emacs as I worked on preparing
it for inclusion in GNU ELPA, as well as discussing other Emacs-
and life-related topics.
UPDATE 2026-05-23 22:39:15 -0400: Prot also published an article about our session on his website: https://protesilaos.com/commentary/2026-05-23-life-issues-and-philosophy-amin-bandali/
In our nearly 2-hour conversation, we discussed at length and in depth various aspects of life in the current times. For instance, feeling overwhelmed in the face of innumerable things happening at once, with technology changing our perception and making events feel proximate and imminent.
We talked about seasonality and rhythms in life, including in relation to burnout and knowing our own limitations, and descriptive vs prescriptive thinking when reflecting on the expectations we may place on our self when comparing our self to others through the lens of our necessarily-incomplete impressions and glimpses of their lives. We discussed absence or loss as a dual to presence or persistence in the process of life. How with our memories and through embodying the philosophy and teachings of departed loved ones their essence and legacy continues to live on within us. But also loss in the sense of us losing parts of our self in life-defining moments while preserving other parts and gaining new ones, being liberated of some of the burdens of our past self and in effect becoming someone else in the process.
In being true to our self, we talked about humans as multi-faceted beings and the importance of expressing and giving a voice to these different aspects of our self, and keeping alive that child-like sense of awe and wonder. To live a life where the pace and rhythms of our environment are in sync with our internal rhythms, and to not give others undue power over us or our happiness through trying to live according to their prescribed standards or expectations.
I also learned more about Prot's practical philosophy of situational awareness in life, not merely as a means for survival, but also as a way of appreciating all of the beauty that surrounds us, and a method for gaining the knowledge and skills to apply what we learn from patterns in one area of life to other areas.
We concluded our session with a mention to the concept of sanctity, to set aside a sacred time or place for our self wherein no distractions are allowed, where we can unwind, rest, and recharge for whatever comes next.
Here is the video recording of our session, which I share with Prot's permission:
Sorry, this embedded video will not work, because your web
browser does not support HTML5 video.
[ please watch the video in your favourite streaming media player
]
You can view or download the full-resolution video from the Internet Archive.
Like Prot, I am invigorated and inspired to live a full, honest life. To do my best, do what I do in earnest, and make the best of what I have.
Take care, and so long for now.
Amin Bandali: ffs 0.2.2 released [Planet Debian]
ffs provides a minor mode for simple plain text
presentations in Emacs, where the slides are separated using the
page-delimiter, by default the form feed character
(^L).
I wrote ffs in early 2022 for my LibrePlanet 2022
presentation the Net
beyond the Web, and earlier this year decided to polish it
towards being a proper package and submit it to GNU ELPA. The
manual still needs some more work, but the overall package is in
pretty good shape so I submitted for inclusion in GNU ELPA.
ffsffs and I owe a debt of gratitude to Protesilaos
for rounds of code review and feedback for improving and polishing
the package in preparation for submission to GNU ELPA. You can
watch videos of these sessions posted earlier on my website:
Further, inspiration for parts of ffs's
implementation was gratefully drawn from Protesilaos's Logos package for
Emacs.
Dedicated to the loving memory of Farangis Yousefinia.
Below are the release notes.
First release of ffs on GNU ELPA.
The attempted build of ffs 0.2.1 within GNU ELPA build sandbox
failed with an Error: void-function
(org-texinfo-kbd-macro) due to use of #+macro: kbd
(eval (org-texinfo-kbd-macro $1)) in ffs.org for better
formatting of key sequences in the exported Texinfo copy. This
seems to have happened for the specific case of generating a plain
text README using ox-ascii where ELPA didn't load
ox-texinfo. To try and mitigate this, a
README.md has been added for use as the package README
instead of ffs.org. If not sufficient, a Texinfo copy of the ffs
manual will be shipped instead of the Org one in the next
release.
ffs 0.2.2 also includes small fixes and improvements throughout
ffs.el from Stefan Monnier, and additional feedback to
be addressed in future releases.
The attempted build of ffs 0.2.0 within GNU ELPA build sandbox failed with a "Cannot include file" error on the "#+include: fdl.org" in the manual. So, as a workaround, we switch to using the official Texinfo copy of the GNU FDL license rather than an Org copy.
First release of ffs intended for GNU ELPA.
After a few years of inactivity, in early 2026 I decided to dust
off ffs.el, polish and document it, and offer for
inclusion in GNU ELPA as a proper package.
ffs-default-face-height changed to nilTo minimize unexpected and/or unnecessary changes
out-of-the-box, the default value of
ffs-default-face-height has been changed to nil.
ffs-edit-buffer-name demoted from user option to
variableThis is not an important user-facing setting, so to help avoid overwhelming users with many options, this has been demoted from a user option to a variable.
ffs's behaviourAs part of the effort to bring ffs more in line
with the conventions of other existing Emacs packages, the
mechanisms for toggling various parts of Emacs's interface to
minimize visual clutter were changed from being minor modes to
being customizable user options. These are the replacement new user
options, with a default value of nil:
ffs-hide-cursorffs-hide-mode-lineffs-hide-header-lineTheir value is buffer-local, and may be set globally using
setq-default. See the
sample configuration in the manual for an example of how to
customize them.
The new ffs-page-delimiter user option defines the
page delimiter inserted by ffs-edit-done when
inserting a new slide. Emacs's page-delimiter regexp
should be able to match ffs-page-delimiter's value, so
if you use a custom page-delimiter be sure to
customize ffs-page-delimiter accordingly.
The new ffs-echo-progress user option controls
whether to display in echo area the progress through the slides.
When non-nil, changing slides will also display the progress
through the slides in the echo area. The format of the displayed
progress can be customized using the new
ffs-echo-progress-format user option.
The new ffs-edit-display-buffer-alist user option
may be used to control the Window configuration for the
ffs-edit buffer. By default, it will display the
ffs-edit buffer in the same window.
The new ffs-edit-done-hook user option may be used
to define hooks to be run at the end of ffs-edit-done
after returning to the main ffs presentation
buffer.
Lastly, a new ffs-find-speaker-notes-function
variable was added to allow customizing the find function used for
opening the speaker's notes file, defaulting to
find-file-other-frame.
Initial publication of ffs.el as part of my
personal configurations for GNU Emacs.
My first attempt at this concept was a now-archived
ffsanim.el, a major mode implementation that used
Emacs's animate library to animate slide texts onto
the screen. Shortly after realizing the shortcomings of that
approach, I abandoned it in favour a minor mode implementation and
published version 0.1.0 of what is now
ffs in my personal configs
repository.
I used this implementation for presenting my LibrePlanet 2022 talk, The Net beyond the Web.
I picked "ffs" as the package name, the acronym for form feed slides.
Amin Bandali: FFS code review and Emacs extensibility with Protesilaos [Planet Debian]
In the recent weeks I've been engaging Prot as an Emacs coach to help
with doing review passes over my upcoming ffs package
as I work on polishing and documenting it in preparation for
offering it for inclusion in GNU ELPA.
UPDATE 2026-05-15 08:50:10 -0400: Prot also published an article about our session on his website: https://protesilaos.com/codelog/2026-05-15-emacs-amin-bandali-ffs-display-buffer-org-capture/
Today we had our third session where we started by reviewing and
talking about my recent changes to ffs, then ventured
to other Emacs-related topics with the overarching theme of the
flexibility and extensibility of GNU Emacs, including
display-buffer-alist, keyboard macros, defining a
custom
ox-bhtml Org export backend derived from Org's
ox-html for ultimate flexibility when exporting my
site's pages from Org to HTML, Org capture, plain text files and
Emacs's diary and how it compares to
org-agenda, and keeping a journal with the help of
Emacs.
Here is the video recording of our session, which I share with Prot's permission:
Sorry, this embedded video will not work, because your web
browser does not support HTML5 video.
[ please watch the video in your favourite streaming media player
]
You can view or download the full-resolution video from the Internet Archive.
Lastly, here is the snippet Prot shared for having Isearch treat space as a wildcard, helpful for more easily matching multiple parts of a line:
(setq search-whitespace-regexp ".*?")
(setq isearch-lax-whitespace t)
(setq isearch-regexp-lax-whitespace nil)
Take care, and so long for now.
Amin Bandali: FFS code review with Protesilaos [Planet Debian]
In the recent weeks I've been engaging Prot as an Emacs coach to help
with doing review passes over my upcoming ffs package
as I work on polishing and documenting it in preparation for
offering it for inclusion in GNU ELPA.
Yesterday we had our second session focused on ffs,
which I recorded and share publicly with everyone with Prot's
permission, so that others can also benefit from Prot's insights
and experience as we discuss various aspects of Emacs package
development with the concrete example of ffs.
Here is the video recording of our session:
Sorry, this embedded video will not work, because your web
browser does not support HTML5 video.
[ please watch the video in your favourite streaming media player
]
You can view or download the full-resolution video from the Internet Archive.
I addressed most of Prot's feedback about ffs from
our first session, and I'll be working on the changes we discussed
in this session in the next days.
In the last third of the video we switched topics to discuss a
few Emacs-related tangents including adding a 'padding' effect for
the mode line and its constructs, and distilling and separating the
easily-reusable package-like parts of one's Emacs configuration
from the actual configuration of those parts (e.g. the distinction
of prot-lisp and prot-emacs-modules in
Prot's Emacs
configuration).
For mode line padding, here is the snippet I'm using with Prot's
doric-themes:
(doric-themes-with-colors
(custom-set-faces
`(mode-line
((t :box (:line-width 6 :color ,bg-shadow-intense))))
`(mode-line-inactive
((t :box (:line-width 6 :color ,bg-shadow-subtle))))
`(mode-line-highlight
((t :box (:color ,bg-shadow-intense))))))
Take care, and so long for now.
AI and a world without migrants [Cory Doctorow's craphound.com]

This week on my podcast, I read AI and a world without migrants, a recent essay from my Pluralistic blog, which psychoanalyzes the sociopathic fantasies that are driving the AI investment bubble.
I don’t care who you are, there will always be times when hell is other people. Not because other people are horrible – quite the opposite! Other people are wonderful, but boy are they ever stubborn.
From boardgames to romance, team sports to movement politics, business ideas to construction projects, there’s so much important, enjoyable and essential stuff you can’t do alone. But other people insist on having their own priorities and goals, and they mulishly refuse to organize their lives to suit your priorities.
Our species has put a lot of work into resolving this conundrum. Not only did we evolve a whole brain structure – the neocortex – that helps us understand others’ perspectives, but we also evolved many social structures (like laws and teams and governments and families and committees and bureaucracies) to help us coordinate with others to do superhuman things (that is, things that exceed the capacity of a single human).
These structures are imperfect, but they’re better than the alternative: coercion. Persuading others is not without its pitfalls, but compared to forcing others to bend to your will, “persuasion” is the hands-down favorite.
How bad was it with the Knicks. As something of a joke, but
not really, Knicks fans would disguise themselves with
paper bags with eye cutouts. Fans got accustomed to the
feelings of betrayal and hopelessness. When was the actual
lowest point? A good candidate was when they traded some good
players for Bargnani, an
Italian who apparently for some reason was the top draft choice of
the Toronto Raptors. He wasn't much good to begin with and he went
downhill from there. There were quite a few other moments when you
thought it couldn't get any worse, but then it did. We finally got
management with a heart and a mind with Leon Rose and that's
when team-building began
for real, and the reason the Knicks have been such poetry on the
court this season is due to Rose's eye for talent and an
understanding of the big picture. He picked players that work well
with each other, and sometimes amazingly well. In the right margin
is an image I
used for posts about the Knicks in the past, a reminder of how far
we've come. The look of doom. We all remember that mode so well, we
stood with them then, so here we are with high hopes and reasonable
expectations.
Accessibility input tool removes X11 support, doesn’t want to support Wayland; users caught in the middle [OSnews]
A sad, painful, and infuriating read for this calm Sunday. In recent years, a lot of attention has gone into improving the output side of the accessibility story on Wayland – screen readers and the like – but apparently, the input side has languished. People with reduced mobility need affordances and tools to use computers, but those aren’t ready for Wayland.
A popular set of tools here is Talon Voice, which allows people with reduced mobility to create powerful hands-free input methods. The examples the article gives are incredibly cool, and it’s easy to see how Talon would become a cornerstone for people with reduced mobility who needs hands-free (or hands-fewer?) computer input methods.
So what’s going wrong here?
Talon requires deep integration with the window manager and compositor to carry out even the most basic of its duties, and Wayland offers… Absolutely no way to perform any of those actions.
[…]
Frustrated by the endless lack of progress towards a real set of solutions for the entire ecosystem, and inundated by an endless series of requests for Wayland support which he cannot provide, Aegis, the main (and only) developer of Talon, has made a declaration: Enough. Talon Voice will imminently remove ALL Linux support from the public release, as X11 continues to sunset and users are switched to an environment in which their system can no longer function, with no option to go back.
↫ Insane Rambles About Technology
So not only will Talon not gain Wayland support any time soon, its developers are even removing X11 support from it. What this means is that even if you decide to stick to X11 because Wayland doesn’t fulfill your needs, you’re eventually going to run into a brick wall. This is merely annoying if you need to use a different application for remote desktop or whatever, but it’s absolutely devastating when it involves the very input method you use to use your computer in the first place.
There is some important nuance here though that the article doesn’t mention. The article takes the word of Talon’s developers as gospel, but in my conversations with KDE developers, a different story emerges. What they tell me is that Wayland implements all the APIs needed for Talon to work, but that Talon’s developers are simply not interested in using them. Apparently, KDE developers and others have tried to contact Talon’s developers, but their offers to help are being ignored. They’re being told Talon is simply not interested in supporting Wayland, “end of story”.
So, the story here seems to be a lot more complex than just “Wayland bad”, and I’m getting a bit of a vibe that the Talon developers are, despite claims to the contrary in the article, indeed removing X11 support out of spite. Talon is entirely within their right to not want to work on Wayland support, but then just be honest with your users and say so, instead of pinning everything on “Wayland bad”, being dishonest about Wayland’s capabilities, and ignoring offers of help and support from some of the most knowledgeable and capable developers in the field.
Of course, that’s absolutely of no relevance to people like the author of this article who depend on these tools to use their computers. They’re caught in the middle of a transition and experiencing the worst byproducts, and that’s a huge failure on everybody’s end – Wayland, Talon, and desktop environments alike. I hope the parties involved can sort this out quickly, because everyone deserves equal access to computers, doubly so in the open source world.
Remember when people said open video codecs would never win? [OSnews]
The Alliance for Open Media has published the first version of the AV2 specification.
AV2 is the next-generation video coding specification from the Alliance for Open Media (AOMedia). Building on the foundation of AV1, AV2 is engineered to provide superior compression efficiency, enabling high-quality video delivery at significantly lower bitrates. It is optimized for the evolving demands of streaming, broadcasting, and real-time video conferencing.
This specification serves as the definitive technical reference for AV2 implementations. It outlines the bitstream syntax, semantics, and decoding processes required to ensure full conformance.
AV2 provides enhanced support for AR/VR applications, split-screen delivery of multiple programs, improved handling of screen content, and an ability to operate over a wider visual quality range.
↫ AV2 website
Do you remember when the video codec wars – open vs. closed – were raging all across the web, for years? Even back then I argued that open would win, as it usually does, and over 15 years later the most widely-used video codecs on the planet being open is just a normal fact of life nobody writes or talks about anymore. VP8, VP9, AV1, and now this upcoming AV2 are all open and royalty-free, the by far largest video platform, YouTube, serves them by default, and the video codec problem is a solved problem, relegated to the spinning disk drive of history.
I was told I was an idealist and that this would never happen, and yet, here we are.
Russell Coker: Links May 2026 [Planet Debian]
Ron Garrett wrote an interesting blog post about the mathematical possibility of abiogenesis [1].
The Register has an informative article about the threat that management systems built in to Intel and AMD CPUs pose to data sovereignty in EU owned cloud providers [4]. But this is just the first stage of building sovereign clouds, all significaant cloud services run at least 2 types of CPU and adding EU manufactured CPUs at a future time will be easy.
Michael Prokop wrote an interesting blog post about debugging input event problems on Linux which turned out to be due to an analogue headphone connection [8]. This gave me some useful pointers to investigating an input device problem which is probably very different.
Tianon Gravi wrote an informative blog post about containers, Debian, and Docker options [12]. We need a lot more work on these sorts of things in Debian.
Suboptimal events [Seth's Blog]
Any gathering of more than two people involves compromise.
Embracing this fact actually increases the utility of the event. It’s a trap to commit to making it perfect for everyone–we end up sacrificing what the event could be and creating mediocrity instead.
A surprise party might be designed to make the host feel good, or perhaps to create a memorable moment for the guest of honor. The wedding might exist to cement the status and relationships of the bride. The quarterly management meeting is probably organized to increase the security and power of the boss.
There’s a reason that they don’t serve “wedding food” at restaurants. The food is a compromise, not the sort of thing people seek out.
When planning any event, the first two questions are the most important, and they need to be repeated, again and again:
Who’s it for?
What’s it for?
If we can be clear about that, we can make progress in making it happen.
Joe Marshall: CLRHack: Meta-object Protocol [Planet Lisp]
The Metaobject Protocol in CLRHack is a high-performance implementation of the Common Lisp Object System (CLOS) integrated into the .NET 8.0 Common Language Runtime (CLR). It provides a complete meta-compilation pipeline that bridges the gap between dynamic Lisp semantics and the static CIL (Common Intermediate Language) execution model.
The MOP is implemented through three primary layers:
LispBase representing classes,
methods, generic functions, and slot definitions.MopRuntime):
A centralized orchestrator that manages class finalization, method
combination, dispatch caching, and instance allocation.ast.lisp that translate high-level CLOS forms
(defclass, defmethod) into optimized
runtime calls.Because the CLR type system is strictly single-inheritance and
statically defined, CLRHack decouples Lisp-level inheritance from
C# inheritance. All CLOS instances are represented by the
StandardObjectInstance class, which contains:
ClassMetaobject.object[] storage array for instance
slots, indexed by locations calculated during class
finalization.Generic function invocation is the most complex part of the implementation. When a generic function is called:
DiscriminatingFunction first checks a thread-safe
dispatchCache using an InvocationCacheKey
(a stack-allocated struct) to find a previously
computed effective method.ComputeEffectiveMethod logic builds a nested execution
chain following the Standard Method Combination
rules:
:around methods are called first, with
call-next-method progressing to the next around method
or the main chain.:before methods, the
primary method, and finally all :after methods in
reverse order.Func<object[], object>
that uses direct delegate invocation to minimize overhead.Challenge: call-next-method and
next-method-p require access to the current
invocation's state (the remaining methods and original arguments).
Passing this state through every function call would break
compatibility with standard Lisp function signatures.
Solution: CLRHack utilizes
[ThreadStatic] fields in MopRuntime to
store the currentNextMethods and
currentArguments. This ensures that even in highly
concurrent environments (like a web server), each OS thread has its
own isolated invocation context, allowing
call-next-method to function correctly without state
leakage.
Challenge: Lisp allows classes to refer to superclasses that haven't been defined yet. The runtime must handle these "zombie" classes without crashing the JIT compiler.
Solution: The system implements a
ForwardReferencedClassMetaobject. When a class is
defined, it is automatically finalized (computing its CPL and slot
layout). If a superclass is missing, a forward reference is
created. The EnsureFinalized protocol ensures that
inheritance is resolved and slot locations are assigned the moment
the class is first instantiated or used in dispatch.
Challenge: A naive implementation of
slot-value or generic dispatch using C# reflection or
linear searches is orders of magnitude slower than native C# member
access.
Solution: Three distinct optimizations were applied:
ClassMetaobject maintains a
SlotDictionary. Slot names are mapped to physical
array indices during finalization, allowing slot-value
to perform a direct array access after a single dictionary
lookup.SLOT-VALUE and MAKE-INSTANCE calls and
emits direct CIL call instructions to optimized
Lisp.MopRuntime methods, bypassing the general
Funcall path.InvocationCacheKey a readonly struct and
avoiding the cloning of the argument array during cache probes, the
hot-path for generic function dispatch generates zero garbage for
the .NET Collector.Challenge: Core CLOS functions like
make-instance must be available as symbols in the
COMMON-LISP package before user code runs, but they
rely on the MOP runtime being fully initialized.
Solution: A
MopRuntime.Initialize() method is injected into the
entry point (Main) of every generated assembly. This
method interns the necessary symbols and binds them to
GenericFunctionClosureAdapter objects, ensuring that
the MOP is "alive" before the first line of Lisp code executes.
Vibe coding the MOP basically involved feeding chapters 4 and 5 of the Art of the Meta-Object Protocol into the LLM and telling it to make an implementation plan. It came up with a twenty-step plan to bootstrap CLOS. I then spent the rest of the day instructing an agent to take on each task of the twenty-step plan in sequential order. At the end of the day, I had a working MOP
This is the end of my series of posts on CLRHack.
DECmate II: the little PDP-8 that could [OSnews]
When Cameron Kaiser speaks, we listen.
In 1982, as we mentioned at length with our history of the DEC Professional, Digital Equipment Corporation attempted to keep their PDP-11 minicomputer market-relevant by turning the venerable architecture into a largely incompatible desktop microcomputer. But that wasn’t the only PDP-series mini it happened to, and it wasn’t even the first: the PDP-8 actually got the shrink-ray treatment several years before, and not content to merely make it into a smaller general purpose computer, DEC turned it into a word processor.
↫ Cameron Kaiser at Old Vintage Computing
A word processor that’s still sort of a PDP-8 inside, and that could run CP/M or even DOS using a Z80 or 8086 expansion card.
Settlers of Catan, TUI edition [OSnews]
A beautiful TUI might not be particularly accessible, and there’s effectively zero consistency between how different TUI applications look, feel, and behave, but damn if an amazing TUI isn’t a work of art. Case in point: El Poblador. This is a TUI version of Settles of Catan, written in Go.
That’s it. That’s the post.
If you aren't a moral busybody or a turbo wastrel there's no world for you left. I sometimes try to determine which performance I like least, but the answer is something I apparently have to build from first principles every time. They're utter duplications of the other, arguably manufactured by each other; sometimes they can even switch sides successfully. It's a personality type, as near as I can tell, trailed by a velvet cape of adherents. On the one side, you've got young people becoming old people, desperate to outrun their Something Awful posting history by pledging allegiance to… themselves, I guess. And on the other side, you've got people who get irrationally angry when they see an A cup. You know? It's the, uh… it's the fight of the century.
Pluralistic: Carneyism without Carney (30 May 2026) [Pluralistic: Daily links from Cory Doctorow]
->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
Top Sources: None -->

The "Third Way" in liberal politics involves saying things that working people love, but doing things that sociopathic plutocrats love. It works …right up until voters notice that you're not doing the things. That realisation breeds cynicism and fury and paves the way for fascist strongmen.
It's really ugly, and no one does it uglier than Canada's Liberal Party. Remember that time Prime Minister Justin Trudeau marched with Greta Thunberg to protest Canada's shitty, planet-wrecking climate policies?
https://globalnews.ca/news/5959371/election-campaign-climate-march/
Gee, Justin – it sure would be great if you could have a word with the fella who decided to bail out America's doomed tar sands pipeline and vowed to pump and torch 173,000,000,000 barrels of Canadian oil:
https://finance.yahoo.com/news/no-country-173-billion-barrels-203807530.html
Trudeau's "Third Way" eventually proved so unpopular that he opened the door to an authoritarian takeover of Canada by an otherwise totally unelectable, Trump-aligned far-right maniac. The only thing that saved Canada from a fate dumber than Trump was Trump himself, who wouldn't stop promising to make Canada the 51st state, an idea that was even more repellent to Canadians than five more years of Third Way bullshit:
https://ca.news.yahoo.com/pierre-poilievre-joe-rogan-podcast-143318576.html
And boy did Canadians find a Third Way bullshitter to move into 24 Sussex Drive: Mark Carney, an austerity-crazed central banker who will endorse incredibly progressive policies…provided he never has to do any of them. When it comes to championing working Canadians while royally screwing them, Carney is the only Canadian politician capable of out-Trudeauing Trudeau.
But we shouldn't reject Carneyism due to the mere fact that Carney refuses to deliver Carneyism. The problem with Carneyism isn't Carneyism itself – the problem with Carneyism is Mark Carney.
Take Carney's policy promise to charge US tech giants a 3% tax, a move that would defeat their incredibly clever gambit of pretending to be Irish and thus not owing any tax, anywhere:
https://pluralistic.net/2026/01/17/erin-lets-go/#circumvention-haven
That was a good policy! So was Carney's "elbows up" policy of sticking it to America in retaliation for Trump's flagrant violation of CUSMA, the free trade agreement negotiated by (checks notes) one Donald J Trump:
https://www.theguardian.com/us-news/2025/may/06/trump-carney-meeting-canada-tariffs-trade
Unfortunately, Mark Carney didn't get the memo from (checks notes) Mark Carney, and the very instant Trump arranged his face into his trademarked confused scowl, Carney dropped the tax, apologising profusely:
In the last days of the Trudeau government, the Liberals passed a bill that transformed Canada's Competition Bureau from the weakest antitrust regulator in the world into one of the strongest (on paper, at least):
It's impossible to overstate how useless the Competition Bureau was before this bill passed. In its entire history, the Bureau had only challenged three mergers, and had never successfully challenged a merger. Canada's do-nothing competition enforcers allowed the country to be captured by Made-in-Canada oligarchs whose ripoffs and abuses would make the Hudson's Bay Company blush:
https://pluralistic.net/2024/12/05/ted-rogers-is-a-dope/#galen-weston-is-even-worse
If Canada was ever going to be a real country (and not just two monopolists and a mining company in a trenchcoat) it needed a serious competition enforcer. Nominally, it has one, thanks to the 2024 Competition Act. The only problem was Carney, who made sweeping real-terms cuts to the Bureau's funding. Thanks to Carney, Canada has a Competition Bureau with all the powers it needs to save Canada from its oligarchs – but it can't afford to do any of that stuff.
Monopolists rip Canadians off like crazy. We even have a guy who mistook Les Miz for an HBR case-study, and embarked upon the country's worst-ever price-fixing campaign, gouging the country on bread prices:
https://www.donotpassgo.ca/p/the-bread-price-fixing-scandal-is
You don't have to be a monopolist to steal from Canadians. Ripping off Canadians is the game everyone can play! Consumer protection agencies are incredible value for money, saving the public hundreds for every dollar that we spend on them. Guess who just eliminated Canada's consumer protection agency?
https://www.donotpassgo.ca/p/carney-government-slashes-consumer
Oh, to be a scammer in Mark Carney's Canada! Whatever Galen Weston doesn't steal is yours for the taking!
But again, the problem isn't Carneyism – the problem is Carney. Carneyism is great. Carneyism gave us that remarkable speech at Davos, where Mark Carney declared a "rupture" in the US-dominated global system of trade and politics, promising a future of "minilateralism" in which "middle powers" like Canada band together for mutual prosperity:
If only Mark Carney had been there to hear those stirring words! He might have understood what a fucking insane idea it is to turn over Canada's military to Palantir, the company that, more than any other, has fused itself with the Trump regime's domestic program of ethnic cleansing and its international program of extraterritorial aggression:
Carneyism isn't merely a rejection of the old international order. Domestically, Carneyism promises technocratic excellence, skilled leadership that delivers first-class services for the Canadian people. This is a great pitch! It got Mamdani elected, and Mamdani's sincere pursuit of governmental excellence thrills New Yorkers in new ways every day:
https://pluralistic.net/2026/02/24/mamdani-thought/#public-excellence
Here, too, Carneyism is entirely sound – the problem is Carney's vicious anti-Carneyism and his plan to fire tens of thousands of civil servants and replace them with AI chatbots. It's not just that chatbots are terrible substitutes for skilled public officials, they're also controlled by US corporations that are entirely beholden to the Trump regime:
https://www.cbc.ca/news/politics/carney-artificial-intelligence-strategy-9.7213733
Unlike Mark Carney, I support Carneyism. Carneyism promises protection for Canadians, from monopolists and mad emperors, petty thieves and potholes. But Carney himself ardently opposes these policies. This will only get worse when the AI bubble pops and vaporises a third of the US stock market, spreading contagion to global capital markets. That will be Carney's cue to roll out his favourite go-to tactic: austerity.
We cannot afford this. Austerity is how we lose the country. Austerity – more than any other force – drives working people into the arms of fascists:
https://pluralistic.net/2026/04/12/always-great/#our-nhs
The thing is, Mark Carney has shown his political opponents how to beat him: just embrace Carneyism. The things Carney says are incredibly popular. Now we just need to elect someone who'll do them.

Cory Doctorow on Why the Internet Feels So Broken https://thewalrus.ca/cory-doctorow-on-why-the-internet-feels-so-broken/
AI sticker shock hits corporate America https://www.axios.com/2026/05/28/ai-spending-roi-enterprise-costs
A Fran Lebowitz Sampler https://jonwinokur.substack.com/p/a-fran-lebowitz-sampler
Sam Altman and Dario Amodei are both walking back their AI jobs apocalypse prophecies as they eye blockbuster IPOs https://fortune.com/2026/05/26/sam-altman-dario-amodei-walking-back-ai-jobs-apocalypse-prophecies-ipo/
#20yrsago World of Warcraft Easter eggs https://web.archive.org/web/20060614223838/http://www.wow-europe.com/en/contests/noblegarden/winners.html
#15yrsago Bernie Sanders introduces anti-pharma-patent bill, aims to replace drug monopolies with prizes https://web.archive.org/web/20110528053922/http://keionline.org/node/1147
#15yrsago Life at a brainwashing “school for troubled teens” https://www.reddit.com/r/troubledteens/comments/hk0xy/a_gay_teen_describes_her_experience_at_a_utah/
#15yrsago Facebook updates from people who don’t know The Onion is a humor site https://literallyunbelievable.tumblr.com/
#10yrsago Untangling the Web: the NSA’s supremely weird, florid guide to the Internet https://www.techdirt.com/2016/05/27/nsas-guide-to-internet-is-weirdest-thing-youll-read-today/
#10yrsago Company Town: Madeline Ashby’s tale of sex and Singularity cults is a locked-door mystery at sea https://memex.craphound.com/2016/05/28/company-town-madeline-ashbys-tale-of-sex-and-singularity-cults-is-a-locked-door-mystery-at-sea/
#10yrago US trade rep threatens Colombia’s peace process over legal plan to offer cheap leukemia meds https://web.archive.org/web/20160725174757/https://www.statnews.com/pharmalot/2016/05/26/bernie-sanders-novartis-patent/
#10yrsago Security researcher discovers glaring problem with patient data system, FBI stages armed dawn raid https://dailydot.com/politics/justin-shafer-fbi-raid
#10yrsago Wealthy families are most responsible for American wealth segregation https://web.archive.org/web/20160530195842/https://www.washingtonpost.com/news/wonk/wp/2016/05/10/the-incredible-impact-of-rich-parents-fighting-to-live-by-the-very-best-schools/
#10yrsago Someone just snuck warrantless email access into the Senate’s secret intelligence bill https://web.archive.org/web/20160526201753/https://theintercept.com/2016/05/26/secret-text-in-senate-bill-would-give-fbi-warrantless-access-to-email-records/
#10yrsago Wells Fargo, who preyed on black borrowers, sponsors Black Lives Matter luncheon https://web.archive.org/web/20160527184755/https://theintercept.com/2016/05/27/wells-fargo-sponsorship-of-black-lives-matter-panel-draws-scorn/
#10yrsago Anonymous Analytics: self-proclaimed Anon “faction” that tanks companies through stock reports https://web.archive.org/web/20160527155031/https://news.softpedia.com/news/anonymous-hackers-turned-stock-analysts-are-targeting-us-chinese-corporations-504495.shtml
#10yrsago Scott Walker, saddled with $1.2m debt from failed presidential bid, pawns his own donors https://ghanasoccernet.com/uk/2016/05/24/scott-walker-rents-out-donor-list-to-pay-campaign-debt/
#10yrsago Study shows detailed, compromising inferences can be readily made with metadata https://www.pnas.org/doi/full/10.1073/pnas.1508081113
#10yrsago EFF fights order to remove public records documents detailing Seattle’s smart-meters https://www.muckrock.com/news/archives/2016/may/26/court-grants-temporary-restraining-order-forcing-r/
#5yrsago Probably https://pluralistic.net/2021/05/27/probably/
#1yrago AI turns Amazon coders into Amazon warehouse workers https://pluralistic.net/2025/05/27/rancid-vibe-coding/#class-war
#1yrago America is a scam https://pluralistic.net/2025/05/28/cheaters-ever-prosper/#caveat-america

Kansas City: Facing the Future (Woodneath Library Center), Jun
10
https://www.mymcpl.org/events/119655/facing-future-cory-doctorow
LA: The Reverse Centaur's Guide to Life After AI with Brian
Merchant (Skylight Books), Jun 19
https://www.skylightbooks.com/event/skylight-cory-doctorow-presents-reverse-centaurs-guide-life-after-ai-w-brian-merchant
Menlo Park: The Reverse Centaur's Guide to Life After AI with
Angie Coiro (Kepler's), Jun 21
https://www.keplers.org/upcoming-events-internal/cory-doctorow-2026
Toronto: TBA, Jun 23
NYC: The Reverse Centaur's Guide to Life After AI with Jonathan
Coulton (The Strand), Jun 24
https://www.strandbooks.com/cory-doctorow-the-reverse-centaur-s-guide-to-life-after-ai.html
Philadelphia: The Reverse Centaur's Guide to Life After AI with
David Williams (Fitler Club/Philadelphia Citizen), Jun 25
https://www.eventbrite.com/e/cory-doctorow-book-event-tickets-1990110326559
Chicago: The Reverse Centaur's Guide to Life After AI with Rick
Perlstein (Exile in Bookville), Jun 26
https://exileinbookville.com/events/50628
Edinburgh International Book Festival with Jimmy Wales, Aug
17
https://www.edbookfest.co.uk/events/the-front-list-cory-doctorow-and-jimmy-wales
South Bend: An Evening With Cory Doctorow (Notre Dame), Oct
6
https://franco.nd.edu/events/2026/10/06/an-evening-with-cory-doctorow/
EFFecting Change: How to Disenshittify the Internet (EFF, with
Wendy Liu)
https://archive.org/details/effecting-change-enshittification
The “Enshittification” of Everything (Bioneers)
https://bioneers.org/cory-doctorow-enshittification-of-everything-zstf2605/
Enshittification (99% Invisible)
https://99percentinvisible.org/episode/666-enshittification/
Artificial Intelligence: The Ultimate Disruptor, with Astra
Taylor and Yoshua Bengio (CBC Ideas)
https://www.cbc.ca/listen/live-radio/1-23-ideas/clip/16210039-artificial-intelligence-the-ultimate-disruptor
"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
"Enshittification, Why Everything Suddenly Got Worse and What to Do About It" (the graphic novel), Firstsecond, 2026
"The Post-American Internet," a geopolitical sequel of sorts to Enshittification, Farrar, Straus and Giroux, 2027
"Unauthorized Bread": a middle-grades graphic novel adapted from my novella about refugees, toasters and DRM, FirstSecond, April 20, 2027
"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. Third draft completed. Submitted to editor.
"The Post-American Internet," a short book about internet policy in the age of Trumpism. PLANNING.
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
Doing your job vs doing your work [Seth's Blog]
If you’re not sure of the difference, you’re probably just doing your job.
Perhaps, if you’re fortunate, your job is in sync with your work.
But most of the time, our work is something we have to fight for. It’s not something we’re given, or apply for. It’s what we choose to do.
The change we seek to make, the people we seek to serve, the decisions we insist on being responsible for.
Doing our work is a calling.
Doing our job is an offer to follow someone else’s instructions.
Joe Marshall: CLRHack: signal and error [Planet Lisp]
In CLRHack, the condition signaling system is implemented in the
Lisp.HandlerControl class within the
LispBase library. It leverages .NET's
[ThreadStatic] storage to maintain a per-thread
dynamic stack of active condition handlers.
The Signal(object condition) method performs the
following logic:
activeHandlers list for the current thread. This list
is a chain of [LispBase]Lisp.Handler objects
maintained by handler-bind.IsType(condition, handler.ConditionType).
T or EXCEPTION
as catch-all types.activeHandlers is set to
cell.rest (the handlers bound outside the
current one). This ensures that if the handler itself calls
signal, it won't trigger itself recursively.Closure
is invoked with the condition object as its argument.finally block
ensures the original activeHandlers list is restored
if the handler returns normally.The Error(object condition) method build upon
Signal:
Signal(condition). If a handler performs a non-local
exit (e.g., via handler-case), the Error
method never returns.Signal returns
normally (meaning all handlers declined), Error calls
EnterDebugger(condition).RestartControl.GetActiveRestarts()).Error throws a C#
Exception to ensure that execution does not continue
on an invalid path.IsType
allows Lisp handlers to catch C# exceptions by their class name or
Type object.[ThreadStatic] for activeHandlers,
CLRHack ensures that condition signaling is thread-safe. One thread
signaling an error will not interfere with the handler state of
another thread.SYSTEM-DEBUGGER option in EnterDebugger
is a bridge to the underlying .NET environment, allowing developers
to use professional IDE tools to inspect the state of the Lisp VM
when an unhandled error occurs.signal and error complete the Common Lisp condition system implementation for CLRHack
Talk in Bern, Switzerland on June 12 [Richard Stallman's Political Notes]
Richard will give a talk in Bern, Switzerland on June 12 titled Freie/Libre/Libero/Liber Software, for Sovereignty and Freedom.
Urgent: Refuse plan to label Americans as "domestic terrorists" [Richard Stallman's Political Notes]
US citizens: call on Congress to refuse to fund implementation of the bully's plan that could label millions of Americans as "domestic terrorists".
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: Reject attacks on housing assistance programs [Richard Stallman's Political Notes]
US citizens: call on Congress to reject the wrecker's attacks on housing and homeless assistance programs.
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: Cover wrecker's foreign aid cuts [Richard Stallman's Political Notes]
US citizens: call on on major news organizations to cover the wrecker's foreign aid cuts with urgency and moral clarity.
Urgent: Support cops who fought coup-leader's Jan 6 riot [Richard Stallman's Political Notes]
US citizens: support the cops who fought the coup-leader's Jan 6 riot at the Capitol, as they sue him to block his self-settlement meant to give him lots of money to give the rioters as "compensation" for the punishment of their crimes.
Urgent: Coverage of persecutor's attacks on media [Richard Stallman's Political Notes]
US citizens: call on news organizations to cover the persecutor's attacks on the media as threats to press freedom.
Urgent: block Paramount - Warner Bros merger [Richard Stallman's Political Notes]
US citizens: call on Congress to block the Paramount - Warner Bros merger.
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.
Sharing the result of a single Windows Runtime IAsyncOperation among multiple coroutines, part 3 [The Old New Thing]
Last time, we wrote a coroutine function that cached the result of another coroutine, but it only cached successful calls. It didn’t cache failures, so if the inner coroutine fails, the outer one will simply try again the next time it is called. But what if we want to call the inner coroutine only once and cache the failure, too?
We now have three states: Never tried, tried with success (and
cache the success result), and tried with failure (and cache the
failure). We can represent that as a variant with three types,
using std::monostate to represent the “never
tried” state.¹
struct Widget : WidgetT<Widget>
{
std::variant<std::monostate, winrt::Thing, std::exception_ptr> m_thing;
wil::unique_event m_busy{ wil::EventOptions::Signaled }; // auto-reset, initially signaled
IAsyncOperation<winrt::Thing> GetThingAsync()
{
auto lifetime = get_strong();
co_await winrt::resume_on_signal(m_busy.get());
auto not_busy = m_busy.SetEvent_scope_exit();
// If haven't tried, then this is our chance.
if (m_thing.holds_alternative<std::monostate>()) {
try {
m_thing = co_await GetThingWorkerAsync();
} catch (...) {
m_thing = std::current_exception();
}
}
// Return the cached result or cached failure.
if (auto thing = std::get_if<winrt::Thing>(&m_thing)) {
co_return *thing;
} else {
std::rethrow_exception(std::get<std::exception_ptr>());
}
}
};
After getting past our serialization, we check whether the
m_thing holds a std::monostate, meaning
that we haven’t tried getting the thing yet. If so, then this
is the first time through the function, so we will call
GetThingWorkerAsync and save the
answer in the m_thing. If the call fails, then we save
the exception in the m_thing.
Regardeless of whether this is the first or subsequent call, we
know that by the time we get past the first if, the
m_thing is definitely not a
std::monostate. If it has a winrt::Thing,
then we return that cached thing. Otherwise, it must be a
std::exception_ptr, so we rethrow that exception.
If we know that
GetThingWorkerAsync never succeeds
with nullptr, we can simplify the code by having
separate variables (one for the non-null successful result and one
for the exception pointer on failure), knowing that at most one of
them will be non-null. And if both are null, then it means we
haven’t attempted the call yet.
struct Widget : WidgetT<Widget>
{
winrt::Thing m_thing{ nullptr };
std::exception_ptr m_ex;
wil::unique_event m_busy{ wil::EventOptions::Signaled }; // auto-reset, initially signaled
IAsyncOperation<winrt::Thing> GetThingAsync()
{
auto lifetime = get_strong();
co_await winrt::resume_on_signal(m_busy.get());
auto not_busy = m_busy.SetEvent_scope_exit();
// If haven't tried, then this is our chance.
if (!m_thing && !m_ex) {
try {
m_thing = co_await GetThingWorkerAsync();
assert(m_thing);
} catch (...) {
m_ex = std::current_exception();
}
}
// Return the cached result or cached failure.
if (m_thing) {
co_return m_thing;
} else {
std::rethrow_exception(m_ex);
}
}
};
¹ Bonus reading about std::monostate:
What’s the point of std::monostate? You
can’t do anything with it.
The post Sharing the result of a single Windows Runtime IAsyncOperation among multiple coroutines, part 3 appeared first on The Old New Thing.
Dirk Eddelbuettel: RcppArmadillo 15.2.7-1 on CRAN: Micro Upstream Update [Planet Debian]


Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1272 other packages on CRAN, downloaded 46.6 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 693 times according to Google Scholar.
This versions updates to the 15.2.7 upstream Armadillo release made today. The package has already been updated for Debian, and built for r2u. As the upstream was modest, we for once skipped reverse-dependency checks. That bet paid off as CRAN found no issues among the over 1270 reverse dependencies. However, one package referenced a package archived today, hence ‘invisible’ to CRAN and triggered a (false positive) NOTE of ‘reference to non-existing package’. We came close. Anyway, the package made it CRAN shortly thereafter following the standard brief email exchange explaining the false-positive nature of the NOTE.
All changes since the last CRAN release follow.
Changes in RcppArmadillo version 15.2.7-1 (2026-05-29)
Upgraded to Armadillo release 15.2.7 (Medium Roast Deluxe)
- More efficient checks for aliasing
Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forge page.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub. You can also sponsor my Tour de Shore 2026 ride in support of the Maywood Fine Arts Center.
Friday Squid Blogging: Another Squid [Schneier on Security]
Someone named “Squid” seems to be a “West Country legend.”
As usual, you can also use this squid post to talk about the security stories in the news that I haven’t covered.
One Step Forward, Two Steps Back: CA's AB 1856 Exempts Open Source But Expands Age-Gating [Deeplinks]
After public outrage, California lawmakers are moving closer to exempting open-source operating systems from the sweeping age-bracketing regime mandated by last year’s Digital Age Assurance Act (AB 1043). Nonetheless, the current bill still jeopardizes internet users’ speech, privacy, and security.
While the open source exemption, if passed, would improve the law, the remaining amendments proposed by AB 1856 would require all web browsers and websites to request and collect users’ ages. This is an expansion of last year's AB 1043's age-bracketing system that compounds its constitutional harms to users’ speech, privacy, and security. As AB 1856 moves on to the Senate, EFF will continue fighting for amendments that reduce those harms.
Last year, California passed AB 1043, which requires all operating systems and app stores to create age-bracketing systems that segment users based on their ages. As we’ve written, that regime is a recipe for censorship: it creates unnecessary and unconstitutional barriers to accessing lawful online speech, threatens our right to anonymity, and pressures online services to collect troves of valuable and sensitive user data. On top of that, A.B. 1043’s wide-sweeping compliance burdens impose disproportionate harms on the open-source ecosystem that underpins much of the modern web.
Given these flaws, lawmakers introduced AB 1856 this year as a supposed “clean-up” bill for AB 1043. But instead of sticking to fixing AB 1043’s unique and serious harms (like its impact on open-source operating systems), AB 1856 also expanded the regime even further—extending its age-bracketing requirements beyond operating systems and app stores to browsers and websites.
EFF opposed AB 1856 on two grounds, which we explained in our opposition letter to the Assembly:
On May 28th, AB 1856 passed the Assembly in a nearly unanimous vote (68-1).
Before that vote, however, AB 1856 was amended to relieve the compliance burden on open-source operating systems. This is a meaningful improvement and a welcome relief for open-source developers, who have been loud and clear about how much of an existential threat A.B. 1043’s age-gating mandate would pose.
The new exception reads:
“Operating system provider” does not mean a person or entity that distributes an operating system or application under license terms that permit a recipient to copy, redistribute, and modify the software.”
EFF understands this amendment to exempt open-source operating systems from the requirement to collect and transmit users’ age-bracket data. That is a definite win for open-source developers. The bill is narrower now than it was before, and lawmakers clearly responded to concerns raised by EFF and the broader open-source community.
Some important questions still remain—for example, it is unclear how the law would apply when an open-source operating system is incorporated into a commercial product or service. And, given the structure of where the exemption is placed under the “operating system provider” definition, lawmakers could stand to clarify that the exemption applies to open-source operating systems and applications.
Nonetheless, that ambiguity aside, this amendment does substantially reduce the threat that AB 1043 could have on many open-source developers.
Don’t get us wrong—if this bill passes, we
will be very happy that AB 1043 does not pose nearly the amount of
harm to our friends behind open-source operating systems. But even
after these amendments, EFF remains opposed to AB 1856 because it
ultimately expands California’s sweeping age-bracketing
framework far beyond the original scope of AB
1043.
In AB 1856 and its amendments, the Assembly failed to address the core problem with AB 1043’s age-bracketing regime: mandated age-gating systems threaten users’ speech, privacy, anonymity, and security.
Even after these amendments, EFF remains opposed to AB 1856 because it ultimately expands California’s sweeping age-bracketing framework far beyond the original scope of AB 1043.
Even though AB 1043 does not explicitly require companies to perform age verification, it nonetheless imposes a liability structure that strongly pressures companies to verify users’ ages anyway. In practice, that could lead to more ID checks, more biometric scanning, more invasive data collection and risk of breach, and more barriers to adults’ and young people’s lawful speech.
In fact, instead of narrowing AB 1043’s wide net, AB 1856 expanded it to add browser providers and website operators to the list of entities that must comply with its age-bracketing requirements. This dramatically broadens the scope of AB 1043 and pulls more services, developers, and users into an anonymity- and privacy-destroying data collection framework that has not yet been implemented or evaluated. The result would make it nearly impossible for regular internet users to avoid AB 1043’s age gates.
On those grounds, EFF will continue to oppose AB 1856. Though it has passed the Assembly, the fight is not over. As the bill moves through the Senate, we’ll continue to push for amendments that actually “clean up” and narrow the scope of AB 1043, and offer more protection to users from the harms of age-gating systems.
View From a Hotel Window, 5/29/26: Pittsburgh [Whatever]

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